mencoro 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (401) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +9 -0
  3. data/README.md +304 -0
  4. data/Rakefile +10 -0
  5. data/docs/AcceptedJobResource.md +22 -0
  6. data/docs/AccountApi.md +141 -0
  7. data/docs/AiResponseReportResource.md +28 -0
  8. data/docs/AiResponseResource.md +36 -0
  9. data/docs/AnalyticsApi.md +1320 -0
  10. data/docs/ApplyClusteringJobOutcome.md +26 -0
  11. data/docs/ApplyClusteringJobOutcomeClustersInner.md +22 -0
  12. data/docs/ApplyClusteringJobOutcomeFailedInner.md +22 -0
  13. data/docs/ApplyClusteringJobOutcomeSkippedClustersInner.md +20 -0
  14. data/docs/ApplyClusteringJobOutcomeSuccessfulInner.md +20 -0
  15. data/docs/AsyncJobResource.md +24 -0
  16. data/docs/BatchChangeTrackedQueryCheckFrequencyRequestData.md +20 -0
  17. data/docs/BatchChangeTrackedQueryPassesRequestData.md +20 -0
  18. data/docs/BatchCreateQueryClustersOutcome.md +20 -0
  19. data/docs/BatchCreateQueryClustersOutcomeFailedInner.md +22 -0
  20. data/docs/BatchCreateQueryClustersOutcomeSuccessfulInner.md +20 -0
  21. data/docs/BatchCreateQueryClustersRequestData.md +18 -0
  22. data/docs/BatchCreateTrackedQueriesRequestData.md +30 -0
  23. data/docs/BatchCreateTrackedQueriesResultResource.md +20 -0
  24. data/docs/BatchCreateTrackedQueriesResultResourceFailedInner.md +26 -0
  25. data/docs/BatchCreateTrackedQueriesResultResourceSuccessfulInner.md +24 -0
  26. data/docs/BatchForceCheckTrackedQueries200Response.md +20 -0
  27. data/docs/BatchForceCheckTrackedQueries200ResponseFailedInner.md +22 -0
  28. data/docs/BatchPauseTrackedQueries200Response.md +20 -0
  29. data/docs/BatchPauseTrackedQueries200ResponseFailedInner.md +22 -0
  30. data/docs/BatchPauseTrackedQueries200ResponseSuccessfulInner.md +18 -0
  31. data/docs/BatchResumeTrackedQueries200Response.md +20 -0
  32. data/docs/BatchTargetsRequestData.md +18 -0
  33. data/docs/BatchWriteOutcome.md +20 -0
  34. data/docs/BatchWriteOutcomeFailedInner.md +22 -0
  35. data/docs/BillingApi.md +77 -0
  36. data/docs/BrandProfileResource.md +24 -0
  37. data/docs/BulkAddClustersToTrackedQueries200Response.md +20 -0
  38. data/docs/BulkAddClustersToTrackedQueriesRequest.md +20 -0
  39. data/docs/BulkRemoveClustersFromTrackedQueries200Response.md +20 -0
  40. data/docs/BulkRemoveClustersFromTrackedQueriesRequest.md +20 -0
  41. data/docs/CapturesApi.md +267 -0
  42. data/docs/ChangeMemberRoleRequest.md +18 -0
  43. data/docs/ChangeTrackedQueryCheckFrequencyRequestData.md +18 -0
  44. data/docs/ChangeTrackedQueryPassesRequestData.md +18 -0
  45. data/docs/CitationResource.md +36 -0
  46. data/docs/ClusterMembershipRequestData.md +18 -0
  47. data/docs/ClustersApi.md +465 -0
  48. data/docs/CompetitorResource.md +24 -0
  49. data/docs/CreateCompetitorRequest.md +22 -0
  50. data/docs/CreateInvitation200Response.md +22 -0
  51. data/docs/CreateInvitation201Response.md +32 -0
  52. data/docs/CreateInvitationRequest.md +20 -0
  53. data/docs/CreateOrganization201Response.md +22 -0
  54. data/docs/CreateOrganizationRequest.md +18 -0
  55. data/docs/CreateProjectRequest.md +24 -0
  56. data/docs/CreateProjectRequestCompetitorsInner.md +22 -0
  57. data/docs/CreateQueryCluster409Response.md +22 -0
  58. data/docs/CreateQueryClusterRequest.md +18 -0
  59. data/docs/DeleteQueryCluster200Response.md +22 -0
  60. data/docs/DiscoveryApi.md +311 -0
  61. data/docs/EntitlementsResource.md +38 -0
  62. data/docs/GetAvailableFilters200Response.md +22 -0
  63. data/docs/GetAvailableFilters200ResponseClustersInner.md +20 -0
  64. data/docs/GetMeStats200Response.md +20 -0
  65. data/docs/GetMeStats200ResponseOrganizations.md +18 -0
  66. data/docs/GetMeStats200ResponseProjects.md +20 -0
  67. data/docs/GetMembershipStats200Response.md +30 -0
  68. data/docs/GetMentionSamples400Response.md +24 -0
  69. data/docs/GetMentionSamples400ResponseDetailsValueInner.md +22 -0
  70. data/docs/GetMetricGlossary200Response.md +18 -0
  71. data/docs/GetMetricGlossary200ResponseMetricsInner.md +30 -0
  72. data/docs/GetOrganizationOverview200Response.md +20 -0
  73. data/docs/GetOrganizationOverview200ResponseAggregate.md +30 -0
  74. data/docs/GetOrganizationOverview200ResponseProjectsInner.md +32 -0
  75. data/docs/GetOrganizationStats200Response.md +22 -0
  76. data/docs/GetOrganizationStats200ResponseInvitations.md +18 -0
  77. data/docs/GetOrganizationStats200ResponseMembers.md +18 -0
  78. data/docs/GetOrganizationStats200ResponseProjects.md +20 -0
  79. data/docs/GetShareOfVoiceFormula200Response.md +24 -0
  80. data/docs/GetTrackingCoverage200Response.md +30 -0
  81. data/docs/GetTrackingCoverage200ResponseSampleInner.md +28 -0
  82. data/docs/InvitationResource.md +30 -0
  83. data/docs/InvitationsApi.md +243 -0
  84. data/docs/JobsApi.md +79 -0
  85. data/docs/KeywordListingResource.md +88 -0
  86. data/docs/KeywordListingResourceMentionTypeCounts.md +26 -0
  87. data/docs/ListAiResponses200Response.md +20 -0
  88. data/docs/ListCompetitors200Response.md +20 -0
  89. data/docs/ListInvitations200Response.md +20 -0
  90. data/docs/ListKeywordListings200Response.md +24 -0
  91. data/docs/ListMembers200Response.md +20 -0
  92. data/docs/ListOrganizations200Response.md +20 -0
  93. data/docs/ListProjects200Response.md +20 -0
  94. data/docs/ListQueryClusters200Response.md +20 -0
  95. data/docs/ListSearchSnapshots200Response.md +20 -0
  96. data/docs/ListShoppingSnapshots200Response.md +20 -0
  97. data/docs/MeResource.md +34 -0
  98. data/docs/MemberResource.md +28 -0
  99. data/docs/MembersApi.md +391 -0
  100. data/docs/OperationEffect.md +22 -0
  101. data/docs/OrganizationOperationsApi.md +77 -0
  102. data/docs/OrganizationResource.md +32 -0
  103. data/docs/OrganizationsApi.md +807 -0
  104. data/docs/PreviewOrganizationOperation200Response.md +34 -0
  105. data/docs/PreviewOrganizationOperation200ResponseOrganization.md +20 -0
  106. data/docs/PreviewOrganizationOperationRequest.md +24 -0
  107. data/docs/ProjectDetailResource.md +32 -0
  108. data/docs/ProjectDetailResourceCompetitorsInner.md +24 -0
  109. data/docs/ProjectResource.md +50 -0
  110. data/docs/ProjectedMonthlyChecksResource.md +20 -0
  111. data/docs/ProjectsApi.md +999 -0
  112. data/docs/QueryClusterResource.md +22 -0
  113. data/docs/ReportAiResponseRequest.md +22 -0
  114. data/docs/SearchResultResource.md +32 -0
  115. data/docs/SearchSnapshotResource.md +28 -0
  116. data/docs/SearchTrackedQueries200Response.md +20 -0
  117. data/docs/ShoppingOfferResource.md +38 -0
  118. data/docs/ShoppingSnapshotResource.md +28 -0
  119. data/docs/StartBrandDiscoveryJobRequest.md +20 -0
  120. data/docs/StartBrandNameSuggestionJobRequest.md +24 -0
  121. data/docs/StartClusteringJobRequestData.md +22 -0
  122. data/docs/StartKeywordDiscoveryJobRequest.md +24 -0
  123. data/docs/StartPromptDiscoveryJobRequest.md +24 -0
  124. data/docs/SubmittedChecksResource.md +20 -0
  125. data/docs/SubscriptionResource.md +42 -0
  126. data/docs/TrackedQueriesApi.md +1549 -0
  127. data/docs/TrackedQueryCountResource.md +20 -0
  128. data/docs/TrackedQueryDetailResource.md +38 -0
  129. data/docs/TrackedQueryResource.md +52 -0
  130. data/docs/TrackedQueryUsageResource.md +18 -0
  131. data/docs/UpdateOrganizationRequest.md +22 -0
  132. data/docs/UpdateProjectBrandProfileRequest.md +20 -0
  133. data/docs/UpdateProjectRequest.md +18 -0
  134. data/git_push.sh +57 -0
  135. data/lib/mencoro/api/account_api.rb +136 -0
  136. data/lib/mencoro/api/analytics_api.rb +1555 -0
  137. data/lib/mencoro/api/billing_api.rb +85 -0
  138. data/lib/mencoro/api/captures_api.rb +338 -0
  139. data/lib/mencoro/api/clusters_api.rb +548 -0
  140. data/lib/mencoro/api/discovery_api.rb +360 -0
  141. data/lib/mencoro/api/invitations_api.rb +302 -0
  142. data/lib/mencoro/api/jobs_api.rb +91 -0
  143. data/lib/mencoro/api/members_api.rb +453 -0
  144. data/lib/mencoro/api/organization_operations_api.rb +90 -0
  145. data/lib/mencoro/api/organizations_api.rb +835 -0
  146. data/lib/mencoro/api/projects_api.rb +1158 -0
  147. data/lib/mencoro/api/tracked_queries_api.rb +1792 -0
  148. data/lib/mencoro/api_client.rb +441 -0
  149. data/lib/mencoro/api_error.rb +58 -0
  150. data/lib/mencoro/api_model_base.rb +88 -0
  151. data/lib/mencoro/configuration.rb +392 -0
  152. data/lib/mencoro/models/accepted_job_resource.rb +220 -0
  153. data/lib/mencoro/models/ai_response_report_resource.rb +311 -0
  154. data/lib/mencoro/models/ai_response_resource.rb +412 -0
  155. data/lib/mencoro/models/apply_clustering_job_outcome.rb +199 -0
  156. data/lib/mencoro/models/apply_clustering_job_outcome_clusters_inner.rb +165 -0
  157. data/lib/mencoro/models/apply_clustering_job_outcome_failed_inner.rb +165 -0
  158. data/lib/mencoro/models/apply_clustering_job_outcome_skipped_clusters_inner.rb +156 -0
  159. data/lib/mencoro/models/apply_clustering_job_outcome_successful_inner.rb +158 -0
  160. data/lib/mencoro/models/async_job_resource.rb +256 -0
  161. data/lib/mencoro/models/batch_change_tracked_query_check_frequency_request_data.rb +237 -0
  162. data/lib/mencoro/models/batch_change_tracked_query_passes_request_data.rb +231 -0
  163. data/lib/mencoro/models/batch_create_query_clusters_outcome.rb +163 -0
  164. data/lib/mencoro/models/batch_create_query_clusters_outcome_failed_inner.rb +165 -0
  165. data/lib/mencoro/models/batch_create_query_clusters_outcome_successful_inner.rb +156 -0
  166. data/lib/mencoro/models/batch_create_query_clusters_request_data.rb +186 -0
  167. data/lib/mencoro/models/batch_create_tracked_queries_request_data.rb +399 -0
  168. data/lib/mencoro/models/batch_create_tracked_queries_result_resource.rb +163 -0
  169. data/lib/mencoro/models/batch_create_tracked_queries_result_resource_failed_inner.rb +183 -0
  170. data/lib/mencoro/models/batch_create_tracked_queries_result_resource_successful_inner.rb +174 -0
  171. data/lib/mencoro/models/batch_force_check_tracked_queries200_response.rb +162 -0
  172. data/lib/mencoro/models/batch_force_check_tracked_queries200_response_failed_inner.rb +165 -0
  173. data/lib/mencoro/models/batch_pause_tracked_queries200_response.rb +162 -0
  174. data/lib/mencoro/models/batch_pause_tracked_queries200_response_failed_inner.rb +165 -0
  175. data/lib/mencoro/models/batch_pause_tracked_queries200_response_successful_inner.rb +147 -0
  176. data/lib/mencoro/models/batch_resume_tracked_queries200_response.rb +162 -0
  177. data/lib/mencoro/models/batch_targets_request_data.rb +186 -0
  178. data/lib/mencoro/models/batch_write_outcome.rb +163 -0
  179. data/lib/mencoro/models/batch_write_outcome_failed_inner.rb +166 -0
  180. data/lib/mencoro/models/brand_profile_resource.rb +235 -0
  181. data/lib/mencoro/models/bulk_add_clusters_to_tracked_queries200_response.rb +162 -0
  182. data/lib/mencoro/models/bulk_add_clusters_to_tracked_queries_request.rb +218 -0
  183. data/lib/mencoro/models/bulk_remove_clusters_from_tracked_queries200_response.rb +162 -0
  184. data/lib/mencoro/models/bulk_remove_clusters_from_tracked_queries_request.rb +218 -0
  185. data/lib/mencoro/models/change_member_role_request.rb +181 -0
  186. data/lib/mencoro/models/change_tracked_query_check_frequency_request_data.rb +190 -0
  187. data/lib/mencoro/models/change_tracked_query_passes_request_data.rb +184 -0
  188. data/lib/mencoro/models/citation_resource.rb +306 -0
  189. data/lib/mencoro/models/cluster_membership_request_data.rb +186 -0
  190. data/lib/mencoro/models/competitor_resource.rb +250 -0
  191. data/lib/mencoro/models/create_competitor_request.rb +247 -0
  192. data/lib/mencoro/models/create_invitation200_response.rb +202 -0
  193. data/lib/mencoro/models/create_invitation201_response.rb +347 -0
  194. data/lib/mencoro/models/create_invitation_request.rb +192 -0
  195. data/lib/mencoro/models/create_organization201_response.rb +166 -0
  196. data/lib/mencoro/models/create_organization_request.rb +175 -0
  197. data/lib/mencoro/models/create_project_request.rb +307 -0
  198. data/lib/mencoro/models/create_project_request_competitors_inner.rb +256 -0
  199. data/lib/mencoro/models/create_query_cluster409_response.rb +165 -0
  200. data/lib/mencoro/models/create_query_cluster_request.rb +167 -0
  201. data/lib/mencoro/models/delete_query_cluster200_response.rb +168 -0
  202. data/lib/mencoro/models/entitlements_resource.rb +328 -0
  203. data/lib/mencoro/models/get_available_filters200_response.rb +173 -0
  204. data/lib/mencoro/models/get_available_filters200_response_clusters_inner.rb +157 -0
  205. data/lib/mencoro/models/get_me_stats200_response.rb +156 -0
  206. data/lib/mencoro/models/get_me_stats200_response_organizations.rb +167 -0
  207. data/lib/mencoro/models/get_me_stats200_response_projects.rb +196 -0
  208. data/lib/mencoro/models/get_membership_stats200_response.rb +322 -0
  209. data/lib/mencoro/models/get_mention_samples400_response.rb +231 -0
  210. data/lib/mencoro/models/get_mention_samples400_response_details_value_inner.rb +168 -0
  211. data/lib/mencoro/models/get_metric_glossary200_response.rb +149 -0
  212. data/lib/mencoro/models/get_metric_glossary200_response_metrics_inner.rb +240 -0
  213. data/lib/mencoro/models/get_organization_overview200_response.rb +158 -0
  214. data/lib/mencoro/models/get_organization_overview200_response_aggregate.rb +209 -0
  215. data/lib/mencoro/models/get_organization_overview200_response_projects_inner.rb +218 -0
  216. data/lib/mencoro/models/get_organization_stats200_response.rb +165 -0
  217. data/lib/mencoro/models/get_organization_stats200_response_invitations.rb +167 -0
  218. data/lib/mencoro/models/get_organization_stats200_response_members.rb +167 -0
  219. data/lib/mencoro/models/get_organization_stats200_response_projects.rb +196 -0
  220. data/lib/mencoro/models/get_share_of_voice_formula200_response.rb +182 -0
  221. data/lib/mencoro/models/get_tracking_coverage200_response.rb +209 -0
  222. data/lib/mencoro/models/get_tracking_coverage200_response_sample_inner.rb +229 -0
  223. data/lib/mencoro/models/invitation_resource.rb +331 -0
  224. data/lib/mencoro/models/keyword_listing_resource.rb +798 -0
  225. data/lib/mencoro/models/keyword_listing_resource_mention_type_counts.rb +184 -0
  226. data/lib/mencoro/models/list_ai_responses200_response.rb +159 -0
  227. data/lib/mencoro/models/list_competitors200_response.rb +159 -0
  228. data/lib/mencoro/models/list_invitations200_response.rb +158 -0
  229. data/lib/mencoro/models/list_keyword_listings200_response.rb +180 -0
  230. data/lib/mencoro/models/list_members200_response.rb +158 -0
  231. data/lib/mencoro/models/list_organizations200_response.rb +158 -0
  232. data/lib/mencoro/models/list_projects200_response.rb +159 -0
  233. data/lib/mencoro/models/list_query_clusters200_response.rb +159 -0
  234. data/lib/mencoro/models/list_search_snapshots200_response.rb +159 -0
  235. data/lib/mencoro/models/list_shopping_snapshots200_response.rb +159 -0
  236. data/lib/mencoro/models/me_resource.rb +394 -0
  237. data/lib/mencoro/models/member_resource.rb +322 -0
  238. data/lib/mencoro/models/operation_effect.rb +204 -0
  239. data/lib/mencoro/models/organization_resource.rb +326 -0
  240. data/lib/mencoro/models/preview_organization_operation200_response.rb +236 -0
  241. data/lib/mencoro/models/preview_organization_operation200_response_organization.rb +158 -0
  242. data/lib/mencoro/models/preview_organization_operation_request.rb +213 -0
  243. data/lib/mencoro/models/project_detail_resource.rb +380 -0
  244. data/lib/mencoro/models/project_detail_resource_competitors_inner.rb +178 -0
  245. data/lib/mencoro/models/project_resource.rb +422 -0
  246. data/lib/mencoro/models/projected_monthly_checks_resource.rb +211 -0
  247. data/lib/mencoro/models/query_cluster_resource.rb +229 -0
  248. data/lib/mencoro/models/report_ai_response_request.rb +227 -0
  249. data/lib/mencoro/models/search_result_resource.rb +284 -0
  250. data/lib/mencoro/models/search_snapshot_resource.rb +302 -0
  251. data/lib/mencoro/models/search_tracked_queries200_response.rb +158 -0
  252. data/lib/mencoro/models/shopping_offer_resource.rb +381 -0
  253. data/lib/mencoro/models/shopping_snapshot_resource.rb +302 -0
  254. data/lib/mencoro/models/start_brand_discovery_job_request.rb +185 -0
  255. data/lib/mencoro/models/start_brand_name_suggestion_job_request.rb +287 -0
  256. data/lib/mencoro/models/start_clustering_job_request_data.rb +249 -0
  257. data/lib/mencoro/models/start_keyword_discovery_job_request.rb +266 -0
  258. data/lib/mencoro/models/start_prompt_discovery_job_request.rb +276 -0
  259. data/lib/mencoro/models/submitted_checks_resource.rb +195 -0
  260. data/lib/mencoro/models/subscription_resource.rb +362 -0
  261. data/lib/mencoro/models/tracked_query_count_resource.rb +193 -0
  262. data/lib/mencoro/models/tracked_query_detail_resource.rb +440 -0
  263. data/lib/mencoro/models/tracked_query_resource.rb +492 -0
  264. data/lib/mencoro/models/tracked_query_usage_resource.rb +175 -0
  265. data/lib/mencoro/models/update_organization_request.rb +195 -0
  266. data/lib/mencoro/models/update_project_brand_profile_request.rb +218 -0
  267. data/lib/mencoro/models/update_project_request.rb +182 -0
  268. data/lib/mencoro/version.rb +15 -0
  269. data/lib/mencoro.rb +169 -0
  270. data/mencoro.gemspec +41 -0
  271. data/spec/api/account_api_spec.rb +57 -0
  272. data/spec/api/analytics_api_spec.rb +318 -0
  273. data/spec/api/billing_api_spec.rb +47 -0
  274. data/spec/api/captures_api_spec.rb +93 -0
  275. data/spec/api/clusters_api_spec.rb +126 -0
  276. data/spec/api/discovery_api_spec.rb +94 -0
  277. data/spec/api/invitations_api_spec.rb +83 -0
  278. data/spec/api/jobs_api_spec.rb +48 -0
  279. data/spec/api/members_api_spec.rb +111 -0
  280. data/spec/api/organization_operations_api_spec.rb +47 -0
  281. data/spec/api/organizations_api_spec.rb +181 -0
  282. data/spec/api/projects_api_spec.rb +229 -0
  283. data/spec/api/tracked_queries_api_spec.rb +344 -0
  284. data/spec/models/accepted_job_resource_spec.rb +48 -0
  285. data/spec/models/ai_response_report_resource_spec.rb +70 -0
  286. data/spec/models/ai_response_resource_spec.rb +90 -0
  287. data/spec/models/apply_clustering_job_outcome_clusters_inner_spec.rb +48 -0
  288. data/spec/models/apply_clustering_job_outcome_failed_inner_spec.rb +48 -0
  289. data/spec/models/apply_clustering_job_outcome_skipped_clusters_inner_spec.rb +42 -0
  290. data/spec/models/apply_clustering_job_outcome_spec.rb +60 -0
  291. data/spec/models/apply_clustering_job_outcome_successful_inner_spec.rb +42 -0
  292. data/spec/models/async_job_resource_spec.rb +62 -0
  293. data/spec/models/batch_change_tracked_query_check_frequency_request_data_spec.rb +46 -0
  294. data/spec/models/batch_change_tracked_query_passes_request_data_spec.rb +42 -0
  295. data/spec/models/batch_create_query_clusters_outcome_failed_inner_spec.rb +48 -0
  296. data/spec/models/batch_create_query_clusters_outcome_spec.rb +42 -0
  297. data/spec/models/batch_create_query_clusters_outcome_successful_inner_spec.rb +42 -0
  298. data/spec/models/batch_create_query_clusters_request_data_spec.rb +36 -0
  299. data/spec/models/batch_create_tracked_queries_request_data_spec.rb +80 -0
  300. data/spec/models/batch_create_tracked_queries_result_resource_failed_inner_spec.rb +60 -0
  301. data/spec/models/batch_create_tracked_queries_result_resource_spec.rb +42 -0
  302. data/spec/models/batch_create_tracked_queries_result_resource_successful_inner_spec.rb +54 -0
  303. data/spec/models/batch_force_check_tracked_queries200_response_failed_inner_spec.rb +48 -0
  304. data/spec/models/batch_force_check_tracked_queries200_response_spec.rb +42 -0
  305. data/spec/models/batch_pause_tracked_queries200_response_failed_inner_spec.rb +48 -0
  306. data/spec/models/batch_pause_tracked_queries200_response_spec.rb +42 -0
  307. data/spec/models/batch_pause_tracked_queries200_response_successful_inner_spec.rb +36 -0
  308. data/spec/models/batch_resume_tracked_queries200_response_spec.rb +42 -0
  309. data/spec/models/batch_targets_request_data_spec.rb +36 -0
  310. data/spec/models/batch_write_outcome_failed_inner_spec.rb +48 -0
  311. data/spec/models/batch_write_outcome_spec.rb +42 -0
  312. data/spec/models/brand_profile_resource_spec.rb +54 -0
  313. data/spec/models/bulk_add_clusters_to_tracked_queries200_response_spec.rb +42 -0
  314. data/spec/models/bulk_add_clusters_to_tracked_queries_request_spec.rb +42 -0
  315. data/spec/models/bulk_remove_clusters_from_tracked_queries200_response_spec.rb +42 -0
  316. data/spec/models/bulk_remove_clusters_from_tracked_queries_request_spec.rb +42 -0
  317. data/spec/models/change_member_role_request_spec.rb +40 -0
  318. data/spec/models/change_tracked_query_check_frequency_request_data_spec.rb +40 -0
  319. data/spec/models/change_tracked_query_passes_request_data_spec.rb +36 -0
  320. data/spec/models/citation_resource_spec.rb +90 -0
  321. data/spec/models/cluster_membership_request_data_spec.rb +36 -0
  322. data/spec/models/competitor_resource_spec.rb +54 -0
  323. data/spec/models/create_competitor_request_spec.rb +48 -0
  324. data/spec/models/create_invitation200_response_spec.rb +52 -0
  325. data/spec/models/create_invitation201_response_spec.rb +86 -0
  326. data/spec/models/create_invitation_request_spec.rb +46 -0
  327. data/spec/models/create_organization201_response_spec.rb +48 -0
  328. data/spec/models/create_organization_request_spec.rb +36 -0
  329. data/spec/models/create_project_request_competitors_inner_spec.rb +48 -0
  330. data/spec/models/create_project_request_spec.rb +54 -0
  331. data/spec/models/create_query_cluster409_response_spec.rb +48 -0
  332. data/spec/models/create_query_cluster_request_spec.rb +36 -0
  333. data/spec/models/delete_query_cluster200_response_spec.rb +48 -0
  334. data/spec/models/entitlements_resource_spec.rb +104 -0
  335. data/spec/models/get_available_filters200_response_clusters_inner_spec.rb +42 -0
  336. data/spec/models/get_available_filters200_response_spec.rb +48 -0
  337. data/spec/models/get_me_stats200_response_organizations_spec.rb +36 -0
  338. data/spec/models/get_me_stats200_response_projects_spec.rb +42 -0
  339. data/spec/models/get_me_stats200_response_spec.rb +42 -0
  340. data/spec/models/get_membership_stats200_response_spec.rb +72 -0
  341. data/spec/models/get_mention_samples400_response_details_value_inner_spec.rb +48 -0
  342. data/spec/models/get_mention_samples400_response_spec.rb +54 -0
  343. data/spec/models/get_metric_glossary200_response_metrics_inner_spec.rb +76 -0
  344. data/spec/models/get_metric_glossary200_response_spec.rb +36 -0
  345. data/spec/models/get_organization_overview200_response_aggregate_spec.rb +72 -0
  346. data/spec/models/get_organization_overview200_response_projects_inner_spec.rb +78 -0
  347. data/spec/models/get_organization_overview200_response_spec.rb +42 -0
  348. data/spec/models/get_organization_stats200_response_invitations_spec.rb +36 -0
  349. data/spec/models/get_organization_stats200_response_members_spec.rb +36 -0
  350. data/spec/models/get_organization_stats200_response_projects_spec.rb +42 -0
  351. data/spec/models/get_organization_stats200_response_spec.rb +48 -0
  352. data/spec/models/get_share_of_voice_formula200_response_spec.rb +54 -0
  353. data/spec/models/get_tracking_coverage200_response_sample_inner_spec.rb +70 -0
  354. data/spec/models/get_tracking_coverage200_response_spec.rb +72 -0
  355. data/spec/models/invitation_resource_spec.rb +80 -0
  356. data/spec/models/keyword_listing_resource_mention_type_counts_spec.rb +60 -0
  357. data/spec/models/keyword_listing_resource_spec.rb +262 -0
  358. data/spec/models/list_ai_responses200_response_spec.rb +42 -0
  359. data/spec/models/list_competitors200_response_spec.rb +42 -0
  360. data/spec/models/list_invitations200_response_spec.rb +42 -0
  361. data/spec/models/list_keyword_listings200_response_spec.rb +54 -0
  362. data/spec/models/list_members200_response_spec.rb +42 -0
  363. data/spec/models/list_organizations200_response_spec.rb +42 -0
  364. data/spec/models/list_projects200_response_spec.rb +42 -0
  365. data/spec/models/list_query_clusters200_response_spec.rb +42 -0
  366. data/spec/models/list_search_snapshots200_response_spec.rb +42 -0
  367. data/spec/models/list_shopping_snapshots200_response_spec.rb +42 -0
  368. data/spec/models/me_resource_spec.rb +92 -0
  369. data/spec/models/member_resource_spec.rb +74 -0
  370. data/spec/models/operation_effect_spec.rb +48 -0
  371. data/spec/models/organization_resource_spec.rb +86 -0
  372. data/spec/models/preview_organization_operation200_response_organization_spec.rb +42 -0
  373. data/spec/models/preview_organization_operation200_response_spec.rb +84 -0
  374. data/spec/models/preview_organization_operation_request_spec.rb +58 -0
  375. data/spec/models/project_detail_resource_competitors_inner_spec.rb +54 -0
  376. data/spec/models/project_detail_resource_spec.rb +82 -0
  377. data/spec/models/project_resource_spec.rb +136 -0
  378. data/spec/models/projected_monthly_checks_resource_spec.rb +42 -0
  379. data/spec/models/query_cluster_resource_spec.rb +48 -0
  380. data/spec/models/report_ai_response_request_spec.rb +52 -0
  381. data/spec/models/search_result_resource_spec.rb +78 -0
  382. data/spec/models/search_snapshot_resource_spec.rb +66 -0
  383. data/spec/models/search_tracked_queries200_response_spec.rb +42 -0
  384. data/spec/models/shopping_offer_resource_spec.rb +96 -0
  385. data/spec/models/shopping_snapshot_resource_spec.rb +66 -0
  386. data/spec/models/start_brand_discovery_job_request_spec.rb +42 -0
  387. data/spec/models/start_brand_name_suggestion_job_request_spec.rb +54 -0
  388. data/spec/models/start_clustering_job_request_data_spec.rb +52 -0
  389. data/spec/models/start_keyword_discovery_job_request_spec.rb +54 -0
  390. data/spec/models/start_prompt_discovery_job_request_spec.rb +54 -0
  391. data/spec/models/submitted_checks_resource_spec.rb +42 -0
  392. data/spec/models/subscription_resource_spec.rb +120 -0
  393. data/spec/models/tracked_query_count_resource_spec.rb +42 -0
  394. data/spec/models/tracked_query_detail_resource_spec.rb +108 -0
  395. data/spec/models/tracked_query_resource_spec.rb +150 -0
  396. data/spec/models/tracked_query_usage_resource_spec.rb +36 -0
  397. data/spec/models/update_organization_request_spec.rb +48 -0
  398. data/spec/models/update_project_brand_profile_request_spec.rb +42 -0
  399. data/spec/models/update_project_request_spec.rb +36 -0
  400. data/spec/spec_helper.rb +111 -0
  401. metadata +641 -0
@@ -0,0 +1,798 @@
1
+ =begin
2
+ #Mencoro API
3
+
4
+ #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`.
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
+ # One keyword of a project, its variants and its metrics over the requested window
18
+ class KeywordListingResource < ApiModelBase
19
+ # The keyword as a human types it, picked from the variants for display.
20
+ attr_accessor :keyword
21
+
22
+ # The grouping key: the keyword lower-cased and unaccented. Unique within the project, and the stable way to match a row across pages.
23
+ attr_accessor :keyword_normalized
24
+
25
+ # Tracked queries behind this row that the current filters selected.
26
+ attr_accessor :variant_count
27
+
28
+ # Ids of those tracked queries. Accepted by the single tracked-query operation.
29
+ attr_accessor :variant_ids
30
+
31
+ # Distinct engines across the variants, not a single engine.
32
+ attr_accessor :engines
33
+
34
+ # Distinct ISO-3166 alpha-2 countries across the variants.
35
+ attr_accessor :countries
36
+
37
+ # Distinct keyword clusters the variants belong to. Empty when none of them is clustered.
38
+ attr_accessor :query_cluster_ids
39
+
40
+ # Whether at least one variant belongs to no cluster.
41
+ attr_accessor :has_unclustered_variant
42
+
43
+ # \"mixed\" when the variants disagree; otherwise the one status they share.
44
+ attr_accessor :status_summary
45
+
46
+ # Distinct statuses across the variants.
47
+ attr_accessor :statuses
48
+
49
+ # Distinct check frequencies across the variants.
50
+ attr_accessor :check_frequencies
51
+
52
+ # Distinct pass counts across the variants. A pass is one budget unit per check.
53
+ attr_accessor :n_passes_values
54
+
55
+ # The most recent completed check across the variants. Null when none has ever completed — not a check that found nothing.
56
+ attr_accessor :last_checked_at
57
+
58
+ # Average position in traditional search over the window. 1-based, LOWER is better.
59
+ attr_accessor :avg_serp_position
60
+
61
+ # Signed improvement in avgSerpPosition against the previous window. Positive is better.
62
+ attr_accessor :trend_serp
63
+
64
+ # Average position in shopping results over the window. 1-based, LOWER is better.
65
+ attr_accessor :avg_shopping_position
66
+
67
+ # Signed improvement in avgShoppingPosition. Positive is better.
68
+ attr_accessor :trend_shopping
69
+
70
+ # Average position of the brand mention inside the AI answer. 1-based, LOWER is better.
71
+ attr_accessor :avg_mention_position
72
+
73
+ # Signed improvement in avgMentionPosition. Positive is better.
74
+ attr_accessor :trend_mention
75
+
76
+ # Average position of a cited link to the brand. 1-based, LOWER is better.
77
+ attr_accessor :avg_link_position
78
+
79
+ # Signed improvement in avgLinkPosition. Positive is better.
80
+ attr_accessor :trend_link
81
+
82
+ # Day-to-day spread of the mention position (a standard deviation): LOWER means steadier.
83
+ attr_accessor :mention_position_stability
84
+
85
+ # Signed improvement in mentionPositionStability. Positive means steadier than the previous window.
86
+ attr_accessor :trend_stability
87
+
88
+ # 0-100 weighted sentiment score of the mentions; HIGHER is better. Null when there were no mentions to score.
89
+ attr_accessor :positivity_index
90
+
91
+ # Signed improvement in positivityIndex. Positive is better.
92
+ attr_accessor :trend_positivity
93
+
94
+ # 0-100 share of AI captures in the window that mentioned the brand; HIGHER is better.
95
+ attr_accessor :mention_rate
96
+
97
+ # Signed improvement in mentionRate. Positive is better.
98
+ attr_accessor :trend_mention_rate
99
+
100
+ # 0-100 share of traditional-search captures in the window that ranked the brand; HIGHER is better.
101
+ attr_accessor :serp_rate
102
+
103
+ # Signed improvement in serpRate. Positive is better.
104
+ attr_accessor :trend_serp_rate
105
+
106
+ # 0-100 share of the weighted AI mentions against every tracked brand; HIGHER is better.
107
+ attr_accessor :share_of_voice
108
+
109
+ # Signed improvement in shareOfVoice. Positive is better.
110
+ attr_accessor :trend_share_of_voice
111
+
112
+ # Positive brand mentions counted in the window. Zero here really is zero.
113
+ attr_accessor :sentiment_positive
114
+
115
+ # Neutral brand mentions counted in the window.
116
+ attr_accessor :sentiment_neutral
117
+
118
+ # Negative brand mentions counted in the window.
119
+ attr_accessor :sentiment_negative
120
+
121
+ # Mentions per AI engine per day with a capture, over the window. Not a total: the window total is not part of this contract.
122
+ attr_accessor :avg_mention_count
123
+
124
+ attr_accessor :mention_type_counts
125
+
126
+ class EnumAttributeValidator
127
+ attr_reader :datatype
128
+ attr_reader :allowable_values
129
+
130
+ def initialize(datatype, allowable_values)
131
+ @allowable_values = allowable_values.map do |value|
132
+ case datatype.to_s
133
+ when /Integer/i
134
+ value.to_i
135
+ when /Float/i
136
+ value.to_f
137
+ else
138
+ value
139
+ end
140
+ end
141
+ end
142
+
143
+ def valid?(value)
144
+ !value || allowable_values.include?(value)
145
+ end
146
+ end
147
+
148
+ # Attribute mapping from ruby-style variable name to JSON key.
149
+ def self.attribute_map
150
+ {
151
+ :'keyword' => :'keyword',
152
+ :'keyword_normalized' => :'keywordNormalized',
153
+ :'variant_count' => :'variantCount',
154
+ :'variant_ids' => :'variantIds',
155
+ :'engines' => :'engines',
156
+ :'countries' => :'countries',
157
+ :'query_cluster_ids' => :'queryClusterIds',
158
+ :'has_unclustered_variant' => :'hasUnclusteredVariant',
159
+ :'status_summary' => :'statusSummary',
160
+ :'statuses' => :'statuses',
161
+ :'check_frequencies' => :'checkFrequencies',
162
+ :'n_passes_values' => :'nPassesValues',
163
+ :'last_checked_at' => :'lastCheckedAt',
164
+ :'avg_serp_position' => :'avgSerpPosition',
165
+ :'trend_serp' => :'trendSerp',
166
+ :'avg_shopping_position' => :'avgShoppingPosition',
167
+ :'trend_shopping' => :'trendShopping',
168
+ :'avg_mention_position' => :'avgMentionPosition',
169
+ :'trend_mention' => :'trendMention',
170
+ :'avg_link_position' => :'avgLinkPosition',
171
+ :'trend_link' => :'trendLink',
172
+ :'mention_position_stability' => :'mentionPositionStability',
173
+ :'trend_stability' => :'trendStability',
174
+ :'positivity_index' => :'positivityIndex',
175
+ :'trend_positivity' => :'trendPositivity',
176
+ :'mention_rate' => :'mentionRate',
177
+ :'trend_mention_rate' => :'trendMentionRate',
178
+ :'serp_rate' => :'serpRate',
179
+ :'trend_serp_rate' => :'trendSerpRate',
180
+ :'share_of_voice' => :'shareOfVoice',
181
+ :'trend_share_of_voice' => :'trendShareOfVoice',
182
+ :'sentiment_positive' => :'sentimentPositive',
183
+ :'sentiment_neutral' => :'sentimentNeutral',
184
+ :'sentiment_negative' => :'sentimentNegative',
185
+ :'avg_mention_count' => :'avgMentionCount',
186
+ :'mention_type_counts' => :'mentionTypeCounts'
187
+ }
188
+ end
189
+
190
+ # Returns attribute mapping this model knows about
191
+ def self.acceptable_attribute_map
192
+ attribute_map
193
+ end
194
+
195
+ # Returns all the JSON keys this model knows about
196
+ def self.acceptable_attributes
197
+ acceptable_attribute_map.values
198
+ end
199
+
200
+ # Attribute type mapping.
201
+ def self.openapi_types
202
+ {
203
+ :'keyword' => :'String',
204
+ :'keyword_normalized' => :'String',
205
+ :'variant_count' => :'Integer',
206
+ :'variant_ids' => :'Array<String>',
207
+ :'engines' => :'Array<String>',
208
+ :'countries' => :'Array<String>',
209
+ :'query_cluster_ids' => :'Array<String>',
210
+ :'has_unclustered_variant' => :'Boolean',
211
+ :'status_summary' => :'String',
212
+ :'statuses' => :'Array<String>',
213
+ :'check_frequencies' => :'Array<String>',
214
+ :'n_passes_values' => :'Array<Integer>',
215
+ :'last_checked_at' => :'Time',
216
+ :'avg_serp_position' => :'Float',
217
+ :'trend_serp' => :'Float',
218
+ :'avg_shopping_position' => :'Float',
219
+ :'trend_shopping' => :'Float',
220
+ :'avg_mention_position' => :'Float',
221
+ :'trend_mention' => :'Float',
222
+ :'avg_link_position' => :'Float',
223
+ :'trend_link' => :'Float',
224
+ :'mention_position_stability' => :'Float',
225
+ :'trend_stability' => :'Float',
226
+ :'positivity_index' => :'Integer',
227
+ :'trend_positivity' => :'Integer',
228
+ :'mention_rate' => :'Integer',
229
+ :'trend_mention_rate' => :'Integer',
230
+ :'serp_rate' => :'Integer',
231
+ :'trend_serp_rate' => :'Integer',
232
+ :'share_of_voice' => :'Float',
233
+ :'trend_share_of_voice' => :'Float',
234
+ :'sentiment_positive' => :'Integer',
235
+ :'sentiment_neutral' => :'Integer',
236
+ :'sentiment_negative' => :'Integer',
237
+ :'avg_mention_count' => :'Float',
238
+ :'mention_type_counts' => :'KeywordListingResourceMentionTypeCounts'
239
+ }
240
+ end
241
+
242
+ # List of attributes with nullable: true
243
+ def self.openapi_nullable
244
+ Set.new([
245
+ :'last_checked_at',
246
+ :'avg_serp_position',
247
+ :'trend_serp',
248
+ :'avg_shopping_position',
249
+ :'trend_shopping',
250
+ :'avg_mention_position',
251
+ :'trend_mention',
252
+ :'avg_link_position',
253
+ :'trend_link',
254
+ :'mention_position_stability',
255
+ :'trend_stability',
256
+ :'positivity_index',
257
+ :'trend_positivity',
258
+ :'mention_rate',
259
+ :'trend_mention_rate',
260
+ :'serp_rate',
261
+ :'trend_serp_rate',
262
+ :'share_of_voice',
263
+ :'trend_share_of_voice',
264
+ :'avg_mention_count',
265
+ ])
266
+ end
267
+
268
+ # Initializes the object
269
+ # @param [Hash] attributes Model attributes in the form of hash
270
+ def initialize(attributes = {})
271
+ if (!attributes.is_a?(Hash))
272
+ fail ArgumentError, "The input argument (attributes) must be a hash in `Mencoro::KeywordListingResource` initialize method"
273
+ end
274
+
275
+ # check to see if the attribute exists and convert string to symbol for hash key
276
+ acceptable_attribute_map = self.class.acceptable_attribute_map
277
+ attributes = attributes.each_with_object({}) { |(k, v), h|
278
+ if (!acceptable_attribute_map.key?(k.to_sym))
279
+ fail ArgumentError, "`#{k}` is not a valid attribute in `Mencoro::KeywordListingResource`. Please check the name to make sure it's valid. List of attributes: " + acceptable_attribute_map.keys.inspect
280
+ end
281
+ h[k.to_sym] = v
282
+ }
283
+
284
+ if attributes.key?(:'keyword')
285
+ self.keyword = attributes[:'keyword']
286
+ else
287
+ self.keyword = nil
288
+ end
289
+
290
+ if attributes.key?(:'keyword_normalized')
291
+ self.keyword_normalized = attributes[:'keyword_normalized']
292
+ else
293
+ self.keyword_normalized = nil
294
+ end
295
+
296
+ if attributes.key?(:'variant_count')
297
+ self.variant_count = attributes[:'variant_count']
298
+ else
299
+ self.variant_count = nil
300
+ end
301
+
302
+ if attributes.key?(:'variant_ids')
303
+ if (value = attributes[:'variant_ids']).is_a?(Array)
304
+ self.variant_ids = value
305
+ end
306
+ else
307
+ self.variant_ids = nil
308
+ end
309
+
310
+ if attributes.key?(:'engines')
311
+ if (value = attributes[:'engines']).is_a?(Array)
312
+ self.engines = value
313
+ end
314
+ else
315
+ self.engines = nil
316
+ end
317
+
318
+ if attributes.key?(:'countries')
319
+ if (value = attributes[:'countries']).is_a?(Array)
320
+ self.countries = value
321
+ end
322
+ else
323
+ self.countries = nil
324
+ end
325
+
326
+ if attributes.key?(:'query_cluster_ids')
327
+ if (value = attributes[:'query_cluster_ids']).is_a?(Array)
328
+ self.query_cluster_ids = value
329
+ end
330
+ else
331
+ self.query_cluster_ids = nil
332
+ end
333
+
334
+ if attributes.key?(:'has_unclustered_variant')
335
+ self.has_unclustered_variant = attributes[:'has_unclustered_variant']
336
+ else
337
+ self.has_unclustered_variant = nil
338
+ end
339
+
340
+ if attributes.key?(:'status_summary')
341
+ self.status_summary = attributes[:'status_summary']
342
+ else
343
+ self.status_summary = nil
344
+ end
345
+
346
+ if attributes.key?(:'statuses')
347
+ if (value = attributes[:'statuses']).is_a?(Array)
348
+ self.statuses = value
349
+ end
350
+ else
351
+ self.statuses = nil
352
+ end
353
+
354
+ if attributes.key?(:'check_frequencies')
355
+ if (value = attributes[:'check_frequencies']).is_a?(Array)
356
+ self.check_frequencies = value
357
+ end
358
+ else
359
+ self.check_frequencies = nil
360
+ end
361
+
362
+ if attributes.key?(:'n_passes_values')
363
+ if (value = attributes[:'n_passes_values']).is_a?(Array)
364
+ self.n_passes_values = value
365
+ end
366
+ else
367
+ self.n_passes_values = nil
368
+ end
369
+
370
+ if attributes.key?(:'last_checked_at')
371
+ self.last_checked_at = attributes[:'last_checked_at']
372
+ end
373
+
374
+ if attributes.key?(:'avg_serp_position')
375
+ self.avg_serp_position = attributes[:'avg_serp_position']
376
+ end
377
+
378
+ if attributes.key?(:'trend_serp')
379
+ self.trend_serp = attributes[:'trend_serp']
380
+ end
381
+
382
+ if attributes.key?(:'avg_shopping_position')
383
+ self.avg_shopping_position = attributes[:'avg_shopping_position']
384
+ end
385
+
386
+ if attributes.key?(:'trend_shopping')
387
+ self.trend_shopping = attributes[:'trend_shopping']
388
+ end
389
+
390
+ if attributes.key?(:'avg_mention_position')
391
+ self.avg_mention_position = attributes[:'avg_mention_position']
392
+ end
393
+
394
+ if attributes.key?(:'trend_mention')
395
+ self.trend_mention = attributes[:'trend_mention']
396
+ end
397
+
398
+ if attributes.key?(:'avg_link_position')
399
+ self.avg_link_position = attributes[:'avg_link_position']
400
+ end
401
+
402
+ if attributes.key?(:'trend_link')
403
+ self.trend_link = attributes[:'trend_link']
404
+ end
405
+
406
+ if attributes.key?(:'mention_position_stability')
407
+ self.mention_position_stability = attributes[:'mention_position_stability']
408
+ end
409
+
410
+ if attributes.key?(:'trend_stability')
411
+ self.trend_stability = attributes[:'trend_stability']
412
+ end
413
+
414
+ if attributes.key?(:'positivity_index')
415
+ self.positivity_index = attributes[:'positivity_index']
416
+ end
417
+
418
+ if attributes.key?(:'trend_positivity')
419
+ self.trend_positivity = attributes[:'trend_positivity']
420
+ end
421
+
422
+ if attributes.key?(:'mention_rate')
423
+ self.mention_rate = attributes[:'mention_rate']
424
+ end
425
+
426
+ if attributes.key?(:'trend_mention_rate')
427
+ self.trend_mention_rate = attributes[:'trend_mention_rate']
428
+ end
429
+
430
+ if attributes.key?(:'serp_rate')
431
+ self.serp_rate = attributes[:'serp_rate']
432
+ end
433
+
434
+ if attributes.key?(:'trend_serp_rate')
435
+ self.trend_serp_rate = attributes[:'trend_serp_rate']
436
+ end
437
+
438
+ if attributes.key?(:'share_of_voice')
439
+ self.share_of_voice = attributes[:'share_of_voice']
440
+ end
441
+
442
+ if attributes.key?(:'trend_share_of_voice')
443
+ self.trend_share_of_voice = attributes[:'trend_share_of_voice']
444
+ end
445
+
446
+ if attributes.key?(:'sentiment_positive')
447
+ self.sentiment_positive = attributes[:'sentiment_positive']
448
+ else
449
+ self.sentiment_positive = nil
450
+ end
451
+
452
+ if attributes.key?(:'sentiment_neutral')
453
+ self.sentiment_neutral = attributes[:'sentiment_neutral']
454
+ else
455
+ self.sentiment_neutral = nil
456
+ end
457
+
458
+ if attributes.key?(:'sentiment_negative')
459
+ self.sentiment_negative = attributes[:'sentiment_negative']
460
+ else
461
+ self.sentiment_negative = nil
462
+ end
463
+
464
+ if attributes.key?(:'avg_mention_count')
465
+ self.avg_mention_count = attributes[:'avg_mention_count']
466
+ end
467
+
468
+ if attributes.key?(:'mention_type_counts')
469
+ self.mention_type_counts = attributes[:'mention_type_counts']
470
+ else
471
+ self.mention_type_counts = nil
472
+ end
473
+ end
474
+
475
+ # Show invalid properties with the reasons. Usually used together with valid?
476
+ # @return Array for valid properties with the reasons
477
+ def list_invalid_properties
478
+ warn '[DEPRECATED] the `list_invalid_properties` method is obsolete'
479
+ invalid_properties = Array.new
480
+ if @keyword.nil?
481
+ invalid_properties.push('invalid value for "keyword", keyword cannot be nil.')
482
+ end
483
+
484
+ if @keyword_normalized.nil?
485
+ invalid_properties.push('invalid value for "keyword_normalized", keyword_normalized cannot be nil.')
486
+ end
487
+
488
+ if @variant_count.nil?
489
+ invalid_properties.push('invalid value for "variant_count", variant_count cannot be nil.')
490
+ end
491
+
492
+ if @variant_ids.nil?
493
+ invalid_properties.push('invalid value for "variant_ids", variant_ids cannot be nil.')
494
+ end
495
+
496
+ if @engines.nil?
497
+ invalid_properties.push('invalid value for "engines", engines cannot be nil.')
498
+ end
499
+
500
+ if @countries.nil?
501
+ invalid_properties.push('invalid value for "countries", countries cannot be nil.')
502
+ end
503
+
504
+ if @query_cluster_ids.nil?
505
+ invalid_properties.push('invalid value for "query_cluster_ids", query_cluster_ids cannot be nil.')
506
+ end
507
+
508
+ if @has_unclustered_variant.nil?
509
+ invalid_properties.push('invalid value for "has_unclustered_variant", has_unclustered_variant cannot be nil.')
510
+ end
511
+
512
+ if @status_summary.nil?
513
+ invalid_properties.push('invalid value for "status_summary", status_summary cannot be nil.')
514
+ end
515
+
516
+ if @statuses.nil?
517
+ invalid_properties.push('invalid value for "statuses", statuses cannot be nil.')
518
+ end
519
+
520
+ if @check_frequencies.nil?
521
+ invalid_properties.push('invalid value for "check_frequencies", check_frequencies cannot be nil.')
522
+ end
523
+
524
+ if @n_passes_values.nil?
525
+ invalid_properties.push('invalid value for "n_passes_values", n_passes_values cannot be nil.')
526
+ end
527
+
528
+ if @sentiment_positive.nil?
529
+ invalid_properties.push('invalid value for "sentiment_positive", sentiment_positive cannot be nil.')
530
+ end
531
+
532
+ if @sentiment_neutral.nil?
533
+ invalid_properties.push('invalid value for "sentiment_neutral", sentiment_neutral cannot be nil.')
534
+ end
535
+
536
+ if @sentiment_negative.nil?
537
+ invalid_properties.push('invalid value for "sentiment_negative", sentiment_negative cannot be nil.')
538
+ end
539
+
540
+ if @mention_type_counts.nil?
541
+ invalid_properties.push('invalid value for "mention_type_counts", mention_type_counts cannot be nil.')
542
+ end
543
+
544
+ invalid_properties
545
+ end
546
+
547
+ # Check to see if the all the properties in the model are valid
548
+ # @return true if the model is valid
549
+ def valid?
550
+ warn '[DEPRECATED] the `valid?` method is obsolete'
551
+ return false if @keyword.nil?
552
+ return false if @keyword_normalized.nil?
553
+ return false if @variant_count.nil?
554
+ return false if @variant_ids.nil?
555
+ return false if @engines.nil?
556
+ return false if @countries.nil?
557
+ return false if @query_cluster_ids.nil?
558
+ return false if @has_unclustered_variant.nil?
559
+ return false if @status_summary.nil?
560
+ status_summary_validator = EnumAttributeValidator.new('String', ["active", "paused", "mixed"])
561
+ return false unless status_summary_validator.valid?(@status_summary)
562
+ return false if @statuses.nil?
563
+ return false if @check_frequencies.nil?
564
+ return false if @n_passes_values.nil?
565
+ return false if @sentiment_positive.nil?
566
+ return false if @sentiment_neutral.nil?
567
+ return false if @sentiment_negative.nil?
568
+ return false if @mention_type_counts.nil?
569
+ true
570
+ end
571
+
572
+ # Custom attribute writer method with validation
573
+ # @param [Object] keyword Value to be assigned
574
+ def keyword=(keyword)
575
+ if keyword.nil?
576
+ fail ArgumentError, 'keyword cannot be nil'
577
+ end
578
+
579
+ @keyword = keyword
580
+ end
581
+
582
+ # Custom attribute writer method with validation
583
+ # @param [Object] keyword_normalized Value to be assigned
584
+ def keyword_normalized=(keyword_normalized)
585
+ if keyword_normalized.nil?
586
+ fail ArgumentError, 'keyword_normalized cannot be nil'
587
+ end
588
+
589
+ @keyword_normalized = keyword_normalized
590
+ end
591
+
592
+ # Custom attribute writer method with validation
593
+ # @param [Object] variant_count Value to be assigned
594
+ def variant_count=(variant_count)
595
+ if variant_count.nil?
596
+ fail ArgumentError, 'variant_count cannot be nil'
597
+ end
598
+
599
+ @variant_count = variant_count
600
+ end
601
+
602
+ # Custom attribute writer method with validation
603
+ # @param [Object] variant_ids Value to be assigned
604
+ def variant_ids=(variant_ids)
605
+ if variant_ids.nil?
606
+ fail ArgumentError, 'variant_ids cannot be nil'
607
+ end
608
+
609
+ @variant_ids = variant_ids
610
+ end
611
+
612
+ # Custom attribute writer method with validation
613
+ # @param [Object] countries Value to be assigned
614
+ def countries=(countries)
615
+ if countries.nil?
616
+ fail ArgumentError, 'countries cannot be nil'
617
+ end
618
+
619
+ @countries = countries
620
+ end
621
+
622
+ # Custom attribute writer method with validation
623
+ # @param [Object] query_cluster_ids Value to be assigned
624
+ def query_cluster_ids=(query_cluster_ids)
625
+ if query_cluster_ids.nil?
626
+ fail ArgumentError, 'query_cluster_ids cannot be nil'
627
+ end
628
+
629
+ @query_cluster_ids = query_cluster_ids
630
+ end
631
+
632
+ # Custom attribute writer method with validation
633
+ # @param [Object] has_unclustered_variant Value to be assigned
634
+ def has_unclustered_variant=(has_unclustered_variant)
635
+ if has_unclustered_variant.nil?
636
+ fail ArgumentError, 'has_unclustered_variant cannot be nil'
637
+ end
638
+
639
+ @has_unclustered_variant = has_unclustered_variant
640
+ end
641
+
642
+ # Custom attribute writer method checking allowed values (enum).
643
+ # @param [Object] status_summary Object to be assigned
644
+ def status_summary=(status_summary)
645
+ validator = EnumAttributeValidator.new('String', ["active", "paused", "mixed"])
646
+ unless validator.valid?(status_summary)
647
+ fail ArgumentError, "invalid value for \"status_summary\", must be one of #{validator.allowable_values}."
648
+ end
649
+ @status_summary = status_summary
650
+ end
651
+
652
+ # Custom attribute writer method with validation
653
+ # @param [Object] n_passes_values Value to be assigned
654
+ def n_passes_values=(n_passes_values)
655
+ if n_passes_values.nil?
656
+ fail ArgumentError, 'n_passes_values cannot be nil'
657
+ end
658
+
659
+ @n_passes_values = n_passes_values
660
+ end
661
+
662
+ # Custom attribute writer method with validation
663
+ # @param [Object] sentiment_positive Value to be assigned
664
+ def sentiment_positive=(sentiment_positive)
665
+ if sentiment_positive.nil?
666
+ fail ArgumentError, 'sentiment_positive cannot be nil'
667
+ end
668
+
669
+ @sentiment_positive = sentiment_positive
670
+ end
671
+
672
+ # Custom attribute writer method with validation
673
+ # @param [Object] sentiment_neutral Value to be assigned
674
+ def sentiment_neutral=(sentiment_neutral)
675
+ if sentiment_neutral.nil?
676
+ fail ArgumentError, 'sentiment_neutral cannot be nil'
677
+ end
678
+
679
+ @sentiment_neutral = sentiment_neutral
680
+ end
681
+
682
+ # Custom attribute writer method with validation
683
+ # @param [Object] sentiment_negative Value to be assigned
684
+ def sentiment_negative=(sentiment_negative)
685
+ if sentiment_negative.nil?
686
+ fail ArgumentError, 'sentiment_negative cannot be nil'
687
+ end
688
+
689
+ @sentiment_negative = sentiment_negative
690
+ end
691
+
692
+ # Custom attribute writer method with validation
693
+ # @param [Object] mention_type_counts Value to be assigned
694
+ def mention_type_counts=(mention_type_counts)
695
+ if mention_type_counts.nil?
696
+ fail ArgumentError, 'mention_type_counts cannot be nil'
697
+ end
698
+
699
+ @mention_type_counts = mention_type_counts
700
+ end
701
+
702
+ # Checks equality by comparing each attribute.
703
+ # @param [Object] Object to be compared
704
+ def ==(o)
705
+ return true if self.equal?(o)
706
+ self.class == o.class &&
707
+ keyword == o.keyword &&
708
+ keyword_normalized == o.keyword_normalized &&
709
+ variant_count == o.variant_count &&
710
+ variant_ids == o.variant_ids &&
711
+ engines == o.engines &&
712
+ countries == o.countries &&
713
+ query_cluster_ids == o.query_cluster_ids &&
714
+ has_unclustered_variant == o.has_unclustered_variant &&
715
+ status_summary == o.status_summary &&
716
+ statuses == o.statuses &&
717
+ check_frequencies == o.check_frequencies &&
718
+ n_passes_values == o.n_passes_values &&
719
+ last_checked_at == o.last_checked_at &&
720
+ avg_serp_position == o.avg_serp_position &&
721
+ trend_serp == o.trend_serp &&
722
+ avg_shopping_position == o.avg_shopping_position &&
723
+ trend_shopping == o.trend_shopping &&
724
+ avg_mention_position == o.avg_mention_position &&
725
+ trend_mention == o.trend_mention &&
726
+ avg_link_position == o.avg_link_position &&
727
+ trend_link == o.trend_link &&
728
+ mention_position_stability == o.mention_position_stability &&
729
+ trend_stability == o.trend_stability &&
730
+ positivity_index == o.positivity_index &&
731
+ trend_positivity == o.trend_positivity &&
732
+ mention_rate == o.mention_rate &&
733
+ trend_mention_rate == o.trend_mention_rate &&
734
+ serp_rate == o.serp_rate &&
735
+ trend_serp_rate == o.trend_serp_rate &&
736
+ share_of_voice == o.share_of_voice &&
737
+ trend_share_of_voice == o.trend_share_of_voice &&
738
+ sentiment_positive == o.sentiment_positive &&
739
+ sentiment_neutral == o.sentiment_neutral &&
740
+ sentiment_negative == o.sentiment_negative &&
741
+ avg_mention_count == o.avg_mention_count &&
742
+ mention_type_counts == o.mention_type_counts
743
+ end
744
+
745
+ # @see the `==` method
746
+ # @param [Object] Object to be compared
747
+ def eql?(o)
748
+ self == o
749
+ end
750
+
751
+ # Calculates hash code according to all attributes.
752
+ # @return [Integer] Hash code
753
+ def hash
754
+ [keyword, keyword_normalized, variant_count, variant_ids, engines, countries, query_cluster_ids, has_unclustered_variant, status_summary, statuses, check_frequencies, n_passes_values, last_checked_at, 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, positivity_index, trend_positivity, mention_rate, trend_mention_rate, serp_rate, trend_serp_rate, share_of_voice, trend_share_of_voice, sentiment_positive, sentiment_neutral, sentiment_negative, avg_mention_count, mention_type_counts].hash
755
+ end
756
+
757
+ # Builds the object from hash
758
+ # @param [Hash] attributes Model attributes in the form of hash
759
+ # @return [Object] Returns the model itself
760
+ def self.build_from_hash(attributes)
761
+ return nil unless attributes.is_a?(Hash)
762
+ attributes = attributes.transform_keys(&:to_sym)
763
+ transformed_hash = {}
764
+ openapi_types.each_pair do |key, type|
765
+ if attributes.key?(attribute_map[key]) && attributes[attribute_map[key]].nil?
766
+ transformed_hash["#{key}"] = nil
767
+ elsif type =~ /\AArray<(.*)>/i
768
+ # check to ensure the input is an array given that the attribute
769
+ # is documented as an array but the input is not
770
+ if attributes[attribute_map[key]].is_a?(Array)
771
+ transformed_hash["#{key}"] = attributes[attribute_map[key]].map { |v| _deserialize($1, v) }
772
+ end
773
+ elsif !attributes[attribute_map[key]].nil?
774
+ transformed_hash["#{key}"] = _deserialize(type, attributes[attribute_map[key]])
775
+ end
776
+ end
777
+ new(transformed_hash)
778
+ end
779
+
780
+ # Returns the object in the form of hash
781
+ # @return [Hash] Returns the object in the form of hash
782
+ def to_hash
783
+ hash = {}
784
+ self.class.attribute_map.each_pair do |attr, param|
785
+ value = self.send(attr)
786
+ if value.nil?
787
+ is_nullable = self.class.openapi_nullable.include?(attr)
788
+ next if !is_nullable || (is_nullable && !instance_variable_defined?(:"@#{attr}"))
789
+ end
790
+
791
+ hash[param] = _to_hash(value)
792
+ end
793
+ hash
794
+ end
795
+
796
+ end
797
+
798
+ end