mencoro 1.0.1 → 2.0.1

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,580 @@
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 ClusterBreakdownRow < ApiModelBase
18
+ attr_accessor :cluster_id
19
+
20
+ attr_accessor :cluster_name
21
+
22
+ attr_accessor :query_count
23
+
24
+ attr_accessor :keyword_count
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 :mention_position_stability
43
+
44
+ attr_accessor :trend_stability
45
+
46
+ attr_accessor :serp_position_stability
47
+
48
+ attr_accessor :trend_serp_stability
49
+
50
+ attr_accessor :shopping_position_stability
51
+
52
+ attr_accessor :trend_shopping_stability
53
+
54
+ attr_accessor :positivity_index
55
+
56
+ attr_accessor :trend_positivity
57
+
58
+ attr_accessor :mention_rate
59
+
60
+ attr_accessor :trend_mention_rate
61
+
62
+ attr_accessor :serp_rate
63
+
64
+ attr_accessor :trend_serp_rate
65
+
66
+ attr_accessor :shopping_rate
67
+
68
+ attr_accessor :trend_shopping_rate
69
+
70
+ attr_accessor :share_of_voice
71
+
72
+ attr_accessor :trend_share_of_voice
73
+
74
+ attr_accessor :sentiment_positive
75
+
76
+ attr_accessor :sentiment_neutral
77
+
78
+ attr_accessor :sentiment_negative
79
+
80
+ attr_accessor :avg_mention_count
81
+
82
+ attr_accessor :mention_type_counts
83
+
84
+ # Attribute mapping from ruby-style variable name to JSON key.
85
+ def self.attribute_map
86
+ {
87
+ :'cluster_id' => :'clusterId',
88
+ :'cluster_name' => :'clusterName',
89
+ :'query_count' => :'queryCount',
90
+ :'keyword_count' => :'keywordCount',
91
+ :'avg_serp_position' => :'avgSerpPosition',
92
+ :'trend_serp' => :'trendSerp',
93
+ :'avg_shopping_position' => :'avgShoppingPosition',
94
+ :'trend_shopping' => :'trendShopping',
95
+ :'avg_mention_position' => :'avgMentionPosition',
96
+ :'trend_mention' => :'trendMention',
97
+ :'avg_link_position' => :'avgLinkPosition',
98
+ :'trend_link' => :'trendLink',
99
+ :'mention_position_stability' => :'mentionPositionStability',
100
+ :'trend_stability' => :'trendStability',
101
+ :'serp_position_stability' => :'serpPositionStability',
102
+ :'trend_serp_stability' => :'trendSerpStability',
103
+ :'shopping_position_stability' => :'shoppingPositionStability',
104
+ :'trend_shopping_stability' => :'trendShoppingStability',
105
+ :'positivity_index' => :'positivityIndex',
106
+ :'trend_positivity' => :'trendPositivity',
107
+ :'mention_rate' => :'mentionRate',
108
+ :'trend_mention_rate' => :'trendMentionRate',
109
+ :'serp_rate' => :'serpRate',
110
+ :'trend_serp_rate' => :'trendSerpRate',
111
+ :'shopping_rate' => :'shoppingRate',
112
+ :'trend_shopping_rate' => :'trendShoppingRate',
113
+ :'share_of_voice' => :'shareOfVoice',
114
+ :'trend_share_of_voice' => :'trendShareOfVoice',
115
+ :'sentiment_positive' => :'sentimentPositive',
116
+ :'sentiment_neutral' => :'sentimentNeutral',
117
+ :'sentiment_negative' => :'sentimentNegative',
118
+ :'avg_mention_count' => :'avgMentionCount',
119
+ :'mention_type_counts' => :'mentionTypeCounts'
120
+ }
121
+ end
122
+
123
+ # Returns attribute mapping this model knows about
124
+ def self.acceptable_attribute_map
125
+ attribute_map
126
+ end
127
+
128
+ # Returns all the JSON keys this model knows about
129
+ def self.acceptable_attributes
130
+ acceptable_attribute_map.values
131
+ end
132
+
133
+ # Attribute type mapping.
134
+ def self.openapi_types
135
+ {
136
+ :'cluster_id' => :'String',
137
+ :'cluster_name' => :'String',
138
+ :'query_count' => :'Integer',
139
+ :'keyword_count' => :'Integer',
140
+ :'avg_serp_position' => :'Float',
141
+ :'trend_serp' => :'Float',
142
+ :'avg_shopping_position' => :'Float',
143
+ :'trend_shopping' => :'Float',
144
+ :'avg_mention_position' => :'Float',
145
+ :'trend_mention' => :'Float',
146
+ :'avg_link_position' => :'Float',
147
+ :'trend_link' => :'Float',
148
+ :'mention_position_stability' => :'Float',
149
+ :'trend_stability' => :'Float',
150
+ :'serp_position_stability' => :'Float',
151
+ :'trend_serp_stability' => :'Float',
152
+ :'shopping_position_stability' => :'Float',
153
+ :'trend_shopping_stability' => :'Float',
154
+ :'positivity_index' => :'Integer',
155
+ :'trend_positivity' => :'Integer',
156
+ :'mention_rate' => :'Integer',
157
+ :'trend_mention_rate' => :'Integer',
158
+ :'serp_rate' => :'Integer',
159
+ :'trend_serp_rate' => :'Integer',
160
+ :'shopping_rate' => :'Integer',
161
+ :'trend_shopping_rate' => :'Integer',
162
+ :'share_of_voice' => :'Float',
163
+ :'trend_share_of_voice' => :'Float',
164
+ :'sentiment_positive' => :'Integer',
165
+ :'sentiment_neutral' => :'Integer',
166
+ :'sentiment_negative' => :'Integer',
167
+ :'avg_mention_count' => :'Float',
168
+ :'mention_type_counts' => :'MentionTypeCounts'
169
+ }
170
+ end
171
+
172
+ # List of attributes with nullable: true
173
+ def self.openapi_nullable
174
+ Set.new([
175
+ :'cluster_id',
176
+ :'avg_serp_position',
177
+ :'trend_serp',
178
+ :'avg_shopping_position',
179
+ :'trend_shopping',
180
+ :'avg_mention_position',
181
+ :'trend_mention',
182
+ :'avg_link_position',
183
+ :'trend_link',
184
+ :'mention_position_stability',
185
+ :'trend_stability',
186
+ :'serp_position_stability',
187
+ :'trend_serp_stability',
188
+ :'shopping_position_stability',
189
+ :'trend_shopping_stability',
190
+ :'positivity_index',
191
+ :'trend_positivity',
192
+ :'mention_rate',
193
+ :'trend_mention_rate',
194
+ :'serp_rate',
195
+ :'trend_serp_rate',
196
+ :'shopping_rate',
197
+ :'trend_shopping_rate',
198
+ :'share_of_voice',
199
+ :'trend_share_of_voice',
200
+ :'avg_mention_count',
201
+ ])
202
+ end
203
+
204
+ # Initializes the object
205
+ # @param [Hash] attributes Model attributes in the form of hash
206
+ def initialize(attributes = {})
207
+ if (!attributes.is_a?(Hash))
208
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Mencoro::ClusterBreakdownRow` initialize method"
209
+ end
210
+
211
+ # check to see if the attribute exists and convert string to symbol for hash key
212
+ acceptable_attribute_map = self.class.acceptable_attribute_map
213
+ attributes = attributes.each_with_object({}) { |(k, v), h|
214
+ if (!acceptable_attribute_map.key?(k.to_sym))
215
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Mencoro::ClusterBreakdownRow`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
216
+ end
217
+ h[k.to_sym] = v
218
+ }
219
+
220
+ if attributes.key?(:'cluster_id')
221
+ self.cluster_id = attributes[:'cluster_id']
222
+ end
223
+
224
+ if attributes.key?(:'cluster_name')
225
+ self.cluster_name = attributes[:'cluster_name']
226
+ else
227
+ self.cluster_name = nil
228
+ end
229
+
230
+ if attributes.key?(:'query_count')
231
+ self.query_count = attributes[:'query_count']
232
+ else
233
+ self.query_count = nil
234
+ end
235
+
236
+ if attributes.key?(:'keyword_count')
237
+ self.keyword_count = attributes[:'keyword_count']
238
+ else
239
+ self.keyword_count = nil
240
+ end
241
+
242
+ if attributes.key?(:'avg_serp_position')
243
+ self.avg_serp_position = attributes[:'avg_serp_position']
244
+ end
245
+
246
+ if attributes.key?(:'trend_serp')
247
+ self.trend_serp = attributes[:'trend_serp']
248
+ end
249
+
250
+ if attributes.key?(:'avg_shopping_position')
251
+ self.avg_shopping_position = attributes[:'avg_shopping_position']
252
+ end
253
+
254
+ if attributes.key?(:'trend_shopping')
255
+ self.trend_shopping = attributes[:'trend_shopping']
256
+ end
257
+
258
+ if attributes.key?(:'avg_mention_position')
259
+ self.avg_mention_position = attributes[:'avg_mention_position']
260
+ end
261
+
262
+ if attributes.key?(:'trend_mention')
263
+ self.trend_mention = attributes[:'trend_mention']
264
+ end
265
+
266
+ if attributes.key?(:'avg_link_position')
267
+ self.avg_link_position = attributes[:'avg_link_position']
268
+ end
269
+
270
+ if attributes.key?(:'trend_link')
271
+ self.trend_link = attributes[:'trend_link']
272
+ end
273
+
274
+ if attributes.key?(:'mention_position_stability')
275
+ self.mention_position_stability = attributes[:'mention_position_stability']
276
+ end
277
+
278
+ if attributes.key?(:'trend_stability')
279
+ self.trend_stability = attributes[:'trend_stability']
280
+ end
281
+
282
+ if attributes.key?(:'serp_position_stability')
283
+ self.serp_position_stability = attributes[:'serp_position_stability']
284
+ end
285
+
286
+ if attributes.key?(:'trend_serp_stability')
287
+ self.trend_serp_stability = attributes[:'trend_serp_stability']
288
+ end
289
+
290
+ if attributes.key?(:'shopping_position_stability')
291
+ self.shopping_position_stability = attributes[:'shopping_position_stability']
292
+ end
293
+
294
+ if attributes.key?(:'trend_shopping_stability')
295
+ self.trend_shopping_stability = attributes[:'trend_shopping_stability']
296
+ end
297
+
298
+ if attributes.key?(:'positivity_index')
299
+ self.positivity_index = attributes[:'positivity_index']
300
+ end
301
+
302
+ if attributes.key?(:'trend_positivity')
303
+ self.trend_positivity = attributes[:'trend_positivity']
304
+ end
305
+
306
+ if attributes.key?(:'mention_rate')
307
+ self.mention_rate = attributes[:'mention_rate']
308
+ end
309
+
310
+ if attributes.key?(:'trend_mention_rate')
311
+ self.trend_mention_rate = attributes[:'trend_mention_rate']
312
+ end
313
+
314
+ if attributes.key?(:'serp_rate')
315
+ self.serp_rate = attributes[:'serp_rate']
316
+ end
317
+
318
+ if attributes.key?(:'trend_serp_rate')
319
+ self.trend_serp_rate = attributes[:'trend_serp_rate']
320
+ end
321
+
322
+ if attributes.key?(:'shopping_rate')
323
+ self.shopping_rate = attributes[:'shopping_rate']
324
+ end
325
+
326
+ if attributes.key?(:'trend_shopping_rate')
327
+ self.trend_shopping_rate = attributes[:'trend_shopping_rate']
328
+ end
329
+
330
+ if attributes.key?(:'share_of_voice')
331
+ self.share_of_voice = attributes[:'share_of_voice']
332
+ end
333
+
334
+ if attributes.key?(:'trend_share_of_voice')
335
+ self.trend_share_of_voice = attributes[:'trend_share_of_voice']
336
+ end
337
+
338
+ if attributes.key?(:'sentiment_positive')
339
+ self.sentiment_positive = attributes[:'sentiment_positive']
340
+ else
341
+ self.sentiment_positive = nil
342
+ end
343
+
344
+ if attributes.key?(:'sentiment_neutral')
345
+ self.sentiment_neutral = attributes[:'sentiment_neutral']
346
+ else
347
+ self.sentiment_neutral = nil
348
+ end
349
+
350
+ if attributes.key?(:'sentiment_negative')
351
+ self.sentiment_negative = attributes[:'sentiment_negative']
352
+ else
353
+ self.sentiment_negative = nil
354
+ end
355
+
356
+ if attributes.key?(:'avg_mention_count')
357
+ self.avg_mention_count = attributes[:'avg_mention_count']
358
+ end
359
+
360
+ if attributes.key?(:'mention_type_counts')
361
+ self.mention_type_counts = attributes[:'mention_type_counts']
362
+ else
363
+ self.mention_type_counts = nil
364
+ end
365
+ end
366
+
367
+ # Show invalid properties with the reasons. Usually used together with valid?
368
+ # @return Array for valid properties with the reasons
369
+ def list_invalid_properties
370
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
371
+ invalid_properties = Array.new
372
+ if @cluster_name.nil?
373
+ invalid_properties.push('invalid value for "cluster_name", cluster_name cannot be nil.')
374
+ end
375
+
376
+ if @query_count.nil?
377
+ invalid_properties.push('invalid value for "query_count", query_count cannot be nil.')
378
+ end
379
+
380
+ if @keyword_count.nil?
381
+ invalid_properties.push('invalid value for "keyword_count", keyword_count cannot be nil.')
382
+ end
383
+
384
+ if @sentiment_positive.nil?
385
+ invalid_properties.push('invalid value for "sentiment_positive", sentiment_positive cannot be nil.')
386
+ end
387
+
388
+ if @sentiment_neutral.nil?
389
+ invalid_properties.push('invalid value for "sentiment_neutral", sentiment_neutral cannot be nil.')
390
+ end
391
+
392
+ if @sentiment_negative.nil?
393
+ invalid_properties.push('invalid value for "sentiment_negative", sentiment_negative cannot be nil.')
394
+ end
395
+
396
+ if @mention_type_counts.nil?
397
+ invalid_properties.push('invalid value for "mention_type_counts", mention_type_counts cannot be nil.')
398
+ end
399
+
400
+ invalid_properties
401
+ end
402
+
403
+ # Check to see if the all the properties in the model are valid
404
+ # @return true if the model is valid
405
+ def valid?
406
+ warn '[DEPRECATED] the `valid?` method is obsolete'
407
+ return false if @cluster_name.nil?
408
+ return false if @query_count.nil?
409
+ return false if @keyword_count.nil?
410
+ return false if @sentiment_positive.nil?
411
+ return false if @sentiment_neutral.nil?
412
+ return false if @sentiment_negative.nil?
413
+ return false if @mention_type_counts.nil?
414
+ true
415
+ end
416
+
417
+ # Custom attribute writer method with validation
418
+ # @param [Object] cluster_name Value to be assigned
419
+ def cluster_name=(cluster_name)
420
+ if cluster_name.nil?
421
+ fail ArgumentError, 'cluster_name cannot be nil'
422
+ end
423
+
424
+ @cluster_name = cluster_name
425
+ end
426
+
427
+ # Custom attribute writer method with validation
428
+ # @param [Object] query_count Value to be assigned
429
+ def query_count=(query_count)
430
+ if query_count.nil?
431
+ fail ArgumentError, 'query_count cannot be nil'
432
+ end
433
+
434
+ @query_count = query_count
435
+ end
436
+
437
+ # Custom attribute writer method with validation
438
+ # @param [Object] keyword_count Value to be assigned
439
+ def keyword_count=(keyword_count)
440
+ if keyword_count.nil?
441
+ fail ArgumentError, 'keyword_count cannot be nil'
442
+ end
443
+
444
+ @keyword_count = keyword_count
445
+ end
446
+
447
+ # Custom attribute writer method with validation
448
+ # @param [Object] sentiment_positive Value to be assigned
449
+ def sentiment_positive=(sentiment_positive)
450
+ if sentiment_positive.nil?
451
+ fail ArgumentError, 'sentiment_positive cannot be nil'
452
+ end
453
+
454
+ @sentiment_positive = sentiment_positive
455
+ end
456
+
457
+ # Custom attribute writer method with validation
458
+ # @param [Object] sentiment_neutral Value to be assigned
459
+ def sentiment_neutral=(sentiment_neutral)
460
+ if sentiment_neutral.nil?
461
+ fail ArgumentError, 'sentiment_neutral cannot be nil'
462
+ end
463
+
464
+ @sentiment_neutral = sentiment_neutral
465
+ end
466
+
467
+ # Custom attribute writer method with validation
468
+ # @param [Object] sentiment_negative Value to be assigned
469
+ def sentiment_negative=(sentiment_negative)
470
+ if sentiment_negative.nil?
471
+ fail ArgumentError, 'sentiment_negative cannot be nil'
472
+ end
473
+
474
+ @sentiment_negative = sentiment_negative
475
+ end
476
+
477
+ # Custom attribute writer method with validation
478
+ # @param [Object] mention_type_counts Value to be assigned
479
+ def mention_type_counts=(mention_type_counts)
480
+ if mention_type_counts.nil?
481
+ fail ArgumentError, 'mention_type_counts cannot be nil'
482
+ end
483
+
484
+ @mention_type_counts = mention_type_counts
485
+ end
486
+
487
+ # Checks equality by comparing each attribute.
488
+ # @param [Object] Object to be compared
489
+ def ==(o)
490
+ return true if self.equal?(o)
491
+ self.class == o.class &&
492
+ cluster_id == o.cluster_id &&
493
+ cluster_name == o.cluster_name &&
494
+ query_count == o.query_count &&
495
+ keyword_count == o.keyword_count &&
496
+ avg_serp_position == o.avg_serp_position &&
497
+ trend_serp == o.trend_serp &&
498
+ avg_shopping_position == o.avg_shopping_position &&
499
+ trend_shopping == o.trend_shopping &&
500
+ avg_mention_position == o.avg_mention_position &&
501
+ trend_mention == o.trend_mention &&
502
+ avg_link_position == o.avg_link_position &&
503
+ trend_link == o.trend_link &&
504
+ mention_position_stability == o.mention_position_stability &&
505
+ trend_stability == o.trend_stability &&
506
+ serp_position_stability == o.serp_position_stability &&
507
+ trend_serp_stability == o.trend_serp_stability &&
508
+ shopping_position_stability == o.shopping_position_stability &&
509
+ trend_shopping_stability == o.trend_shopping_stability &&
510
+ positivity_index == o.positivity_index &&
511
+ trend_positivity == o.trend_positivity &&
512
+ mention_rate == o.mention_rate &&
513
+ trend_mention_rate == o.trend_mention_rate &&
514
+ serp_rate == o.serp_rate &&
515
+ trend_serp_rate == o.trend_serp_rate &&
516
+ shopping_rate == o.shopping_rate &&
517
+ trend_shopping_rate == o.trend_shopping_rate &&
518
+ share_of_voice == o.share_of_voice &&
519
+ trend_share_of_voice == o.trend_share_of_voice &&
520
+ sentiment_positive == o.sentiment_positive &&
521
+ sentiment_neutral == o.sentiment_neutral &&
522
+ sentiment_negative == o.sentiment_negative &&
523
+ avg_mention_count == o.avg_mention_count &&
524
+ mention_type_counts == o.mention_type_counts
525
+ end
526
+
527
+ # @see the `==` method
528
+ # @param [Object] Object to be compared
529
+ def eql?(o)
530
+ self == o
531
+ end
532
+
533
+ # Calculates hash code according to all attributes.
534
+ # @return [Integer] Hash code
535
+ def hash
536
+ [cluster_id, cluster_name, query_count, keyword_count, avg_serp_position, trend_serp, avg_shopping_position, trend_shopping, avg_mention_position, trend_mention, avg_link_position, trend_link, mention_position_stability, trend_stability, serp_position_stability, trend_serp_stability, shopping_position_stability, trend_shopping_stability, positivity_index, trend_positivity, mention_rate, trend_mention_rate, serp_rate, trend_serp_rate, shopping_rate, trend_shopping_rate, share_of_voice, trend_share_of_voice, sentiment_positive, sentiment_neutral, sentiment_negative, avg_mention_count, mention_type_counts].hash
537
+ end
538
+
539
+ # Builds the object from hash
540
+ # @param [Hash] attributes Model attributes in the form of hash
541
+ # @return [Object] Returns the model itself
542
+ def self.build_from_hash(attributes)
543
+ return nil unless attributes.is_a?(Hash)
544
+ attributes = attributes.transform_keys(&:to_sym)
545
+ transformed_hash = {}
546
+ openapi_types.each_pair do |key, type|
547
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
548
+ transformed_hash["#{key}"] = nil
549
+ elsif type =~ /\AArray<(.*)>/i
550
+ # check to ensure the input is an array given that the attribute
551
+ # is documented as an array but the input is not
552
+ if attributes[attribute_map[key]].is_a?(Array)
553
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
554
+ end
555
+ elsif !attributes[attribute_map[key]].nil?
556
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
557
+ end
558
+ end
559
+ new(transformed_hash)
560
+ end
561
+
562
+ # Returns the object in the form of hash
563
+ # @return [Hash] Returns the object in the form of hash
564
+ def to_hash
565
+ hash = {}
566
+ self.class.attribute_map.each_pair do |attr, param|
567
+ value = self.send(attr)
568
+ if value.nil?
569
+ is_nullable = self.class.openapi_nullable.include?(attr)
570
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
571
+ end
572
+
573
+ hash[param] = _to_hash(value)
574
+ end
575
+ hash
576
+ end
577
+
578
+ end
579
+
580
+ end
@@ -1,7 +1,7 @@
1
1
  =begin
2
2
  #Mencoro API
3
3
 
4
- #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`.
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
5
 
6
6
  The version of the OpenAPI document: 1.0.0
7
7
  Contact: support@mencoro.com