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
@@ -1,7 +1,7 @@
1
1
  =begin
2
2
  #Mencoro API
3
3
 
4
- #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`.
4
+ #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`. Every write operation requires an `Idempotency-Key` header: a retry carrying the same key and body within 30 days is answered from the stored result without running again; after 30 days the key is forgotten and a retry runs as a new operation.
5
5
 
6
6
  The version of the OpenAPI document: 1.0.0
7
7
  Contact: support@mencoro.com
@@ -21,12 +21,22 @@ module Mencoro
21
21
 
22
22
  attr_accessor :status
23
23
 
24
+ # Configured tracked queries of the project, paused ones included.
24
25
  attr_accessor :tracked_query_count
25
26
 
27
+ # How many of trackedQueryCount run on an AI answer engine (ChatGPT, Claude, Perplexity, Google AI Overview, Google AI Mode).
28
+ attr_accessor :ai_tracked_query_count
29
+
30
+ # How many of trackedQueryCount run on classic Google SERP.
31
+ attr_accessor :serp_tracked_query_count
32
+
33
+ # How many of trackedQueryCount run on Google Shopping.
34
+ attr_accessor :shopping_tracked_query_count
35
+
26
36
  # 0-100 percentage share of weighted AI mentions against all tracked brands; higher is better. Null when the project has no rank data yet.
27
37
  attr_accessor :share_of_voice
28
38
 
29
- # 0-100 percentage of tracked queries with a result; higher is better. Null when the project has no rank data yet.
39
+ # 0-100 percentage of AI checks (one per tracked query x engine x UTC day) across all retained data that mentioned the brand, each check counted as the share of its passes that did; higher is better. Null when the project has no rank data yet.
30
40
  attr_accessor :mention_rate
31
41
 
32
42
  # 1-based average rank of the brand within the answer; LOWER is better. Null when the project has no rank data yet.
@@ -42,6 +52,9 @@ module Mencoro
42
52
  :'name' => :'name',
43
53
  :'status' => :'status',
44
54
  :'tracked_query_count' => :'trackedQueryCount',
55
+ :'ai_tracked_query_count' => :'aiTrackedQueryCount',
56
+ :'serp_tracked_query_count' => :'serpTrackedQueryCount',
57
+ :'shopping_tracked_query_count' => :'shoppingTrackedQueryCount',
45
58
  :'share_of_voice' => :'shareOfVoice',
46
59
  :'mention_rate' => :'mentionRate',
47
60
  :'avg_mention_position' => :'avgMentionPosition',
@@ -66,6 +79,9 @@ module Mencoro
66
79
  :'name' => :'String',
67
80
  :'status' => :'String',
68
81
  :'tracked_query_count' => :'Integer',
82
+ :'ai_tracked_query_count' => :'Integer',
83
+ :'serp_tracked_query_count' => :'Integer',
84
+ :'shopping_tracked_query_count' => :'Integer',
69
85
  :'share_of_voice' => :'Float',
70
86
  :'mention_rate' => :'Integer',
71
87
  :'avg_mention_position' => :'Float',
@@ -115,6 +131,18 @@ module Mencoro
115
131
  self.tracked_query_count = attributes[:'tracked_query_count']
116
132
  end
117
133
 
134
+ if attributes.key?(:'ai_tracked_query_count')
135
+ self.ai_tracked_query_count = attributes[:'ai_tracked_query_count']
136
+ end
137
+
138
+ if attributes.key?(:'serp_tracked_query_count')
139
+ self.serp_tracked_query_count = attributes[:'serp_tracked_query_count']
140
+ end
141
+
142
+ if attributes.key?(:'shopping_tracked_query_count')
143
+ self.shopping_tracked_query_count = attributes[:'shopping_tracked_query_count']
144
+ end
145
+
118
146
  if attributes.key?(:'share_of_voice')
119
147
  self.share_of_voice = attributes[:'share_of_voice']
120
148
  end
@@ -156,6 +184,9 @@ module Mencoro
156
184
  name == o.name &&
157
185
  status == o.status &&
158
186
  tracked_query_count == o.tracked_query_count &&
187
+ ai_tracked_query_count == o.ai_tracked_query_count &&
188
+ serp_tracked_query_count == o.serp_tracked_query_count &&
189
+ shopping_tracked_query_count == o.shopping_tracked_query_count &&
159
190
  share_of_voice == o.share_of_voice &&
160
191
  mention_rate == o.mention_rate &&
161
192
  avg_mention_position == o.avg_mention_position &&
@@ -171,7 +202,7 @@ module Mencoro
171
202
  # Calculates hash code according to all attributes.
172
203
  # @return [Integer] Hash code
173
204
  def hash
174
- [project_id, name, status, tracked_query_count, share_of_voice, mention_rate, avg_mention_position, positivity_index].hash
205
+ [project_id, name, status, tracked_query_count, ai_tracked_query_count, serp_tracked_query_count, shopping_tracked_query_count, share_of_voice, mention_rate, avg_mention_position, positivity_index].hash
175
206
  end
176
207
 
177
208
  # Builds the object from hash
@@ -1,7 +1,7 @@
1
1
  =begin
2
2
  #Mencoro API
3
3
 
4
- #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`.
4
+ #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`. Every write operation requires an `Idempotency-Key` header: a retry carrying the same key and body within 30 days is answered from the stored result without running again; after 30 days the key is forgotten and a retry runs as a new operation.
5
5
 
6
6
  The version of the OpenAPI document: 1.0.0
7
7
  Contact: support@mencoro.com
@@ -1,7 +1,7 @@
1
1
  =begin
2
2
  #Mencoro API
3
3
 
4
- #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`.
4
+ #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`. Every write operation requires an `Idempotency-Key` header: a retry carrying the same key and body within 30 days is answered from the stored result without running again; after 30 days the key is forgotten and a retry runs as a new operation.
5
5
 
6
6
  The version of the OpenAPI document: 1.0.0
7
7
  Contact: support@mencoro.com
@@ -15,7 +15,7 @@ require 'time'
15
15
 
16
16
  module Mencoro
17
17
  class GetOrganizationStats200ResponseInvitations < ApiModelBase
18
- # Invitations still awaiting an answer. Accepted, cancelled and expired ones are excluded.
18
+ # Invitations still awaiting an answer. Accepted, cancelled and expired ones are excluded. Null for a member restricted to selected projects.
19
19
  attr_accessor :pending
20
20
 
21
21
  # Attribute mapping from ruby-style variable name to JSON key.
@@ -45,6 +45,7 @@ module Mencoro
45
45
  # List of attributes with nullable: true
46
46
  def self.openapi_nullable
47
47
  Set.new([
48
+ :'pending'
48
49
  ])
49
50
  end
50
51
 
@@ -92,11 +93,7 @@ module Mencoro
92
93
  # Custom attribute writer method with validation
93
94
  # @param [Object] pending Value to be assigned
94
95
  def pending=(pending)
95
- if pending.nil?
96
- fail ArgumentError, 'pending cannot be nil'
97
- end
98
-
99
- if pending < 0
96
+ if !pending.nil? && pending < 0
100
97
  fail ArgumentError, 'invalid value for "pending", must be greater than or equal to 0.'
101
98
  end
102
99
 
@@ -1,7 +1,7 @@
1
1
  =begin
2
2
  #Mencoro API
3
3
 
4
- #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`.
4
+ #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`. Every write operation requires an `Idempotency-Key` header: a retry carrying the same key and body within 30 days is answered from the stored result without running again; after 30 days the key is forgotten and a retry runs as a new operation.
5
5
 
6
6
  The version of the OpenAPI document: 1.0.0
7
7
  Contact: support@mencoro.com
@@ -15,7 +15,7 @@ require 'time'
15
15
 
16
16
  module Mencoro
17
17
  class GetOrganizationStats200ResponseMembers < ApiModelBase
18
- # Active memberships. Suspended members are excluded.
18
+ # Active memberships. Suspended members are excluded. Null for a member restricted to selected projects.
19
19
  attr_accessor :total
20
20
 
21
21
  # Attribute mapping from ruby-style variable name to JSON key.
@@ -45,6 +45,7 @@ module Mencoro
45
45
  # List of attributes with nullable: true
46
46
  def self.openapi_nullable
47
47
  Set.new([
48
+ :'total'
48
49
  ])
49
50
  end
50
51
 
@@ -92,11 +93,7 @@ module Mencoro
92
93
  # Custom attribute writer method with validation
93
94
  # @param [Object] total Value to be assigned
94
95
  def total=(total)
95
- if total.nil?
96
- fail ArgumentError, 'total cannot be nil'
97
- end
98
-
99
- if total < 0
96
+ if !total.nil? && total < 0
100
97
  fail ArgumentError, 'invalid value for "total", must be greater than or equal to 0.'
101
98
  end
102
99
 
@@ -1,7 +1,7 @@
1
1
  =begin
2
2
  #Mencoro API
3
3
 
4
- #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`.
4
+ #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`. Every write operation requires an `Idempotency-Key` header: a retry carrying the same key and body within 30 days is answered from the stored result without running again; after 30 days the key is forgotten and a retry runs as a new operation.
5
5
 
6
6
  The version of the OpenAPI document: 1.0.0
7
7
  Contact: support@mencoro.com
@@ -15,7 +15,7 @@ require 'time'
15
15
 
16
16
  module Mencoro
17
17
  class GetOrganizationStats200ResponseProjects < ApiModelBase
18
- # Every project in the organization, archived ones included.
18
+ # Every project of the organization the caller can access, archived ones included.
19
19
  attr_accessor :total
20
20
 
21
21
  # Projects that are not archived; never greater than `total`.
@@ -1,7 +1,7 @@
1
1
  =begin
2
2
  #Mencoro API
3
3
 
4
- #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`.
4
+ #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`. Every write operation requires an `Idempotency-Key` header: a retry carrying the same key and body within 30 days is answered from the stored result without running again; after 30 days the key is forgotten and a retry runs as a new operation.
5
5
 
6
6
  The version of the OpenAPI document: 1.0.0
7
7
  Contact: support@mencoro.com
@@ -1,7 +1,7 @@
1
1
  =begin
2
2
  #Mencoro API
3
3
 
4
- #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`.
4
+ #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`. Every write operation requires an `Idempotency-Key` header: a retry carrying the same key and body within 30 days is answered from the stored result without running again; after 30 days the key is forgotten and a retry runs as a new operation.
5
5
 
6
6
  The version of the OpenAPI document: 1.0.0
7
7
  Contact: support@mencoro.com
@@ -1,7 +1,7 @@
1
1
  =begin
2
2
  #Mencoro API
3
3
 
4
- #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`.
4
+ #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`. Every write operation requires an `Idempotency-Key` header: a retry carrying the same key and body within 30 days is answered from the stored result without running again; after 30 days the key is forgotten and a retry runs as a new operation.
5
5
 
6
6
  The version of the OpenAPI document: 1.0.0
7
7
  Contact: support@mencoro.com
@@ -1,7 +1,7 @@
1
1
  =begin
2
2
  #Mencoro API
3
3
 
4
- #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`.
4
+ #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`. Every write operation requires an `Idempotency-Key` header: a retry carrying the same key and body within 30 days is answered from the stored result without running again; after 30 days the key is forgotten and a retry runs as a new operation.
5
5
 
6
6
  The version of the OpenAPI document: 1.0.0
7
7
  Contact: support@mencoro.com
@@ -30,6 +30,12 @@ module Mencoro
30
30
 
31
31
  attr_accessor :accepted_at
32
32
 
33
+ # Which projects of the organization the invitee reaches on accepting: every project, or only projectIds
34
+ attr_accessor :project_access_mode
35
+
36
+ # The projects a selected access reaches, limited to those still in the organization; empty when the mode is all. It may be empty on selected once its projects left the organization, which grants nothing
37
+ attr_accessor :project_ids
38
+
33
39
  class EnumAttributeValidator
34
40
  attr_reader :datatype
35
41
  attr_reader :allowable_values
@@ -61,7 +67,9 @@ module Mencoro
61
67
  :'state' => :'state',
62
68
  :'created_at' => :'createdAt',
63
69
  :'expires_at' => :'expiresAt',
64
- :'accepted_at' => :'acceptedAt'
70
+ :'accepted_at' => :'acceptedAt',
71
+ :'project_access_mode' => :'projectAccessMode',
72
+ :'project_ids' => :'projectIds'
65
73
  }
66
74
  end
67
75
 
@@ -84,14 +92,16 @@ module Mencoro
84
92
  :'state' => :'String',
85
93
  :'created_at' => :'Time',
86
94
  :'expires_at' => :'Time',
87
- :'accepted_at' => :'Time'
95
+ :'accepted_at' => :'Time',
96
+ :'project_access_mode' => :'String',
97
+ :'project_ids' => :'Array<String>'
88
98
  }
89
99
  end
90
100
 
91
101
  # List of attributes with nullable: true
92
102
  def self.openapi_nullable
93
103
  Set.new([
94
- :'accepted_at'
104
+ :'accepted_at',
95
105
  ])
96
106
  end
97
107
 
@@ -150,6 +160,20 @@ module Mencoro
150
160
  if attributes.key?(:'accepted_at')
151
161
  self.accepted_at = attributes[:'accepted_at']
152
162
  end
163
+
164
+ if attributes.key?(:'project_access_mode')
165
+ self.project_access_mode = attributes[:'project_access_mode']
166
+ else
167
+ self.project_access_mode = nil
168
+ end
169
+
170
+ if attributes.key?(:'project_ids')
171
+ if (value = attributes[:'project_ids']).is_a?(Array)
172
+ self.project_ids = value
173
+ end
174
+ else
175
+ self.project_ids = nil
176
+ end
153
177
  end
154
178
 
155
179
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -181,6 +205,14 @@ module Mencoro
181
205
  invalid_properties.push('invalid value for "expires_at", expires_at cannot be nil.')
182
206
  end
183
207
 
208
+ if @project_access_mode.nil?
209
+ invalid_properties.push('invalid value for "project_access_mode", project_access_mode cannot be nil.')
210
+ end
211
+
212
+ if @project_ids.nil?
213
+ invalid_properties.push('invalid value for "project_ids", project_ids cannot be nil.')
214
+ end
215
+
184
216
  invalid_properties
185
217
  end
186
218
 
@@ -198,6 +230,10 @@ module Mencoro
198
230
  return false unless state_validator.valid?(@state)
199
231
  return false if @created_at.nil?
200
232
  return false if @expires_at.nil?
233
+ return false if @project_access_mode.nil?
234
+ project_access_mode_validator = EnumAttributeValidator.new('String', ["all", "selected"])
235
+ return false unless project_access_mode_validator.valid?(@project_access_mode)
236
+ return false if @project_ids.nil?
201
237
  true
202
238
  end
203
239
 
@@ -261,6 +297,26 @@ module Mencoro
261
297
  @expires_at = expires_at
262
298
  end
263
299
 
300
+ # Custom attribute writer method checking allowed values (enum).
301
+ # @param [Object] project_access_mode Object to be assigned
302
+ def project_access_mode=(project_access_mode)
303
+ validator = EnumAttributeValidator.new('String', ["all", "selected"])
304
+ unless validator.valid?(project_access_mode)
305
+ fail ArgumentError, "invalid value for \"project_access_mode\", must be one of #{validator.allowable_values}."
306
+ end
307
+ @project_access_mode = project_access_mode
308
+ end
309
+
310
+ # Custom attribute writer method with validation
311
+ # @param [Object] project_ids Value to be assigned
312
+ def project_ids=(project_ids)
313
+ if project_ids.nil?
314
+ fail ArgumentError, 'project_ids cannot be nil'
315
+ end
316
+
317
+ @project_ids = project_ids
318
+ end
319
+
264
320
  # Checks equality by comparing each attribute.
265
321
  # @param [Object] Object to be compared
266
322
  def ==(o)
@@ -272,7 +328,9 @@ module Mencoro
272
328
  state == o.state &&
273
329
  created_at == o.created_at &&
274
330
  expires_at == o.expires_at &&
275
- accepted_at == o.accepted_at
331
+ accepted_at == o.accepted_at &&
332
+ project_access_mode == o.project_access_mode &&
333
+ project_ids == o.project_ids
276
334
  end
277
335
 
278
336
  # @see the `==` method
@@ -284,7 +342,7 @@ module Mencoro
284
342
  # Calculates hash code according to all attributes.
285
343
  # @return [Integer] Hash code
286
344
  def hash
287
- [id, email, role, state, created_at, expires_at, accepted_at].hash
345
+ [id, email, role, state, created_at, expires_at, accepted_at, project_access_mode, project_ids].hash
288
346
  end
289
347
 
290
348
  # Builds the object from hash
@@ -1,7 +1,7 @@
1
1
  =begin
2
2
  #Mencoro API
3
3
 
4
- #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`.
4
+ #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`. Every write operation requires an `Idempotency-Key` header: a retry carrying the same key and body within 30 days is answered from the stored result without running again; after 30 days the key is forgotten and a retry runs as a new operation.
5
5
 
6
6
  The version of the OpenAPI document: 1.0.0
7
7
  Contact: support@mencoro.com
@@ -49,34 +49,34 @@ module Mencoro
49
49
  # Distinct check frequencies across the variants.
50
50
  attr_accessor :check_frequencies
51
51
 
52
- # Distinct pass counts across the variants. A pass is one budget unit per check.
52
+ # Distinct pass counts across the variants. Each Claude pass consumes five checks; each other engine pass consumes one.
53
53
  attr_accessor :n_passes_values
54
54
 
55
55
  # The most recent completed check across the variants. Null when none has ever completed — not a check that found nothing.
56
56
  attr_accessor :last_checked_at
57
57
 
58
- # Average position in traditional search over the window. 1-based, LOWER is better.
58
+ # Average position in traditional search over the window. 1-based, LOWER is better. A variant not checked in the window contributes its latest earlier measurement instead; see carriedPositions.
59
59
  attr_accessor :avg_serp_position
60
60
 
61
- # Signed improvement in avgSerpPosition against the previous window. Positive is better.
61
+ # Signed improvement in avgSerpPosition against the previous window. Positive is better. Null when carriedPositions.serp is set.
62
62
  attr_accessor :trend_serp
63
63
 
64
- # Average position in shopping results over the window. 1-based, LOWER is better.
64
+ # Average position in shopping results over the window. 1-based, LOWER is better. A variant not checked in the window contributes its latest earlier measurement instead; see carriedPositions.
65
65
  attr_accessor :avg_shopping_position
66
66
 
67
- # Signed improvement in avgShoppingPosition. Positive is better.
67
+ # Signed improvement in avgShoppingPosition. Positive is better. Null when carriedPositions.shopping is set.
68
68
  attr_accessor :trend_shopping
69
69
 
70
- # Average position of the brand mention inside the AI answer. 1-based, LOWER is better.
70
+ # Average position of the brand mention inside the AI answer. 1-based, LOWER is better. A variant not checked in the window contributes its latest earlier measurement instead; see carriedPositions.
71
71
  attr_accessor :avg_mention_position
72
72
 
73
- # Signed improvement in avgMentionPosition. Positive is better.
73
+ # Signed improvement in avgMentionPosition. Positive is better. Null when carriedPositions.mention is set.
74
74
  attr_accessor :trend_mention
75
75
 
76
- # Average position of a cited link to the brand. 1-based, LOWER is better.
76
+ # Average position of a cited link to the brand. 1-based, LOWER is better. A variant not checked in the window contributes its latest earlier measurement instead; see carriedPositions.
77
77
  attr_accessor :avg_link_position
78
78
 
79
- # Signed improvement in avgLinkPosition. Positive is better.
79
+ # Signed improvement in avgLinkPosition. Positive is better. Null when carriedPositions.link is set.
80
80
  attr_accessor :trend_link
81
81
 
82
82
  # Day-to-day spread of the mention position (a standard deviation): LOWER means steadier.
@@ -123,6 +123,8 @@ module Mencoro
123
123
 
124
124
  attr_accessor :mention_type_counts
125
125
 
126
+ attr_accessor :carried_positions
127
+
126
128
  class EnumAttributeValidator
127
129
  attr_reader :datatype
128
130
  attr_reader :allowable_values
@@ -183,7 +185,8 @@ module Mencoro
183
185
  :'sentiment_neutral' => :'sentimentNeutral',
184
186
  :'sentiment_negative' => :'sentimentNegative',
185
187
  :'avg_mention_count' => :'avgMentionCount',
186
- :'mention_type_counts' => :'mentionTypeCounts'
188
+ :'mention_type_counts' => :'mentionTypeCounts',
189
+ :'carried_positions' => :'carriedPositions'
187
190
  }
188
191
  end
189
192
 
@@ -235,7 +238,8 @@ module Mencoro
235
238
  :'sentiment_neutral' => :'Integer',
236
239
  :'sentiment_negative' => :'Integer',
237
240
  :'avg_mention_count' => :'Float',
238
- :'mention_type_counts' => :'KeywordListingResourceMentionTypeCounts'
241
+ :'mention_type_counts' => :'KeywordListingResourceMentionTypeCounts',
242
+ :'carried_positions' => :'KeywordListingResourceCarriedPositions'
239
243
  }
240
244
  end
241
245
 
@@ -470,6 +474,12 @@ module Mencoro
470
474
  else
471
475
  self.mention_type_counts = nil
472
476
  end
477
+
478
+ if attributes.key?(:'carried_positions')
479
+ self.carried_positions = attributes[:'carried_positions']
480
+ else
481
+ self.carried_positions = nil
482
+ end
473
483
  end
474
484
 
475
485
  # Show invalid properties with the reasons. Usually used together with valid?
@@ -541,6 +551,10 @@ module Mencoro
541
551
  invalid_properties.push('invalid value for "mention_type_counts", mention_type_counts cannot be nil.')
542
552
  end
543
553
 
554
+ if @carried_positions.nil?
555
+ invalid_properties.push('invalid value for "carried_positions", carried_positions cannot be nil.')
556
+ end
557
+
544
558
  invalid_properties
545
559
  end
546
560
 
@@ -566,6 +580,7 @@ module Mencoro
566
580
  return false if @sentiment_neutral.nil?
567
581
  return false if @sentiment_negative.nil?
568
582
  return false if @mention_type_counts.nil?
583
+ return false if @carried_positions.nil?
569
584
  true
570
585
  end
571
586
 
@@ -699,6 +714,16 @@ module Mencoro
699
714
  @mention_type_counts = mention_type_counts
700
715
  end
701
716
 
717
+ # Custom attribute writer method with validation
718
+ # @param [Object] carried_positions Value to be assigned
719
+ def carried_positions=(carried_positions)
720
+ if carried_positions.nil?
721
+ fail ArgumentError, 'carried_positions cannot be nil'
722
+ end
723
+
724
+ @carried_positions = carried_positions
725
+ end
726
+
702
727
  # Checks equality by comparing each attribute.
703
728
  # @param [Object] Object to be compared
704
729
  def ==(o)
@@ -739,7 +764,8 @@ module Mencoro
739
764
  sentiment_neutral == o.sentiment_neutral &&
740
765
  sentiment_negative == o.sentiment_negative &&
741
766
  avg_mention_count == o.avg_mention_count &&
742
- mention_type_counts == o.mention_type_counts
767
+ mention_type_counts == o.mention_type_counts &&
768
+ carried_positions == o.carried_positions
743
769
  end
744
770
 
745
771
  # @see the `==` method
@@ -751,7 +777,7 @@ module Mencoro
751
777
  # Calculates hash code according to all attributes.
752
778
  # @return [Integer] Hash code
753
779
  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
780
+ [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, carried_positions].hash
755
781
  end
756
782
 
757
783
  # Builds the object from hash