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
data/docs/ProjectsApi.md CHANGED
@@ -9,6 +9,7 @@ All URIs are relative to *https://api.mencoro.com*
9
9
  | [**create_project**](ProjectsApi.md#create_project) | **POST** /api/v1/organizations/{organizationId}/projects | Create a project and the brand monitoring profile its checks run against |
10
10
  | [**delete_competitor**](ProjectsApi.md#delete_competitor) | **DELETE** /api/v1/organizations/{organizationId}/projects/{projectId}/competitors/{competitorId} | Remove a competitor from a project |
11
11
  | [**get_brand_profile**](ProjectsApi.md#get_brand_profile) | **GET** /api/v1/organizations/{organizationId}/projects/{projectId}/brand-profile | Get a project's brand monitoring profile |
12
+ | [**get_competitor**](ProjectsApi.md#get_competitor) | **GET** /api/v1/organizations/{organizationId}/projects/{projectId}/competitors/{competitorId} | Get one of a project's competitors |
12
13
  | [**get_project**](ProjectsApi.md#get_project) | **GET** /api/v1/organizations/{organizationId}/projects/{projectId} | Get a project and its brand monitoring configuration |
13
14
  | [**list_competitors**](ProjectsApi.md#list_competitors) | **GET** /api/v1/organizations/{organizationId}/projects/{projectId}/competitors | List the competitors tracked by a project |
14
15
  | [**list_projects**](ProjectsApi.md#list_projects) | **GET** /api/v1/organizations/{organizationId}/projects | List an organization's projects |
@@ -173,7 +174,7 @@ end
173
174
 
174
175
  Create a project and the brand monitoring profile its checks run against
175
176
 
176
- Minimum role: manager, in an active organization. Requires the \"write\" capability. Creates the project, the brand monitoring profile holding the domains and brand names to watch, and one competitor per entry of `competitors`, in a single call. The project id is minted by the server; a caller-supplied id is rejected as an unknown field. What is NOT done: no tracked queries are created, no check is run and no scraping is scheduled — a new project has nothing collected against it until tracked queries are added. Each website entry may be a full URL or a bare domain: a URL is reduced to its host with any leading \"www.\" removed, so \"https://www.acme.com/pricing\" is stored as \"acme.com\". Duplicate domains and duplicate brand names are collapsed, exactly as the stored value objects do. Send an Idempotency-Key: a retry with the same key and the same body returns this same project instead of creating a second one.
177
+ Minimum role: manager, in an active organization, with access to every project of it: a member restricted to selected projects is refused as a role below the minimum is. Requires the \"write\" capability. Creates the project, the brand monitoring profile holding the domains and brand names to watch, and one competitor per entry of `competitors`, in a single call. The project id is minted by the server; a caller-supplied id is rejected as an unknown field. What is NOT done: no tracked queries are created, no check is run and no scraping is scheduled — a new project has nothing collected against it until tracked queries are added. Each website entry may be a full URL or a bare domain: a URL is reduced to its host with any leading \"www.\" removed, so \"https://www.acme.com/pricing\" is stored as \"acme.com\". Duplicate domains and duplicate brand names are collapsed, exactly as the stored value objects do. Send an Idempotency-Key: a retry with the same key and the same body returns this same project instead of creating a second one.
177
178
 
178
179
  ### Examples
179
180
 
@@ -386,6 +387,79 @@ end
386
387
  - **Accept**: application/json
387
388
 
388
389
 
390
+ ## get_competitor
391
+
392
+ > <CompetitorResource> get_competitor(organization_id, project_id, competitor_id)
393
+
394
+ Get one of a project's competitors
395
+
396
+ Minimum role: viewer. Returns a single competitor of the project, the same projection the competitor listing returns for each of its rows. A competitor belonging to another project answers 404, the same answer an unknown id and a malformed one get, so the API never confirms that a competitor the caller cannot reach exists. A project whose brand monitoring profile has not been created yet has no competitors at all and answers 404 for any competitor id.
397
+
398
+ ### Examples
399
+
400
+ ```ruby
401
+ require 'time'
402
+ require 'mencoro'
403
+ # setup authorization
404
+ Mencoro.configure do |config|
405
+ # Configure Bearer authorization: ApiKey
406
+ config.access_token = 'YOUR_BEARER_TOKEN'
407
+ end
408
+
409
+ api_instance = Mencoro::ProjectsApi.new
410
+ organization_id = '38400000-8cf0-11bd-b23e-10b96e4ef00d' # String |
411
+ project_id = '38400000-8cf0-11bd-b23e-10b96e4ef00d' # String | Must belong to the organization in the path.
412
+ competitor_id = '38400000-8cf0-11bd-b23e-10b96e4ef00d' # String | Must belong to the project in the path.
413
+
414
+ begin
415
+ # Get one of a project's competitors
416
+ result = api_instance.get_competitor(organization_id, project_id, competitor_id)
417
+ p result
418
+ rescue Mencoro::ApiError => e
419
+ puts "Error when calling ProjectsApi->get_competitor: #{e}"
420
+ end
421
+ ```
422
+
423
+ #### Using the get_competitor_with_http_info variant
424
+
425
+ This returns an Array which contains the response data, status code and headers.
426
+
427
+ > <Array(<CompetitorResource>, Integer, Hash)> get_competitor_with_http_info(organization_id, project_id, competitor_id)
428
+
429
+ ```ruby
430
+ begin
431
+ # Get one of a project's competitors
432
+ data, status_code, headers = api_instance.get_competitor_with_http_info(organization_id, project_id, competitor_id)
433
+ p status_code # => 2xx
434
+ p headers # => { ... }
435
+ p data # => <CompetitorResource>
436
+ rescue Mencoro::ApiError => e
437
+ puts "Error when calling ProjectsApi->get_competitor_with_http_info: #{e}"
438
+ end
439
+ ```
440
+
441
+ ### Parameters
442
+
443
+ | Name | Type | Description | Notes |
444
+ | ---- | ---- | ----------- | ----- |
445
+ | **organization_id** | **String** | | |
446
+ | **project_id** | **String** | Must belong to the organization in the path. | |
447
+ | **competitor_id** | **String** | Must belong to the project in the path. | |
448
+
449
+ ### Return type
450
+
451
+ [**CompetitorResource**](CompetitorResource.md)
452
+
453
+ ### Authorization
454
+
455
+ [ApiKey](../README.md#ApiKey)
456
+
457
+ ### HTTP request headers
458
+
459
+ - **Content-Type**: Not defined
460
+ - **Accept**: application/json
461
+
462
+
389
463
  ## get_project
390
464
 
391
465
  > <ProjectDetailResource> get_project(organization_id, project_id)
@@ -542,7 +616,7 @@ end
542
616
 
543
617
  List an organization's projects
544
618
 
545
- Minimum role: viewer. Metrics come from the same read model the application uses, so the figures match what the product shows. A null metric means \"not known yet\", never zero.Send `Accept: text/csv` to receive the same page as a CSV download instead of JSON: same filters, same authorization, same page window and the same maximum of 100 rows — it is this page in another format, not a bulk export, so a whole collection is still read by paging. The CSV carries no `total`, because a table whose every row is a record has nowhere to put one; read it from the JSON representation of the same request. A list-valued field is joined into one cell with `; ` as a display projection — parse the JSON if you need the structure. Cells beginning with `=`, `+`, `-` or `@` are prefixed with an apostrophe so a spreadsheet treats them as text rather than running them as formulas.
619
+ Minimum role: viewer. Metrics come from the same read model the application uses, so the figures match what the product shows. A null metric means \"not known yet\", never zero. For a member restricted to selected projects, the list and `total` cover those projects only. Send `Accept: text/csv` to receive the same page as a CSV download instead of JSON: same filters, same authorization, same page window and the same maximum of 100 rows — it is this page in another format, not a bulk export, so a whole collection is still read by paging. The CSV carries no `total`, because a table whose every row is a record has nowhere to put one; read it from the JSON representation of the same request. A list-valued field is joined into one cell with `; ` as a display projection — parse the JSON if you need the structure. Cells beginning with `=`, `+`, `-` or `@` are prefixed with an apostrophe so a spreadsheet treats them as text rather than running them as formulas.
546
620
 
547
621
  ### Examples
548
622
 
@@ -0,0 +1,20 @@
1
+ # Mencoro::SearchTrackedQueryMentionMatches200Response
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **items** | [**Array&lt;MentionMatchResource&gt;**](MentionMatchResource.md) | | [optional] |
8
+ | **total** | **Integer** | | [optional] |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'mencoro'
14
+
15
+ instance = Mencoro::SearchTrackedQueryMentionMatches200Response.new(
16
+ items: null,
17
+ total: null
18
+ )
19
+ ```
20
+
@@ -0,0 +1,20 @@
1
+ # Mencoro::SearchTrackedQuerySerpMatches200Response
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **items** | [**Array&lt;SerpMatchResource&gt;**](SerpMatchResource.md) | | [optional] |
8
+ | **total** | **Integer** | | [optional] |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'mencoro'
14
+
15
+ instance = Mencoro::SearchTrackedQuerySerpMatches200Response.new(
16
+ items: null,
17
+ total: null
18
+ )
19
+ ```
20
+
@@ -0,0 +1,30 @@
1
+ # Mencoro::SerpMatchResource
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **tracked_query_id** | **String** | | |
8
+ | **project_id** | **String** | | |
9
+ | **engine** | **String** | | |
10
+ | **search_page_id** | **String** | | |
11
+ | **competitor_id** | **String** | | [optional] |
12
+ | **position** | **Integer** | | |
13
+ | **detected_at** | **Time** | | |
14
+
15
+ ## Example
16
+
17
+ ```ruby
18
+ require 'mencoro'
19
+
20
+ instance = Mencoro::SerpMatchResource.new(
21
+ tracked_query_id: null,
22
+ project_id: null,
23
+ engine: null,
24
+ search_page_id: null,
25
+ competitor_id: null,
26
+ position: null,
27
+ detected_at: null
28
+ )
29
+ ```
30
+
@@ -0,0 +1,20 @@
1
+ # Mencoro::SetMemberProjectAccessRequest
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **mode** | **String** | | |
8
+ | **project_ids** | **Array&lt;String&gt;** | The projects of the organization a selected access reaches: at least one and at most 500. Omit it, or send an empty list, for all. | [optional] |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'mencoro'
14
+
15
+ instance = Mencoro::SetMemberProjectAccessRequest.new(
16
+ mode: null,
17
+ project_ids: null
18
+ )
19
+ ```
20
+
@@ -15,7 +15,7 @@
15
15
  | **cancelled_at** | **Time** | When the subscription was terminally cancelled. Null while it has not been. | [optional] |
16
16
  | **scheduled_to_cancel_at** | **Time** | When a scheduled cancellation takes effect, while the subscription is still running. Null when none is scheduled. | [optional] |
17
17
  | **grace_period_ends_at** | **Time** | When paid access ends after a cancellation. Null when the subscription is not cancelled. | [optional] |
18
- | **deactivation_reason** | **String** | Why the subscription is currently inactive. Null for an active subscription, and meaningless once \&quot;cancelledAt\&quot; is set - the cancellation supersedes it. | [optional] |
18
+ | **deactivation_reason** | **String** | Why the subscription is currently inactive. Null for an active subscription and for a member restricted to selected projects, and meaningless once \&quot;cancelledAt\&quot; is set - the cancellation supersedes it. | [optional] |
19
19
  | **is_entitled** | **Boolean** | Whether the organization may use paid features right now: active, or cancelled but still inside its paid grace window. | |
20
20
 
21
21
  ## Example
@@ -0,0 +1,22 @@
1
+ # Mencoro::TimeSeriesPoint
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **raw_date** | **String** | | |
8
+ | **brand** | [**PerEntityMetrics**](PerEntityMetrics.md) | | |
9
+ | **competitors** | [**Hash&lt;String, PerEntityMetrics&gt;**](PerEntityMetrics.md) | | |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'mencoro'
15
+
16
+ instance = Mencoro::TimeSeriesPoint.new(
17
+ raw_date: null,
18
+ brand: null,
19
+ competitors: null
20
+ )
21
+ ```
22
+
@@ -24,6 +24,8 @@ All URIs are relative to *https://api.mencoro.com*
24
24
  | [**report_ai_response**](TrackedQueriesApi.md#report_ai_response) | **POST** /api/v1/organizations/{organizationId}/projects/{projectId}/tracked-queries/{trackedQueryId}/responses/{aiResponseId}/report | Report a problem with a captured AI answer |
25
25
  | [**resume_tracked_query**](TrackedQueriesApi.md#resume_tracked_query) | **PUT** /api/v1/organizations/{organizationId}/projects/{projectId}/tracked-queries/{trackedQueryId}/resume | Resume a tracked query |
26
26
  | [**search_tracked_queries**](TrackedQueriesApi.md#search_tracked_queries) | **GET** /api/v1/organizations/{organizationId}/projects/{projectId}/tracked-queries | Search a project&#39;s tracked queries |
27
+ | [**search_tracked_query_mention_matches**](TrackedQueriesApi.md#search_tracked_query_mention_matches) | **GET** /api/v1/organizations/{organizationId}/projects/{projectId}/tracked-queries/{trackedQueryId}/mention-matches | List stored mention matches of a tracked query |
28
+ | [**search_tracked_query_serp_matches**](TrackedQueriesApi.md#search_tracked_query_serp_matches) | **GET** /api/v1/organizations/{organizationId}/projects/{projectId}/tracked-queries/{trackedQueryId}/serp-matches | List stored serp matches of a tracked query |
27
29
 
28
30
 
29
31
  ## add_clusters_to_tracked_query
@@ -334,7 +336,7 @@ end
334
336
 
335
337
  Check several tracked queries now
336
338
 
337
- Minimum role: manager. Asks for a fresh check of up to 100 named tracked queries straight away, ignoring how recently each was last checked. Answers 200 with per-item results and NO job id: a check that is already in flight for a query is reused rather than started again, so there is no id this operation could hand back that is guaranteed to exist. Follow progress on the tracked query itself — its lastCheckedAt advances when the check completes. A successful item means the check was accepted for submission with budget available for it at that moment; it does not mean the check has run. A checked query costs one budget unit per pass (nPasses), and items that do not fit the remaining budget are reported as failed with `check_budget_forecast_exhausted`, or `subscription_not_found` when the organization has no entitled subscription — they are never reported as successful. That budget figure is a forecast for this batch, and a pessimistic one: a tracked query already being checked is joined to the check in flight and costs nothing, but it is still debited here, so an item refused this way may have fitted. Resubmit it in a later batch rather than treating the refusal as a statement about your subscription. A paused query is reported as failed with `tracked_query_already_paused`: paused queries are never checked. An id that is not a tracked query of this project is reported as failed with `tracked_query_not_found`, exactly as an id that does not exist. Requires an Idempotency-Key header; a retry must repeat the same ids in the same order.
339
+ Minimum role: manager. Asks for a fresh check of up to 100 named tracked queries straight away, ignoring how recently each was last checked. Answers 200 with per-item results and NO job id: a check that is already in flight for a query is reused rather than started again, so there is no id this operation could hand back that is guaranteed to exist. Follow progress on the tracked query itself — its lastCheckedAt advances when the check completes. A successful item means the check was accepted for submission with budget available for it at that moment; it does not mean the check has run. A checked query costs one check per pass; a Claude pass counts as five (nPasses), and items that do not fit the remaining budget are reported as failed with `check_budget_forecast_exhausted`, or `subscription_not_found` when the organization has no entitled subscription — they are never reported as successful. That budget figure is a forecast for this batch, and a pessimistic one: a tracked query already being checked is joined to the check in flight and costs nothing, but it is still debited here, so an item refused this way may have fitted. Resubmit it in a later batch rather than treating the refusal as a statement about your subscription. A paused query is reported as failed with `tracked_query_already_paused`: paused queries are never checked. An id that is not a tracked query of this project is reported as failed with `tracked_query_not_found`, exactly as an id that does not exist. Requires an Idempotency-Key header; a retry must repeat the same ids in the same order.
338
340
 
339
341
  ### Examples
340
342
 
@@ -938,7 +940,7 @@ end
938
940
 
939
941
  Count a project's tracked queries and price checking them
940
942
 
941
- Minimum role: viewer. Two numbers about one project: how many tracked queries it holds, and what force-checking that same set would cost. Omit `status` to count every tracked query whatever its status; send `active` or `paused` to count and price only those. `checkCost` is a PRICED DRY RUN expressed in check budget units — one unit per pass, the same unit the plan allowance is counted in, so it is directly comparable with `checksAvailable` from the entitlements operation — and it is the sum of each matched tracked query's configured passes. Asking reserves nothing, debits nothing and starts no check. It is deliberately NOT a forecast of what the check-all operation will consume: that operation skips paused queries, skips a query whose check is already pending or running, re-runs a check awaiting retry without charging for it again, and stops at whatever budget is left — none of which is subtracted here. Count with `status=active` for the figure closest to a full check-all. Both numbers are read from the write model, so a tracked query created moments ago is already in them; that is why they can be AHEAD of the `total` returned by the tracked-queries listing, which counts a search projection, and ahead of the keyword listings, which read projections refreshed in the background. Summing the unfiltered count over every project of an organization, archived projects included, reproduces countOrganizationTrackedQueries, which counts through the same counter in the same store. An archived project still answers, because this is a read, but no check can be submitted there while it stays archived, so its cost is hypothetical. For a month of scheduled rounds across the whole organization instead of one round over one project, read getOrganizationProjectedMonthlyChecks. No monetary amount is published or implied: the cost of a check is published only in budget units.
943
+ Minimum role: viewer. Two numbers about one project: how many tracked queries it holds, and what force-checking that same set would cost. Omit `status` to count every tracked query whatever its status; send `active` or `paused` to count and price only those. `checkCost` is a PRICED DRY RUN expressed in checks — five checks per Claude pass and one check per pass for every other engine, the same currency as the plan allowance, so it is directly comparable with `checksAvailable` from the entitlements operation — and it is the sum of each matched tracked query's configured passes multiplied by its engine weight. Asking reserves nothing, debits nothing and starts no check. It is deliberately NOT a forecast of what the check-all operation will consume: that operation skips paused queries, skips a query whose check is already pending or running, re-runs a check awaiting retry without charging for it again, and stops at whatever budget is left — none of which is subtracted here. Count with `status=active` for the figure closest to a full check-all. Both numbers are read from the write model, so a tracked query created moments ago is already in them; that is why they can be AHEAD of the `total` returned by the tracked-queries listing, which counts a search projection, and ahead of the keyword listings, which read projections refreshed in the background. Summing the unfiltered count over every project of an organization, archived projects included, reproduces countOrganizationTrackedQueries, which counts through the same counter in the same store. An archived project still answers, because this is a read, but no check can be submitted there while it stays archived, so its cost is hypothetical. For a month of scheduled rounds across the whole organization instead of one round over one project, read getOrganizationProjectedMonthlyChecks. No monetary amount is published or implied: the cost of a check is published only in checks.
942
944
 
943
945
  ### Examples
944
946
 
@@ -1013,7 +1015,7 @@ end
1013
1015
 
1014
1016
  Check every eligible tracked query of a project now
1015
1017
 
1016
- Minimum role: manager. Submits a fresh check for every eligible tracked query of the project, ignoring how recently each was last checked, least-recently-checked first, and at most 1000 tracked queries per call. Eligible is narrower than active: a paused query is skipped, and so is one whose check is already pending or running for the same engine. A query whose check is awaiting a retry is included and, WHEN THE ENGINE HAS NOT CHANGED SINCE, costs nothing extra, because its first submission already paid for it; if the engine did change, the pending run is replaced and the replacement is paid for. What is left is trimmed to what the organization's remaining check budget can pay for — a check costs one budget unit per pass. While a subscription is cancelled but still inside its paid grace window nothing is submitted at all and `submitted` is 0; name the queries explicitly through the check operation to run them in that window. CALLING AGAIN DOES NOT CONTINUE WHERE THIS CALL STOPPED: submissions are handed to a worker, and a tracked query stops being selected only once that worker has started its check, so a second call made before the queue drains selects and submits the same tracked queries again. That is safe while the first check is still running — the duplicate is collapsed, and nothing is checked or charged twice — but a check that has already finished is run again and charged again, because this operation ignores staleness by design. To cover a project with more than 1000 eligible tracked queries, wait for the submitted wave to be picked up — each tracked query's lastCheckedAt advances when its check completes — and call again then. The response lists the tracked queries submitted and carries NO job id: a check already in flight is reused rather than started again, so no id could be guaranteed to exist. Submission is accepted, not completed: a listed tracked query can still lose the last budget units to another caller before the worker reaches it. The request takes no body, and any field sent is rejected. Requires an Idempotency-Key header.
1018
+ Minimum role: manager. Submits a fresh check for every eligible tracked query of the project, ignoring how recently each was last checked, least-recently-checked first, and at most 1000 tracked queries per call. Eligible is narrower than active: a paused query is skipped, and so is one whose check is already pending or running for the same engine. A query whose check is awaiting a retry is included and, WHEN THE ENGINE HAS NOT CHANGED SINCE, costs nothing extra, because its first submission already paid for it; if the engine did change, the pending run is replaced and the replacement is paid for. What is left is trimmed to what the organization's remaining check budget can pay for — a check costs one check per pass; a Claude pass counts as five. A subscription that is cancelled but still inside its paid grace window keeps paying for checks until that window ends. CALLING AGAIN DOES NOT CONTINUE WHERE THIS CALL STOPPED: submissions are handed to a worker, and a tracked query stops being selected only once that worker has started its check, so a second call made before the queue drains selects and submits the same tracked queries again. That is safe while the first check is still running — the duplicate is collapsed, and nothing is checked or charged twice — but a check that has already finished is run again and charged again, because this operation ignores staleness by design. To cover a project with more than 1000 eligible tracked queries, wait for the submitted wave to be picked up — each tracked query's lastCheckedAt advances when its check completes — and call again then. The response lists the tracked queries submitted and carries NO job id: a check already in flight is reused rather than started again, so no id could be guaranteed to exist. Submission is accepted, not completed: a listed tracked query can still lose the last budget units to another caller before the worker reaches it. The request takes no body, and any field sent is rejected. Requires an Idempotency-Key header.
1017
1019
 
1018
1020
  ### Examples
1019
1021
 
@@ -1547,3 +1549,173 @@ end
1547
1549
  - **Content-Type**: Not defined
1548
1550
  - **Accept**: application/json, text/csv
1549
1551
 
1552
+
1553
+ ## search_tracked_query_mention_matches
1554
+
1555
+ > <SearchTrackedQueryMentionMatches200Response> search_tracked_query_mention_matches(organization_id, project_id, tracked_query_id, opts)
1556
+
1557
+ List stored mention matches of a tracked query
1558
+
1559
+ Minimum role: viewer. Text mentions across own brand and tracked or untracked competitors. Citation-only rows are excluded before pagination. Read mentionRelation to distinguish own brand from untracked competitors; a null competitorId alone does not classify the mention. Newest first by detection time, with an id tie-break. Dates cover whole UTC days. Only the retained 16-month window is readable, including when dateFrom is omitted. Unknown filters are rejected. The total counts all matching rows before pagination. Send Accept: text/csv for the same bounded page and filters as CSV, with formula-safe cells and no total.
1560
+
1561
+ ### Examples
1562
+
1563
+ ```ruby
1564
+ require 'time'
1565
+ require 'mencoro'
1566
+ # setup authorization
1567
+ Mencoro.configure do |config|
1568
+ # Configure Bearer authorization: ApiKey
1569
+ config.access_token = 'YOUR_BEARER_TOKEN'
1570
+ end
1571
+
1572
+ api_instance = Mencoro::TrackedQueriesApi.new
1573
+ organization_id = '38400000-8cf0-11bd-b23e-10b96e4ef00d' # String |
1574
+ project_id = '38400000-8cf0-11bd-b23e-10b96e4ef00d' # String |
1575
+ tracked_query_id = '38400000-8cf0-11bd-b23e-10b96e4ef00d' # String |
1576
+ opts = {
1577
+ date_from: Date.parse('2013-10-20'), # Date | Inclusive UTC day; defaults to the retention floor.
1578
+ date_to: Date.parse('2013-10-20'), # Date | Inclusive UTC day.
1579
+ limit: 56, # Integer |
1580
+ offset: 56, # Integer |
1581
+ sort_order: 'asc' # String |
1582
+ }
1583
+
1584
+ begin
1585
+ # List stored mention matches of a tracked query
1586
+ result = api_instance.search_tracked_query_mention_matches(organization_id, project_id, tracked_query_id, opts)
1587
+ p result
1588
+ rescue Mencoro::ApiError => e
1589
+ puts "Error when calling TrackedQueriesApi->search_tracked_query_mention_matches: #{e}"
1590
+ end
1591
+ ```
1592
+
1593
+ #### Using the search_tracked_query_mention_matches_with_http_info variant
1594
+
1595
+ This returns an Array which contains the response data, status code and headers.
1596
+
1597
+ > <Array(<SearchTrackedQueryMentionMatches200Response>, Integer, Hash)> search_tracked_query_mention_matches_with_http_info(organization_id, project_id, tracked_query_id, opts)
1598
+
1599
+ ```ruby
1600
+ begin
1601
+ # List stored mention matches of a tracked query
1602
+ data, status_code, headers = api_instance.search_tracked_query_mention_matches_with_http_info(organization_id, project_id, tracked_query_id, opts)
1603
+ p status_code # => 2xx
1604
+ p headers # => { ... }
1605
+ p data # => <SearchTrackedQueryMentionMatches200Response>
1606
+ rescue Mencoro::ApiError => e
1607
+ puts "Error when calling TrackedQueriesApi->search_tracked_query_mention_matches_with_http_info: #{e}"
1608
+ end
1609
+ ```
1610
+
1611
+ ### Parameters
1612
+
1613
+ | Name | Type | Description | Notes |
1614
+ | ---- | ---- | ----------- | ----- |
1615
+ | **organization_id** | **String** | | |
1616
+ | **project_id** | **String** | | |
1617
+ | **tracked_query_id** | **String** | | |
1618
+ | **date_from** | **Date** | Inclusive UTC day; defaults to the retention floor. | [optional] |
1619
+ | **date_to** | **Date** | Inclusive UTC day. | [optional] |
1620
+ | **limit** | **Integer** | | [optional][default to 20] |
1621
+ | **offset** | **Integer** | | [optional][default to 0] |
1622
+ | **sort_order** | **String** | | [optional][default to &#39;desc&#39;] |
1623
+
1624
+ ### Return type
1625
+
1626
+ [**SearchTrackedQueryMentionMatches200Response**](SearchTrackedQueryMentionMatches200Response.md)
1627
+
1628
+ ### Authorization
1629
+
1630
+ [ApiKey](../README.md#ApiKey)
1631
+
1632
+ ### HTTP request headers
1633
+
1634
+ - **Content-Type**: Not defined
1635
+ - **Accept**: application/json, text/csv
1636
+
1637
+
1638
+ ## search_tracked_query_serp_matches
1639
+
1640
+ > <SearchTrackedQuerySerpMatches200Response> search_tracked_query_serp_matches(organization_id, project_id, tracked_query_id, opts)
1641
+
1642
+ List stored serp matches of a tracked query
1643
+
1644
+ Minimum role: viewer. Stored organic-search matches with the competitor attribution and position recorded at detection time. A null competitorId identifies the own-brand match. These are historical matches, not a reclassification using the current brand profile. Newest first by detection time, with an id tie-break. Dates cover whole UTC days. Only the retained 16-month window is readable, including when dateFrom is omitted. Unknown filters are rejected. The total counts all matching rows before pagination. Send Accept: text/csv for the same bounded page and filters as CSV, with formula-safe cells and no total.
1645
+
1646
+ ### Examples
1647
+
1648
+ ```ruby
1649
+ require 'time'
1650
+ require 'mencoro'
1651
+ # setup authorization
1652
+ Mencoro.configure do |config|
1653
+ # Configure Bearer authorization: ApiKey
1654
+ config.access_token = 'YOUR_BEARER_TOKEN'
1655
+ end
1656
+
1657
+ api_instance = Mencoro::TrackedQueriesApi.new
1658
+ organization_id = '38400000-8cf0-11bd-b23e-10b96e4ef00d' # String |
1659
+ project_id = '38400000-8cf0-11bd-b23e-10b96e4ef00d' # String |
1660
+ tracked_query_id = '38400000-8cf0-11bd-b23e-10b96e4ef00d' # String |
1661
+ opts = {
1662
+ date_from: Date.parse('2013-10-20'), # Date | Inclusive UTC day; defaults to the retention floor.
1663
+ date_to: Date.parse('2013-10-20'), # Date | Inclusive UTC day.
1664
+ limit: 56, # Integer |
1665
+ offset: 56, # Integer |
1666
+ sort_order: 'asc' # String |
1667
+ }
1668
+
1669
+ begin
1670
+ # List stored serp matches of a tracked query
1671
+ result = api_instance.search_tracked_query_serp_matches(organization_id, project_id, tracked_query_id, opts)
1672
+ p result
1673
+ rescue Mencoro::ApiError => e
1674
+ puts "Error when calling TrackedQueriesApi->search_tracked_query_serp_matches: #{e}"
1675
+ end
1676
+ ```
1677
+
1678
+ #### Using the search_tracked_query_serp_matches_with_http_info variant
1679
+
1680
+ This returns an Array which contains the response data, status code and headers.
1681
+
1682
+ > <Array(<SearchTrackedQuerySerpMatches200Response>, Integer, Hash)> search_tracked_query_serp_matches_with_http_info(organization_id, project_id, tracked_query_id, opts)
1683
+
1684
+ ```ruby
1685
+ begin
1686
+ # List stored serp matches of a tracked query
1687
+ data, status_code, headers = api_instance.search_tracked_query_serp_matches_with_http_info(organization_id, project_id, tracked_query_id, opts)
1688
+ p status_code # => 2xx
1689
+ p headers # => { ... }
1690
+ p data # => <SearchTrackedQuerySerpMatches200Response>
1691
+ rescue Mencoro::ApiError => e
1692
+ puts "Error when calling TrackedQueriesApi->search_tracked_query_serp_matches_with_http_info: #{e}"
1693
+ end
1694
+ ```
1695
+
1696
+ ### Parameters
1697
+
1698
+ | Name | Type | Description | Notes |
1699
+ | ---- | ---- | ----------- | ----- |
1700
+ | **organization_id** | **String** | | |
1701
+ | **project_id** | **String** | | |
1702
+ | **tracked_query_id** | **String** | | |
1703
+ | **date_from** | **Date** | Inclusive UTC day; defaults to the retention floor. | [optional] |
1704
+ | **date_to** | **Date** | Inclusive UTC day. | [optional] |
1705
+ | **limit** | **Integer** | | [optional][default to 20] |
1706
+ | **offset** | **Integer** | | [optional][default to 0] |
1707
+ | **sort_order** | **String** | | [optional][default to &#39;desc&#39;] |
1708
+
1709
+ ### Return type
1710
+
1711
+ [**SearchTrackedQuerySerpMatches200Response**](SearchTrackedQuerySerpMatches200Response.md)
1712
+
1713
+ ### Authorization
1714
+
1715
+ [ApiKey](../README.md#ApiKey)
1716
+
1717
+ ### HTTP request headers
1718
+
1719
+ - **Content-Type**: Not defined
1720
+ - **Accept**: application/json, text/csv
1721
+
@@ -5,7 +5,7 @@
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **count** | **Integer** | Tracked queries in the project matching the status filter. Every status when none was sent. | |
8
- | **check_cost** | **Integer** | Budget cost of force-checking exactly those tracked queries, in check budget units: the sum of each one&#39;s configured passes. One unit per pass, the same unit the plan allowance is counted in. Reserves nothing and debits nothing. | |
8
+ | **check_cost** | **Integer** | Budget cost of force-checking exactly those tracked queries, in checks: the sum of each one&#39;s configured passes multiplied by its engine weight. Five checks per Claude pass and one check per pass for every other engine, the same currency as the plan allowance. Reserves nothing and debits nothing. | |
9
9
 
10
10
  ## Example
11
11
 
@@ -0,0 +1,58 @@
1
+ # Mencoro::TrackedQueryMoverRow
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **tracked_query_id** | **String** | | |
8
+ | **query_text** | **String** | | |
9
+ | **engine** | **String** | | |
10
+ | **country** | **String** | | |
11
+ | **avg_serp_position** | **Float** | | [optional] |
12
+ | **trend_serp** | **Float** | | [optional] |
13
+ | **avg_shopping_position** | **Float** | | [optional] |
14
+ | **trend_shopping** | **Float** | | [optional] |
15
+ | **avg_mention_position** | **Float** | | [optional] |
16
+ | **trend_mention** | **Float** | | [optional] |
17
+ | **avg_link_position** | **Float** | | [optional] |
18
+ | **trend_link** | **Float** | | [optional] |
19
+ | **share_of_voice** | **Float** | | [optional] |
20
+ | **trend_share_of_voice** | **Float** | | [optional] |
21
+ | **positivity_index** | **Integer** | | [optional] |
22
+ | **trend_positivity** | **Integer** | | [optional] |
23
+ | **sentiment_positive** | **Integer** | | |
24
+ | **sentiment_neutral** | **Integer** | | |
25
+ | **sentiment_negative** | **Integer** | | |
26
+ | **mention_count** | **Integer** | | |
27
+ | **mention_type_counts** | [**MentionTypeCounts**](MentionTypeCounts.md) | | |
28
+
29
+ ## Example
30
+
31
+ ```ruby
32
+ require 'mencoro'
33
+
34
+ instance = Mencoro::TrackedQueryMoverRow.new(
35
+ tracked_query_id: null,
36
+ query_text: null,
37
+ engine: null,
38
+ country: null,
39
+ avg_serp_position: null,
40
+ trend_serp: null,
41
+ avg_shopping_position: null,
42
+ trend_shopping: null,
43
+ avg_mention_position: null,
44
+ trend_mention: null,
45
+ avg_link_position: null,
46
+ trend_link: null,
47
+ share_of_voice: null,
48
+ trend_share_of_voice: null,
49
+ positivity_index: null,
50
+ trend_positivity: null,
51
+ sentiment_positive: null,
52
+ sentiment_neutral: null,
53
+ sentiment_negative: null,
54
+ mention_count: null,
55
+ mention_type_counts: null
56
+ )
57
+ ```
58
+
@@ -0,0 +1,22 @@
1
+ # Mencoro::TrackedQueryMoversResponse
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **rows** | [**Array&lt;TrackedQueryMoverRow&gt;**](TrackedQueryMoverRow.md) | | |
8
+ | **total** | **Integer** | | |
9
+ | **data_dirty_since** | **String** | | [optional] |
10
+
11
+ ## Example
12
+
13
+ ```ruby
14
+ require 'mencoro'
15
+
16
+ instance = Mencoro::TrackedQueryMoversResponse.new(
17
+ rows: null,
18
+ total: null,
19
+ data_dirty_since: null
20
+ )
21
+ ```
22
+
@@ -0,0 +1,20 @@
1
+ # Mencoro::TrackedQueryRankTrackingTimeSeries
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **points** | [**Array&lt;TimeSeriesPoint&gt;**](TimeSeriesPoint.md) | | |
8
+ | **data_dirty_since** | **String** | | [optional] |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'mencoro'
14
+
15
+ instance = Mencoro::TrackedQueryRankTrackingTimeSeries.new(
16
+ points: null,
17
+ data_dirty_since: null
18
+ )
19
+ ```
20
+
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **tracked_query_count** | **Integer** | Tracked queries across every project of the organization, archived projects included, counting active and paused queries alike. Never null; 0 means none are configured. | |
7
+ | **tracked_query_count** | **Integer** | Tracked queries across every project of the organization the caller can access, archived projects included, counting active and paused queries alike. Never null; 0 means none are configured. | |
8
8
 
9
9
  ## Example
10
10
 
@@ -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
@@ -77,7 +77,7 @@ module Mencoro
77
77
  end
78
78
 
79
79
  # Counts across everything the key can reach
80
- # Aggregate counts over every organization the key's owner is an active member of, narrowed to the key's scope — the same set /api/v1/organizations pages through. `organizations.total` is that set's size; `projects.total` and `projects.active` count the projects inside it, archived ones included in the total and excluded from the active figure. Every value is an exact count: zero means zero, and no value here is ever null or unknown. Per-organization billing and usage figures are not part of this response; read them from the subscription and entitlements operations instead.
80
+ # Aggregate counts over every organization the key's owner is an active member of, narrowed to the key's scope — the same set /api/v1/organizations pages through. `organizations.total` is that set's size; `projects.total` and `projects.active` count the projects inside it the owner can access, archived ones included in the total and excluded from the active figure. Every value is an exact count: zero means zero, and no value here is ever null or unknown. Per-organization billing and usage figures are not part of this response; read them from the subscription and entitlements operations instead.
81
81
  # @param [Hash] opts the optional parameters
82
82
  # @return [GetMeStats200Response]
83
83
  def get_me_stats(opts = {})
@@ -86,7 +86,7 @@ module Mencoro
86
86
  end
87
87
 
88
88
  # Counts across everything the key can reach
89
- # Aggregate counts over every organization the key&#39;s owner is an active member of, narrowed to the key&#39;s scope — the same set /api/v1/organizations pages through. &#x60;organizations.total&#x60; is that set&#39;s size; &#x60;projects.total&#x60; and &#x60;projects.active&#x60; count the projects inside it, archived ones included in the total and excluded from the active figure. Every value is an exact count: zero means zero, and no value here is ever null or unknown. Per-organization billing and usage figures are not part of this response; read them from the subscription and entitlements operations instead.
89
+ # Aggregate counts over every organization the key&#39;s owner is an active member of, narrowed to the key&#39;s scope — the same set /api/v1/organizations pages through. &#x60;organizations.total&#x60; is that set&#39;s size; &#x60;projects.total&#x60; and &#x60;projects.active&#x60; count the projects inside it the owner can access, archived ones included in the total and excluded from the active figure. Every value is an exact count: zero means zero, and no value here is ever null or unknown. Per-organization billing and usage figures are not part of this response; read them from the subscription and entitlements operations instead.
90
90
  # @param [Hash] opts the optional parameters
91
91
  # @return [Array<(GetMeStats200Response, Integer, Hash)>] GetMeStats200Response data, response status code and response headers
92
92
  def get_me_stats_with_http_info(opts = {})