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,718 @@
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 ProjectRankTrackingStats < ApiModelBase
18
+ attr_accessor :avg_serp_position
19
+
20
+ attr_accessor :trend_serp
21
+
22
+ attr_accessor :avg_shopping_position
23
+
24
+ attr_accessor :trend_shopping
25
+
26
+ attr_accessor :avg_mention_position
27
+
28
+ attr_accessor :trend_mention
29
+
30
+ attr_accessor :avg_link_position
31
+
32
+ attr_accessor :trend_link
33
+
34
+ attr_accessor :mention_position_stability
35
+
36
+ attr_accessor :trend_stability
37
+
38
+ attr_accessor :serp_position_stability
39
+
40
+ attr_accessor :trend_serp_stability
41
+
42
+ attr_accessor :shopping_position_stability
43
+
44
+ attr_accessor :trend_shopping_stability
45
+
46
+ attr_accessor :positivity_index
47
+
48
+ attr_accessor :trend_positivity
49
+
50
+ attr_accessor :mention_rate
51
+
52
+ attr_accessor :trend_mention_rate
53
+
54
+ attr_accessor :serp_rate
55
+
56
+ attr_accessor :trend_serp_rate
57
+
58
+ attr_accessor :shopping_rate
59
+
60
+ attr_accessor :trend_shopping_rate
61
+
62
+ attr_accessor :share_of_voice
63
+
64
+ attr_accessor :trend_share_of_voice
65
+
66
+ attr_accessor :sentiment_positive
67
+
68
+ attr_accessor :sentiment_neutral
69
+
70
+ attr_accessor :sentiment_negative
71
+
72
+ attr_accessor :mention_count
73
+
74
+ attr_accessor :ai_tracked_query_count
75
+
76
+ attr_accessor :ai_queries_with_mention
77
+
78
+ attr_accessor :serp_tracked_query_count
79
+
80
+ attr_accessor :serp_queries_with_result
81
+
82
+ attr_accessor :shopping_tracked_query_count
83
+
84
+ attr_accessor :shopping_queries_with_result
85
+
86
+ attr_accessor :mention_type_counts
87
+
88
+ attr_accessor :data_dirty_since
89
+
90
+ attr_accessor :mention_position_distribution
91
+
92
+ attr_accessor :serp_position_distribution
93
+
94
+ attr_accessor :shopping_position_distribution
95
+
96
+ attr_accessor :competitor_share_of_voice
97
+
98
+ # Attribute mapping from ruby-style variable name to JSON key.
99
+ def self.attribute_map
100
+ {
101
+ :'avg_serp_position' => :'avgSerpPosition',
102
+ :'trend_serp' => :'trendSerp',
103
+ :'avg_shopping_position' => :'avgShoppingPosition',
104
+ :'trend_shopping' => :'trendShopping',
105
+ :'avg_mention_position' => :'avgMentionPosition',
106
+ :'trend_mention' => :'trendMention',
107
+ :'avg_link_position' => :'avgLinkPosition',
108
+ :'trend_link' => :'trendLink',
109
+ :'mention_position_stability' => :'mentionPositionStability',
110
+ :'trend_stability' => :'trendStability',
111
+ :'serp_position_stability' => :'serpPositionStability',
112
+ :'trend_serp_stability' => :'trendSerpStability',
113
+ :'shopping_position_stability' => :'shoppingPositionStability',
114
+ :'trend_shopping_stability' => :'trendShoppingStability',
115
+ :'positivity_index' => :'positivityIndex',
116
+ :'trend_positivity' => :'trendPositivity',
117
+ :'mention_rate' => :'mentionRate',
118
+ :'trend_mention_rate' => :'trendMentionRate',
119
+ :'serp_rate' => :'serpRate',
120
+ :'trend_serp_rate' => :'trendSerpRate',
121
+ :'shopping_rate' => :'shoppingRate',
122
+ :'trend_shopping_rate' => :'trendShoppingRate',
123
+ :'share_of_voice' => :'shareOfVoice',
124
+ :'trend_share_of_voice' => :'trendShareOfVoice',
125
+ :'sentiment_positive' => :'sentimentPositive',
126
+ :'sentiment_neutral' => :'sentimentNeutral',
127
+ :'sentiment_negative' => :'sentimentNegative',
128
+ :'mention_count' => :'mentionCount',
129
+ :'ai_tracked_query_count' => :'aiTrackedQueryCount',
130
+ :'ai_queries_with_mention' => :'aiQueriesWithMention',
131
+ :'serp_tracked_query_count' => :'serpTrackedQueryCount',
132
+ :'serp_queries_with_result' => :'serpQueriesWithResult',
133
+ :'shopping_tracked_query_count' => :'shoppingTrackedQueryCount',
134
+ :'shopping_queries_with_result' => :'shoppingQueriesWithResult',
135
+ :'mention_type_counts' => :'mentionTypeCounts',
136
+ :'data_dirty_since' => :'dataDirtySince',
137
+ :'mention_position_distribution' => :'mentionPositionDistribution',
138
+ :'serp_position_distribution' => :'serpPositionDistribution',
139
+ :'shopping_position_distribution' => :'shoppingPositionDistribution',
140
+ :'competitor_share_of_voice' => :'competitorShareOfVoice'
141
+ }
142
+ end
143
+
144
+ # Returns attribute mapping this model knows about
145
+ def self.acceptable_attribute_map
146
+ attribute_map
147
+ end
148
+
149
+ # Returns all the JSON keys this model knows about
150
+ def self.acceptable_attributes
151
+ acceptable_attribute_map.values
152
+ end
153
+
154
+ # Attribute type mapping.
155
+ def self.openapi_types
156
+ {
157
+ :'avg_serp_position' => :'Float',
158
+ :'trend_serp' => :'Float',
159
+ :'avg_shopping_position' => :'Float',
160
+ :'trend_shopping' => :'Float',
161
+ :'avg_mention_position' => :'Float',
162
+ :'trend_mention' => :'Float',
163
+ :'avg_link_position' => :'Float',
164
+ :'trend_link' => :'Float',
165
+ :'mention_position_stability' => :'Float',
166
+ :'trend_stability' => :'Float',
167
+ :'serp_position_stability' => :'Float',
168
+ :'trend_serp_stability' => :'Float',
169
+ :'shopping_position_stability' => :'Float',
170
+ :'trend_shopping_stability' => :'Float',
171
+ :'positivity_index' => :'Integer',
172
+ :'trend_positivity' => :'Integer',
173
+ :'mention_rate' => :'Integer',
174
+ :'trend_mention_rate' => :'Integer',
175
+ :'serp_rate' => :'Integer',
176
+ :'trend_serp_rate' => :'Integer',
177
+ :'shopping_rate' => :'Integer',
178
+ :'trend_shopping_rate' => :'Integer',
179
+ :'share_of_voice' => :'Float',
180
+ :'trend_share_of_voice' => :'Float',
181
+ :'sentiment_positive' => :'Integer',
182
+ :'sentiment_neutral' => :'Integer',
183
+ :'sentiment_negative' => :'Integer',
184
+ :'mention_count' => :'Integer',
185
+ :'ai_tracked_query_count' => :'Integer',
186
+ :'ai_queries_with_mention' => :'Integer',
187
+ :'serp_tracked_query_count' => :'Integer',
188
+ :'serp_queries_with_result' => :'Integer',
189
+ :'shopping_tracked_query_count' => :'Integer',
190
+ :'shopping_queries_with_result' => :'Integer',
191
+ :'mention_type_counts' => :'MentionTypeCounts',
192
+ :'data_dirty_since' => :'String',
193
+ :'mention_position_distribution' => :'Array<PositionDistributionBucket>',
194
+ :'serp_position_distribution' => :'Array<PositionDistributionBucket>',
195
+ :'shopping_position_distribution' => :'Array<PositionDistributionBucket>',
196
+ :'competitor_share_of_voice' => :'Array<CompetitorShareOfVoice>'
197
+ }
198
+ end
199
+
200
+ # List of attributes with nullable: true
201
+ def self.openapi_nullable
202
+ Set.new([
203
+ :'avg_serp_position',
204
+ :'trend_serp',
205
+ :'avg_shopping_position',
206
+ :'trend_shopping',
207
+ :'avg_mention_position',
208
+ :'trend_mention',
209
+ :'avg_link_position',
210
+ :'trend_link',
211
+ :'mention_position_stability',
212
+ :'trend_stability',
213
+ :'serp_position_stability',
214
+ :'trend_serp_stability',
215
+ :'shopping_position_stability',
216
+ :'trend_shopping_stability',
217
+ :'positivity_index',
218
+ :'trend_positivity',
219
+ :'mention_rate',
220
+ :'trend_mention_rate',
221
+ :'serp_rate',
222
+ :'trend_serp_rate',
223
+ :'shopping_rate',
224
+ :'trend_shopping_rate',
225
+ :'share_of_voice',
226
+ :'trend_share_of_voice',
227
+ :'data_dirty_since',
228
+ ])
229
+ end
230
+
231
+ # Initializes the object
232
+ # @param [Hash] attributes Model attributes in the form of hash
233
+ def initialize(attributes = {})
234
+ if (!attributes.is_a?(Hash))
235
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Mencoro::ProjectRankTrackingStats` initialize method"
236
+ end
237
+
238
+ # check to see if the attribute exists and convert string to symbol for hash key
239
+ acceptable_attribute_map = self.class.acceptable_attribute_map
240
+ attributes = attributes.each_with_object({}) { |(k, v), h|
241
+ if (!acceptable_attribute_map.key?(k.to_sym))
242
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Mencoro::ProjectRankTrackingStats`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
243
+ end
244
+ h[k.to_sym] = v
245
+ }
246
+
247
+ if attributes.key?(:'avg_serp_position')
248
+ self.avg_serp_position = attributes[:'avg_serp_position']
249
+ end
250
+
251
+ if attributes.key?(:'trend_serp')
252
+ self.trend_serp = attributes[:'trend_serp']
253
+ end
254
+
255
+ if attributes.key?(:'avg_shopping_position')
256
+ self.avg_shopping_position = attributes[:'avg_shopping_position']
257
+ end
258
+
259
+ if attributes.key?(:'trend_shopping')
260
+ self.trend_shopping = attributes[:'trend_shopping']
261
+ end
262
+
263
+ if attributes.key?(:'avg_mention_position')
264
+ self.avg_mention_position = attributes[:'avg_mention_position']
265
+ end
266
+
267
+ if attributes.key?(:'trend_mention')
268
+ self.trend_mention = attributes[:'trend_mention']
269
+ end
270
+
271
+ if attributes.key?(:'avg_link_position')
272
+ self.avg_link_position = attributes[:'avg_link_position']
273
+ end
274
+
275
+ if attributes.key?(:'trend_link')
276
+ self.trend_link = attributes[:'trend_link']
277
+ end
278
+
279
+ if attributes.key?(:'mention_position_stability')
280
+ self.mention_position_stability = attributes[:'mention_position_stability']
281
+ end
282
+
283
+ if attributes.key?(:'trend_stability')
284
+ self.trend_stability = attributes[:'trend_stability']
285
+ end
286
+
287
+ if attributes.key?(:'serp_position_stability')
288
+ self.serp_position_stability = attributes[:'serp_position_stability']
289
+ end
290
+
291
+ if attributes.key?(:'trend_serp_stability')
292
+ self.trend_serp_stability = attributes[:'trend_serp_stability']
293
+ end
294
+
295
+ if attributes.key?(:'shopping_position_stability')
296
+ self.shopping_position_stability = attributes[:'shopping_position_stability']
297
+ end
298
+
299
+ if attributes.key?(:'trend_shopping_stability')
300
+ self.trend_shopping_stability = attributes[:'trend_shopping_stability']
301
+ end
302
+
303
+ if attributes.key?(:'positivity_index')
304
+ self.positivity_index = attributes[:'positivity_index']
305
+ end
306
+
307
+ if attributes.key?(:'trend_positivity')
308
+ self.trend_positivity = attributes[:'trend_positivity']
309
+ end
310
+
311
+ if attributes.key?(:'mention_rate')
312
+ self.mention_rate = attributes[:'mention_rate']
313
+ end
314
+
315
+ if attributes.key?(:'trend_mention_rate')
316
+ self.trend_mention_rate = attributes[:'trend_mention_rate']
317
+ end
318
+
319
+ if attributes.key?(:'serp_rate')
320
+ self.serp_rate = attributes[:'serp_rate']
321
+ end
322
+
323
+ if attributes.key?(:'trend_serp_rate')
324
+ self.trend_serp_rate = attributes[:'trend_serp_rate']
325
+ end
326
+
327
+ if attributes.key?(:'shopping_rate')
328
+ self.shopping_rate = attributes[:'shopping_rate']
329
+ end
330
+
331
+ if attributes.key?(:'trend_shopping_rate')
332
+ self.trend_shopping_rate = attributes[:'trend_shopping_rate']
333
+ end
334
+
335
+ if attributes.key?(:'share_of_voice')
336
+ self.share_of_voice = attributes[:'share_of_voice']
337
+ end
338
+
339
+ if attributes.key?(:'trend_share_of_voice')
340
+ self.trend_share_of_voice = attributes[:'trend_share_of_voice']
341
+ end
342
+
343
+ if attributes.key?(:'sentiment_positive')
344
+ self.sentiment_positive = attributes[:'sentiment_positive']
345
+ else
346
+ self.sentiment_positive = nil
347
+ end
348
+
349
+ if attributes.key?(:'sentiment_neutral')
350
+ self.sentiment_neutral = attributes[:'sentiment_neutral']
351
+ else
352
+ self.sentiment_neutral = nil
353
+ end
354
+
355
+ if attributes.key?(:'sentiment_negative')
356
+ self.sentiment_negative = attributes[:'sentiment_negative']
357
+ else
358
+ self.sentiment_negative = nil
359
+ end
360
+
361
+ if attributes.key?(:'mention_count')
362
+ self.mention_count = attributes[:'mention_count']
363
+ else
364
+ self.mention_count = nil
365
+ end
366
+
367
+ if attributes.key?(:'ai_tracked_query_count')
368
+ self.ai_tracked_query_count = attributes[:'ai_tracked_query_count']
369
+ else
370
+ self.ai_tracked_query_count = nil
371
+ end
372
+
373
+ if attributes.key?(:'ai_queries_with_mention')
374
+ self.ai_queries_with_mention = attributes[:'ai_queries_with_mention']
375
+ else
376
+ self.ai_queries_with_mention = nil
377
+ end
378
+
379
+ if attributes.key?(:'serp_tracked_query_count')
380
+ self.serp_tracked_query_count = attributes[:'serp_tracked_query_count']
381
+ else
382
+ self.serp_tracked_query_count = nil
383
+ end
384
+
385
+ if attributes.key?(:'serp_queries_with_result')
386
+ self.serp_queries_with_result = attributes[:'serp_queries_with_result']
387
+ else
388
+ self.serp_queries_with_result = nil
389
+ end
390
+
391
+ if attributes.key?(:'shopping_tracked_query_count')
392
+ self.shopping_tracked_query_count = attributes[:'shopping_tracked_query_count']
393
+ else
394
+ self.shopping_tracked_query_count = nil
395
+ end
396
+
397
+ if attributes.key?(:'shopping_queries_with_result')
398
+ self.shopping_queries_with_result = attributes[:'shopping_queries_with_result']
399
+ else
400
+ self.shopping_queries_with_result = nil
401
+ end
402
+
403
+ if attributes.key?(:'mention_type_counts')
404
+ self.mention_type_counts = attributes[:'mention_type_counts']
405
+ else
406
+ self.mention_type_counts = nil
407
+ end
408
+
409
+ if attributes.key?(:'data_dirty_since')
410
+ self.data_dirty_since = attributes[:'data_dirty_since']
411
+ end
412
+
413
+ if attributes.key?(:'mention_position_distribution')
414
+ if (value = attributes[:'mention_position_distribution']).is_a?(Array)
415
+ self.mention_position_distribution = value
416
+ end
417
+ end
418
+
419
+ if attributes.key?(:'serp_position_distribution')
420
+ if (value = attributes[:'serp_position_distribution']).is_a?(Array)
421
+ self.serp_position_distribution = value
422
+ end
423
+ end
424
+
425
+ if attributes.key?(:'shopping_position_distribution')
426
+ if (value = attributes[:'shopping_position_distribution']).is_a?(Array)
427
+ self.shopping_position_distribution = value
428
+ end
429
+ end
430
+
431
+ if attributes.key?(:'competitor_share_of_voice')
432
+ if (value = attributes[:'competitor_share_of_voice']).is_a?(Array)
433
+ self.competitor_share_of_voice = value
434
+ end
435
+ end
436
+ end
437
+
438
+ # Show invalid properties with the reasons. Usually used together with valid?
439
+ # @return Array for valid properties with the reasons
440
+ def list_invalid_properties
441
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
442
+ invalid_properties = Array.new
443
+ if @sentiment_positive.nil?
444
+ invalid_properties.push('invalid value for "sentiment_positive", sentiment_positive cannot be nil.')
445
+ end
446
+
447
+ if @sentiment_neutral.nil?
448
+ invalid_properties.push('invalid value for "sentiment_neutral", sentiment_neutral cannot be nil.')
449
+ end
450
+
451
+ if @sentiment_negative.nil?
452
+ invalid_properties.push('invalid value for "sentiment_negative", sentiment_negative cannot be nil.')
453
+ end
454
+
455
+ if @mention_count.nil?
456
+ invalid_properties.push('invalid value for "mention_count", mention_count cannot be nil.')
457
+ end
458
+
459
+ if @ai_tracked_query_count.nil?
460
+ invalid_properties.push('invalid value for "ai_tracked_query_count", ai_tracked_query_count cannot be nil.')
461
+ end
462
+
463
+ if @ai_queries_with_mention.nil?
464
+ invalid_properties.push('invalid value for "ai_queries_with_mention", ai_queries_with_mention cannot be nil.')
465
+ end
466
+
467
+ if @serp_tracked_query_count.nil?
468
+ invalid_properties.push('invalid value for "serp_tracked_query_count", serp_tracked_query_count cannot be nil.')
469
+ end
470
+
471
+ if @serp_queries_with_result.nil?
472
+ invalid_properties.push('invalid value for "serp_queries_with_result", serp_queries_with_result cannot be nil.')
473
+ end
474
+
475
+ if @shopping_tracked_query_count.nil?
476
+ invalid_properties.push('invalid value for "shopping_tracked_query_count", shopping_tracked_query_count cannot be nil.')
477
+ end
478
+
479
+ if @shopping_queries_with_result.nil?
480
+ invalid_properties.push('invalid value for "shopping_queries_with_result", shopping_queries_with_result cannot be nil.')
481
+ end
482
+
483
+ if @mention_type_counts.nil?
484
+ invalid_properties.push('invalid value for "mention_type_counts", mention_type_counts cannot be nil.')
485
+ end
486
+
487
+ invalid_properties
488
+ end
489
+
490
+ # Check to see if the all the properties in the model are valid
491
+ # @return true if the model is valid
492
+ def valid?
493
+ warn '[DEPRECATED] the `valid?` method is obsolete'
494
+ return false if @sentiment_positive.nil?
495
+ return false if @sentiment_neutral.nil?
496
+ return false if @sentiment_negative.nil?
497
+ return false if @mention_count.nil?
498
+ return false if @ai_tracked_query_count.nil?
499
+ return false if @ai_queries_with_mention.nil?
500
+ return false if @serp_tracked_query_count.nil?
501
+ return false if @serp_queries_with_result.nil?
502
+ return false if @shopping_tracked_query_count.nil?
503
+ return false if @shopping_queries_with_result.nil?
504
+ return false if @mention_type_counts.nil?
505
+ true
506
+ end
507
+
508
+ # Custom attribute writer method with validation
509
+ # @param [Object] sentiment_positive Value to be assigned
510
+ def sentiment_positive=(sentiment_positive)
511
+ if sentiment_positive.nil?
512
+ fail ArgumentError, 'sentiment_positive cannot be nil'
513
+ end
514
+
515
+ @sentiment_positive = sentiment_positive
516
+ end
517
+
518
+ # Custom attribute writer method with validation
519
+ # @param [Object] sentiment_neutral Value to be assigned
520
+ def sentiment_neutral=(sentiment_neutral)
521
+ if sentiment_neutral.nil?
522
+ fail ArgumentError, 'sentiment_neutral cannot be nil'
523
+ end
524
+
525
+ @sentiment_neutral = sentiment_neutral
526
+ end
527
+
528
+ # Custom attribute writer method with validation
529
+ # @param [Object] sentiment_negative Value to be assigned
530
+ def sentiment_negative=(sentiment_negative)
531
+ if sentiment_negative.nil?
532
+ fail ArgumentError, 'sentiment_negative cannot be nil'
533
+ end
534
+
535
+ @sentiment_negative = sentiment_negative
536
+ end
537
+
538
+ # Custom attribute writer method with validation
539
+ # @param [Object] mention_count Value to be assigned
540
+ def mention_count=(mention_count)
541
+ if mention_count.nil?
542
+ fail ArgumentError, 'mention_count cannot be nil'
543
+ end
544
+
545
+ @mention_count = mention_count
546
+ end
547
+
548
+ # Custom attribute writer method with validation
549
+ # @param [Object] ai_tracked_query_count Value to be assigned
550
+ def ai_tracked_query_count=(ai_tracked_query_count)
551
+ if ai_tracked_query_count.nil?
552
+ fail ArgumentError, 'ai_tracked_query_count cannot be nil'
553
+ end
554
+
555
+ @ai_tracked_query_count = ai_tracked_query_count
556
+ end
557
+
558
+ # Custom attribute writer method with validation
559
+ # @param [Object] ai_queries_with_mention Value to be assigned
560
+ def ai_queries_with_mention=(ai_queries_with_mention)
561
+ if ai_queries_with_mention.nil?
562
+ fail ArgumentError, 'ai_queries_with_mention cannot be nil'
563
+ end
564
+
565
+ @ai_queries_with_mention = ai_queries_with_mention
566
+ end
567
+
568
+ # Custom attribute writer method with validation
569
+ # @param [Object] serp_tracked_query_count Value to be assigned
570
+ def serp_tracked_query_count=(serp_tracked_query_count)
571
+ if serp_tracked_query_count.nil?
572
+ fail ArgumentError, 'serp_tracked_query_count cannot be nil'
573
+ end
574
+
575
+ @serp_tracked_query_count = serp_tracked_query_count
576
+ end
577
+
578
+ # Custom attribute writer method with validation
579
+ # @param [Object] serp_queries_with_result Value to be assigned
580
+ def serp_queries_with_result=(serp_queries_with_result)
581
+ if serp_queries_with_result.nil?
582
+ fail ArgumentError, 'serp_queries_with_result cannot be nil'
583
+ end
584
+
585
+ @serp_queries_with_result = serp_queries_with_result
586
+ end
587
+
588
+ # Custom attribute writer method with validation
589
+ # @param [Object] shopping_tracked_query_count Value to be assigned
590
+ def shopping_tracked_query_count=(shopping_tracked_query_count)
591
+ if shopping_tracked_query_count.nil?
592
+ fail ArgumentError, 'shopping_tracked_query_count cannot be nil'
593
+ end
594
+
595
+ @shopping_tracked_query_count = shopping_tracked_query_count
596
+ end
597
+
598
+ # Custom attribute writer method with validation
599
+ # @param [Object] shopping_queries_with_result Value to be assigned
600
+ def shopping_queries_with_result=(shopping_queries_with_result)
601
+ if shopping_queries_with_result.nil?
602
+ fail ArgumentError, 'shopping_queries_with_result cannot be nil'
603
+ end
604
+
605
+ @shopping_queries_with_result = shopping_queries_with_result
606
+ end
607
+
608
+ # Custom attribute writer method with validation
609
+ # @param [Object] mention_type_counts Value to be assigned
610
+ def mention_type_counts=(mention_type_counts)
611
+ if mention_type_counts.nil?
612
+ fail ArgumentError, 'mention_type_counts cannot be nil'
613
+ end
614
+
615
+ @mention_type_counts = mention_type_counts
616
+ end
617
+
618
+ # Checks equality by comparing each attribute.
619
+ # @param [Object] Object to be compared
620
+ def ==(o)
621
+ return true if self.equal?(o)
622
+ self.class == o.class &&
623
+ avg_serp_position == o.avg_serp_position &&
624
+ trend_serp == o.trend_serp &&
625
+ avg_shopping_position == o.avg_shopping_position &&
626
+ trend_shopping == o.trend_shopping &&
627
+ avg_mention_position == o.avg_mention_position &&
628
+ trend_mention == o.trend_mention &&
629
+ avg_link_position == o.avg_link_position &&
630
+ trend_link == o.trend_link &&
631
+ mention_position_stability == o.mention_position_stability &&
632
+ trend_stability == o.trend_stability &&
633
+ serp_position_stability == o.serp_position_stability &&
634
+ trend_serp_stability == o.trend_serp_stability &&
635
+ shopping_position_stability == o.shopping_position_stability &&
636
+ trend_shopping_stability == o.trend_shopping_stability &&
637
+ positivity_index == o.positivity_index &&
638
+ trend_positivity == o.trend_positivity &&
639
+ mention_rate == o.mention_rate &&
640
+ trend_mention_rate == o.trend_mention_rate &&
641
+ serp_rate == o.serp_rate &&
642
+ trend_serp_rate == o.trend_serp_rate &&
643
+ shopping_rate == o.shopping_rate &&
644
+ trend_shopping_rate == o.trend_shopping_rate &&
645
+ share_of_voice == o.share_of_voice &&
646
+ trend_share_of_voice == o.trend_share_of_voice &&
647
+ sentiment_positive == o.sentiment_positive &&
648
+ sentiment_neutral == o.sentiment_neutral &&
649
+ sentiment_negative == o.sentiment_negative &&
650
+ mention_count == o.mention_count &&
651
+ ai_tracked_query_count == o.ai_tracked_query_count &&
652
+ ai_queries_with_mention == o.ai_queries_with_mention &&
653
+ serp_tracked_query_count == o.serp_tracked_query_count &&
654
+ serp_queries_with_result == o.serp_queries_with_result &&
655
+ shopping_tracked_query_count == o.shopping_tracked_query_count &&
656
+ shopping_queries_with_result == o.shopping_queries_with_result &&
657
+ mention_type_counts == o.mention_type_counts &&
658
+ data_dirty_since == o.data_dirty_since &&
659
+ mention_position_distribution == o.mention_position_distribution &&
660
+ serp_position_distribution == o.serp_position_distribution &&
661
+ shopping_position_distribution == o.shopping_position_distribution &&
662
+ competitor_share_of_voice == o.competitor_share_of_voice
663
+ end
664
+
665
+ # @see the `==` method
666
+ # @param [Object] Object to be compared
667
+ def eql?(o)
668
+ self == o
669
+ end
670
+
671
+ # Calculates hash code according to all attributes.
672
+ # @return [Integer] Hash code
673
+ def hash
674
+ [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, mention_count, ai_tracked_query_count, ai_queries_with_mention, serp_tracked_query_count, serp_queries_with_result, shopping_tracked_query_count, shopping_queries_with_result, mention_type_counts, data_dirty_since, mention_position_distribution, serp_position_distribution, shopping_position_distribution, competitor_share_of_voice].hash
675
+ end
676
+
677
+ # Builds the object from hash
678
+ # @param [Hash] attributes Model attributes in the form of hash
679
+ # @return [Object] Returns the model itself
680
+ def self.build_from_hash(attributes)
681
+ return nil unless attributes.is_a?(Hash)
682
+ attributes = attributes.transform_keys(&:to_sym)
683
+ transformed_hash = {}
684
+ openapi_types.each_pair do |key, type|
685
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
686
+ transformed_hash["#{key}"] = nil
687
+ elsif type =~ /\AArray<(.*)>/i
688
+ # check to ensure the input is an array given that the attribute
689
+ # is documented as an array but the input is not
690
+ if attributes[attribute_map[key]].is_a?(Array)
691
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
692
+ end
693
+ elsif !attributes[attribute_map[key]].nil?
694
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
695
+ end
696
+ end
697
+ new(transformed_hash)
698
+ end
699
+
700
+ # Returns the object in the form of hash
701
+ # @return [Hash] Returns the object in the form of hash
702
+ def to_hash
703
+ hash = {}
704
+ self.class.attribute_map.each_pair do |attr, param|
705
+ value = self.send(attr)
706
+ if value.nil?
707
+ is_nullable = self.class.openapi_nullable.include?(attr)
708
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
709
+ end
710
+
711
+ hash[param] = _to_hash(value)
712
+ end
713
+ hash
714
+ end
715
+
716
+ end
717
+
718
+ end