mencoro 1.0.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (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
@@ -8,6 +8,7 @@
8
8
  | **type** | **String** | What the job produces, and therefore the shape of `result` | |
9
9
  | **status** | **String** | A job in `pending`, `running` or `awaiting_retry` is still in flight; `completed` and `failed` are terminal. | |
10
10
  | **result** | **Object** | The job output, shaped by `type`. Null while the job is still in flight and for a job that failed: it means the result is not known, never that the job produced nothing. | [optional] |
11
+ | **error** | [**AsyncJobResourceError**](AsyncJobResourceError.md) | | [optional] |
11
12
 
12
13
  ## Example
13
14
 
@@ -18,7 +19,8 @@ instance = Mencoro::AsyncJobResource.new(
18
19
  job_id: null,
19
20
  type: null,
20
21
  status: null,
21
- result: null
22
+ result: null,
23
+ error: null
22
24
  )
23
25
  ```
24
26
 
@@ -0,0 +1,20 @@
1
+ # Mencoro::AsyncJobResourceError
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **code** | **String** | A stable code for the kind of failure: `timed_out`, `provider_failed`, `submission_failed` or `internal_error`. | |
8
+ | **message** | **String** | A fixed, readable explanation of the code. It is the same for every job that failed with that code. | |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'mencoro'
14
+
15
+ instance = Mencoro::AsyncJobResourceError.new(
16
+ code: null,
17
+ message: null
18
+ )
19
+ ```
20
+
data/docs/BillingApi.md CHANGED
@@ -13,7 +13,7 @@ All URIs are relative to *https://api.mencoro.com*
13
13
 
14
14
  Get the subscription of an organization
15
15
 
16
- Minimum role: viewer. The most recent subscription contract of the organization, whatever its state: tier, billing interval, check budget and consumption, and the cancellation and grace dates. An organization that has never subscribed answers 200 with \"status\": \"none\" and every other field null - a null is \"not applicable\", never a stand-in for a zero budget or zero consumption. Stripe identifiers, prices and payment methods are not part of this API.
16
+ Minimum role: viewer. The most recent subscription contract of the organization, whatever its state: tier, billing interval, check budget and consumption, and the cancellation and grace dates. An organization that has never subscribed answers 200 with \"status\": \"none\" and every other field null - a null is \"not applicable\", never a stand-in for a zero budget or zero consumption. Stripe identifiers, prices and payment methods are not part of this API. For a member restricted to selected projects, `tierCode`, `billingCycleType`, `billingCycleAnchor`, `checkBudget`, `checksConsumed`, `checksAvailable`, `nextResetAt` and `deactivationReason` are null: they keep `status`, `isEntitled` and the cancellation and grace dates.
17
17
 
18
18
  ### Examples
19
19
 
@@ -0,0 +1,32 @@
1
+ # Mencoro::CitedSourceRow
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **group_key** | **String** | | |
8
+ | **domain** | **String** | | [optional] |
9
+ | **citation_count** | **Integer** | | |
10
+ | **distinct_query_count** | **Integer** | | |
11
+ | **distinct_response_count** | **Integer** | | |
12
+ | **avg_position** | **Float** | | [optional] |
13
+ | **sample_title** | **String** | | [optional] |
14
+ | **sample_url** | **String** | | |
15
+
16
+ ## Example
17
+
18
+ ```ruby
19
+ require 'mencoro'
20
+
21
+ instance = Mencoro::CitedSourceRow.new(
22
+ group_key: null,
23
+ domain: null,
24
+ citation_count: null,
25
+ distinct_query_count: null,
26
+ distinct_response_count: null,
27
+ avg_position: null,
28
+ sample_title: null,
29
+ sample_url: null
30
+ )
31
+ ```
32
+
@@ -0,0 +1,20 @@
1
+ # Mencoro::CitedSourcesResponse
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **sources** | [**Array<CitedSourceRow>**](CitedSourceRow.md) | | |
8
+ | **total** | **Integer** | | |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'mencoro'
14
+
15
+ instance = Mencoro::CitedSourcesResponse.new(
16
+ sources: null,
17
+ total: null
18
+ )
19
+ ```
20
+
@@ -0,0 +1,82 @@
1
+ # Mencoro::ClusterBreakdownRow
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **cluster_id** | **String** | | [optional] |
8
+ | **cluster_name** | **String** | | |
9
+ | **query_count** | **Integer** | | |
10
+ | **keyword_count** | **Integer** | | |
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
+ | **mention_position_stability** | **Float** | | [optional] |
20
+ | **trend_stability** | **Float** | | [optional] |
21
+ | **serp_position_stability** | **Float** | | [optional] |
22
+ | **trend_serp_stability** | **Float** | | [optional] |
23
+ | **shopping_position_stability** | **Float** | | [optional] |
24
+ | **trend_shopping_stability** | **Float** | | [optional] |
25
+ | **positivity_index** | **Integer** | | [optional] |
26
+ | **trend_positivity** | **Integer** | | [optional] |
27
+ | **mention_rate** | **Integer** | | [optional] |
28
+ | **trend_mention_rate** | **Integer** | | [optional] |
29
+ | **serp_rate** | **Integer** | | [optional] |
30
+ | **trend_serp_rate** | **Integer** | | [optional] |
31
+ | **shopping_rate** | **Integer** | | [optional] |
32
+ | **trend_shopping_rate** | **Integer** | | [optional] |
33
+ | **share_of_voice** | **Float** | | [optional] |
34
+ | **trend_share_of_voice** | **Float** | | [optional] |
35
+ | **sentiment_positive** | **Integer** | | |
36
+ | **sentiment_neutral** | **Integer** | | |
37
+ | **sentiment_negative** | **Integer** | | |
38
+ | **avg_mention_count** | **Float** | | [optional] |
39
+ | **mention_type_counts** | [**MentionTypeCounts**](MentionTypeCounts.md) | | |
40
+
41
+ ## Example
42
+
43
+ ```ruby
44
+ require 'mencoro'
45
+
46
+ instance = Mencoro::ClusterBreakdownRow.new(
47
+ cluster_id: null,
48
+ cluster_name: null,
49
+ query_count: null,
50
+ keyword_count: null,
51
+ avg_serp_position: null,
52
+ trend_serp: null,
53
+ avg_shopping_position: null,
54
+ trend_shopping: null,
55
+ avg_mention_position: null,
56
+ trend_mention: null,
57
+ avg_link_position: null,
58
+ trend_link: null,
59
+ mention_position_stability: null,
60
+ trend_stability: null,
61
+ serp_position_stability: null,
62
+ trend_serp_stability: null,
63
+ shopping_position_stability: null,
64
+ trend_shopping_stability: null,
65
+ positivity_index: null,
66
+ trend_positivity: null,
67
+ mention_rate: null,
68
+ trend_mention_rate: null,
69
+ serp_rate: null,
70
+ trend_serp_rate: null,
71
+ shopping_rate: null,
72
+ trend_shopping_rate: null,
73
+ share_of_voice: null,
74
+ trend_share_of_voice: null,
75
+ sentiment_positive: null,
76
+ sentiment_neutral: null,
77
+ sentiment_negative: null,
78
+ avg_mention_count: null,
79
+ mention_type_counts: null
80
+ )
81
+ ```
82
+
data/docs/ClustersApi.md CHANGED
@@ -8,6 +8,7 @@ All URIs are relative to *https://api.mencoro.com*
8
8
  | [**batch_create_query_clusters**](ClustersApi.md#batch_create_query_clusters) | **POST** /api/v1/organizations/{organizationId}/projects/{projectId}/clusters/batch | Create several keyword clusters at once |
9
9
  | [**create_query_cluster**](ClustersApi.md#create_query_cluster) | **POST** /api/v1/organizations/{organizationId}/projects/{projectId}/clusters | Create a keyword cluster |
10
10
  | [**delete_query_cluster**](ClustersApi.md#delete_query_cluster) | **DELETE** /api/v1/organizations/{organizationId}/projects/{projectId}/clusters/{clusterId} | Delete a keyword cluster |
11
+ | [**get_query_cluster**](ClustersApi.md#get_query_cluster) | **GET** /api/v1/organizations/{organizationId}/projects/{projectId}/clusters/{clusterId} | Get one of a project's keyword clusters |
11
12
  | [**rename_query_cluster**](ClustersApi.md#rename_query_cluster) | **PATCH** /api/v1/organizations/{organizationId}/projects/{projectId}/clusters/{clusterId} | Rename a keyword cluster |
12
13
  | [**start_clustering_job**](ClustersApi.md#start_clustering_job) | **POST** /api/v1/organizations/{organizationId}/projects/{projectId}/clusters/jobs | Start a keyword clustering job |
13
14
 
@@ -312,6 +313,79 @@ end
312
313
  - **Accept**: application/json
313
314
 
314
315
 
316
+ ## get_query_cluster
317
+
318
+ > <QueryClusterResource> get_query_cluster(organization_id, project_id, cluster_id)
319
+
320
+ Get one of a project's keyword clusters
321
+
322
+ Minimum role: viewer. Returns a single keyword cluster of the project, the same projection the cluster listing returns for each of its rows. A cluster belonging to another project answers 404, the same answer an unknown id and a malformed one get, so the API never confirms that a cluster the caller cannot reach exists.
323
+
324
+ ### Examples
325
+
326
+ ```ruby
327
+ require 'time'
328
+ require 'mencoro'
329
+ # setup authorization
330
+ Mencoro.configure do |config|
331
+ # Configure Bearer authorization: ApiKey
332
+ config.access_token = 'YOUR_BEARER_TOKEN'
333
+ end
334
+
335
+ api_instance = Mencoro::ClustersApi.new
336
+ organization_id = '38400000-8cf0-11bd-b23e-10b96e4ef00d' # String |
337
+ project_id = '38400000-8cf0-11bd-b23e-10b96e4ef00d' # String | Must belong to the organization in the path.
338
+ cluster_id = '38400000-8cf0-11bd-b23e-10b96e4ef00d' # String | Must be a cluster of the project in the path.
339
+
340
+ begin
341
+ # Get one of a project's keyword clusters
342
+ result = api_instance.get_query_cluster(organization_id, project_id, cluster_id)
343
+ p result
344
+ rescue Mencoro::ApiError => e
345
+ puts "Error when calling ClustersApi->get_query_cluster: #{e}"
346
+ end
347
+ ```
348
+
349
+ #### Using the get_query_cluster_with_http_info variant
350
+
351
+ This returns an Array which contains the response data, status code and headers.
352
+
353
+ > <Array(<QueryClusterResource>, Integer, Hash)> get_query_cluster_with_http_info(organization_id, project_id, cluster_id)
354
+
355
+ ```ruby
356
+ begin
357
+ # Get one of a project's keyword clusters
358
+ data, status_code, headers = api_instance.get_query_cluster_with_http_info(organization_id, project_id, cluster_id)
359
+ p status_code # => 2xx
360
+ p headers # => { ... }
361
+ p data # => <QueryClusterResource>
362
+ rescue Mencoro::ApiError => e
363
+ puts "Error when calling ClustersApi->get_query_cluster_with_http_info: #{e}"
364
+ end
365
+ ```
366
+
367
+ ### Parameters
368
+
369
+ | Name | Type | Description | Notes |
370
+ | ---- | ---- | ----------- | ----- |
371
+ | **organization_id** | **String** | | |
372
+ | **project_id** | **String** | Must belong to the organization in the path. | |
373
+ | **cluster_id** | **String** | Must be a cluster of the project in the path. | |
374
+
375
+ ### Return type
376
+
377
+ [**QueryClusterResource**](QueryClusterResource.md)
378
+
379
+ ### Authorization
380
+
381
+ [ApiKey](../README.md#ApiKey)
382
+
383
+ ### HTTP request headers
384
+
385
+ - **Content-Type**: Not defined
386
+ - **Accept**: application/json
387
+
388
+
315
389
  ## rename_query_cluster
316
390
 
317
391
  > <QueryClusterResource> rename_query_cluster(organization_id, project_id, cluster_id, idempotency_key, create_query_cluster_request)
@@ -0,0 +1,18 @@
1
+ # Mencoro::CompetitorCoOccurrenceResponse
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **competitors** | [**Array&lt;CompetitorCoOccurrenceRow&gt;**](CompetitorCoOccurrenceRow.md) | | |
8
+
9
+ ## Example
10
+
11
+ ```ruby
12
+ require 'mencoro'
13
+
14
+ instance = Mencoro::CompetitorCoOccurrenceResponse.new(
15
+ competitors: null
16
+ )
17
+ ```
18
+
@@ -0,0 +1,36 @@
1
+ # Mencoro::CompetitorCoOccurrenceRow
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **competitor_id** | **String** | | |
8
+ | **shared_response_count** | **Integer** | | |
9
+ | **brand_wins** | **Integer** | | |
10
+ | **competitor_wins** | **Integer** | | |
11
+ | **ties** | **Integer** | | |
12
+ | **win_rate** | **Integer** | | [optional] |
13
+ | **avg_own_position** | **Float** | | [optional] |
14
+ | **avg_competitor_position** | **Float** | | [optional] |
15
+ | **example_query_text** | **String** | | [optional] |
16
+ | **example_ai_response_id** | **String** | | [optional] |
17
+
18
+ ## Example
19
+
20
+ ```ruby
21
+ require 'mencoro'
22
+
23
+ instance = Mencoro::CompetitorCoOccurrenceRow.new(
24
+ competitor_id: null,
25
+ shared_response_count: null,
26
+ brand_wins: null,
27
+ competitor_wins: null,
28
+ ties: null,
29
+ win_rate: null,
30
+ avg_own_position: null,
31
+ avg_competitor_position: null,
32
+ example_query_text: null,
33
+ example_ai_response_id: null
34
+ )
35
+ ```
36
+
@@ -0,0 +1,20 @@
1
+ # Mencoro::CompetitorShareOfVoice
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **competitor_id** | **String** | | |
8
+ | **share_of_voice** | **Float** | | [optional] |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'mencoro'
14
+
15
+ instance = Mencoro::CompetitorShareOfVoice.new(
16
+ competitor_id: null,
17
+ share_of_voice: null
18
+ )
19
+ ```
20
+
@@ -11,6 +11,8 @@
11
11
  | **created_at** | **Time** | | |
12
12
  | **expires_at** | **Time** | | |
13
13
  | **accepted_at** | **Time** | | [optional] |
14
+ | **project_access_mode** | **String** | Which projects of the organization the invitee reaches on accepting: every project, or only projectIds | |
15
+ | **project_ids** | **Array&lt;String&gt;** | 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 | |
14
16
  | **created** | **Boolean** | Always true on a 201. | [optional] |
15
17
 
16
18
  ## Example
@@ -26,6 +28,8 @@ instance = Mencoro::CreateInvitation201Response.new(
26
28
  created_at: null,
27
29
  expires_at: null,
28
30
  accepted_at: null,
31
+ project_access_mode: null,
32
+ project_ids: null,
29
33
  created: null
30
34
  )
31
35
  ```
@@ -6,6 +6,7 @@
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **email** | **String** | | [optional] |
8
8
  | **role** | **String** | | [optional][default to &#39;viewer&#39;] |
9
+ | **project_access** | [**CreateInvitationRequestProjectAccess**](CreateInvitationRequestProjectAccess.md) | | [optional] |
9
10
 
10
11
  ## Example
11
12
 
@@ -14,7 +15,8 @@ require 'mencoro'
14
15
 
15
16
  instance = Mencoro::CreateInvitationRequest.new(
16
17
  email: null,
17
- role: null
18
+ role: null,
19
+ project_access: null
18
20
  )
19
21
  ```
20
22
 
@@ -0,0 +1,20 @@
1
+ # Mencoro::CreateInvitationRequestProjectAccess
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **mode** | **String** | | |
8
+ | **project_ids** | **Array&lt;String&gt;** | For selected: at least one and at most 500 projects of the organization. | [optional] |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'mencoro'
14
+
15
+ instance = Mencoro::CreateInvitationRequestProjectAccess.new(
16
+ mode: null,
17
+ project_ids: null
18
+ )
19
+ ```
20
+
data/docs/DiscoveryApi.md CHANGED
@@ -93,7 +93,7 @@ end
93
93
 
94
94
  Start a brand-name alias suggestion job
95
95
 
96
- Minimum role: manager. Starts a background, web-search-grounded job that suggests alias spellings for one entity - a brand, a project or a competitor - described entirely by the body, and answers 202 with the job to poll; it never returns suggestions inline. The entity need not exist: nothing is looked up, nothing is attached and nothing is saved, so the suggestions are the caller's to apply. Names sent in `enteredBrandNames` are excluded from the result. The organization must be active; no subscription is required, matching the application behaviour this mirrors. Ten starts per minute per organization, counted across every key of every member; a retry carrying an Idempotency-Key already answered is served from the record and does not count.
96
+ Minimum role: manager, with access to every project of the organization: the job names no project, so a member restricted to selected projects is refused as a role below the minimum is. Starts a background, web-search-grounded job that suggests alias spellings for one entity - a brand, a project or a competitor - described entirely by the body, and answers 202 with the job to poll; it never returns suggestions inline. The entity need not exist: nothing is looked up, nothing is attached and nothing is saved, so the suggestions are the caller's to apply. Names sent in `enteredBrandNames` are excluded from the result. The organization must be active; no subscription is required, matching the application behaviour this mirrors. Ten starts per minute per organization, counted across every key of every member; a retry carrying an Idempotency-Key already answered is served from the record and does not count.
97
97
 
98
98
  ### Examples
99
99
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **total** | **Integer** | Projects across those organizations, archived ones included. | [optional] |
7
+ | **total** | **Integer** | Projects across those organizations the owner can access, archived ones included. | [optional] |
8
8
  | **active** | **Integer** | How many of those are active; the remainder are archived. | [optional] |
9
9
 
10
10
  ## Example
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **project_count** | **Integer** | Active projects in the organization, the length of &#x60;projects&#x60;. | [optional] |
7
+ | **project_count** | **Integer** | Active projects of the organization the caller can access, the length of &#x60;projects&#x60;. | [optional] |
8
8
  | **projects_with_data** | **Integer** | How many of those have a share of voice; the averages below are means over the projects that report each metric, never over the ones still null. | [optional] |
9
9
  | **total_tracked_queries** | **Integer** | | [optional] |
10
10
  | **avg_share_of_voice** | **Float** | Null when no project reports a share of voice. | [optional] |
@@ -7,9 +7,12 @@
7
7
  | **project_id** | **String** | | [optional] |
8
8
  | **name** | **String** | | [optional] |
9
9
  | **status** | **String** | | [optional] |
10
- | **tracked_query_count** | **Integer** | | [optional] |
10
+ | **tracked_query_count** | **Integer** | Configured tracked queries of the project, paused ones included. | [optional] |
11
+ | **ai_tracked_query_count** | **Integer** | How many of trackedQueryCount run on an AI answer engine (ChatGPT, Claude, Perplexity, Google AI Overview, Google AI Mode). | [optional] |
12
+ | **serp_tracked_query_count** | **Integer** | How many of trackedQueryCount run on classic Google SERP. | [optional] |
13
+ | **shopping_tracked_query_count** | **Integer** | How many of trackedQueryCount run on Google Shopping. | [optional] |
11
14
  | **share_of_voice** | **Float** | 0-100 percentage share of weighted AI mentions against all tracked brands; higher is better. Null when the project has no rank data yet. | [optional] |
12
- | **mention_rate** | **Integer** | 0-100 percentage of tracked queries with a result; higher is better. Null when the project has no rank data yet. | [optional] |
15
+ | **mention_rate** | **Integer** | 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. | [optional] |
13
16
  | **avg_mention_position** | **Float** | 1-based average rank of the brand within the answer; LOWER is better. Null when the project has no rank data yet. | [optional] |
14
17
  | **positivity_index** | **Integer** | 0-100 sentiment score; higher is better. Null when the project has no rank data yet. | [optional] |
15
18
 
@@ -23,6 +26,9 @@ instance = Mencoro::GetOrganizationOverview200ResponseProjectsInner.new(
23
26
  name: null,
24
27
  status: null,
25
28
  tracked_query_count: null,
29
+ ai_tracked_query_count: null,
30
+ serp_tracked_query_count: null,
31
+ shopping_tracked_query_count: null,
26
32
  share_of_voice: null,
27
33
  mention_rate: null,
28
34
  avg_mention_position: null,
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **pending** | **Integer** | Invitations still awaiting an answer. Accepted, cancelled and expired ones are excluded. | [optional] |
7
+ | **pending** | **Integer** | Invitations still awaiting an answer. Accepted, cancelled and expired ones are excluded. Null for a member restricted to selected projects. | [optional] |
8
8
 
9
9
  ## Example
10
10
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **total** | **Integer** | Active memberships. Suspended members are excluded. | [optional] |
7
+ | **total** | **Integer** | Active memberships. Suspended members are excluded. Null for a member restricted to selected projects. | [optional] |
8
8
 
9
9
  ## Example
10
10
 
@@ -4,7 +4,7 @@
4
4
 
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
- | **total** | **Integer** | Every project in the organization, archived ones included. | [optional] |
7
+ | **total** | **Integer** | Every project of the organization the caller can access, archived ones included. | [optional] |
8
8
  | **active** | **Integer** | Projects that are not archived; never greater than &#x60;total&#x60;. | [optional] |
9
9
 
10
10
  ## Example
@@ -11,6 +11,8 @@
11
11
  | **created_at** | **Time** | | |
12
12
  | **expires_at** | **Time** | | |
13
13
  | **accepted_at** | **Time** | | [optional] |
14
+ | **project_access_mode** | **String** | Which projects of the organization the invitee reaches on accepting: every project, or only projectIds | |
15
+ | **project_ids** | **Array&lt;String&gt;** | 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 | |
14
16
 
15
17
  ## Example
16
18
 
@@ -24,7 +26,9 @@ instance = Mencoro::InvitationResource.new(
24
26
  state: null,
25
27
  created_at: null,
26
28
  expires_at: null,
27
- accepted_at: null
29
+ accepted_at: null,
30
+ project_access_mode: null,
31
+ project_ids: null
28
32
  )
29
33
  ```
30
34
 
data/docs/JobsApi.md CHANGED
@@ -13,7 +13,7 @@ All URIs are relative to *https://api.mencoro.com*
13
13
 
14
14
  Get an asynchronous job
15
15
 
16
- Minimum role: manager. The status of one asynchronous job started inside this organization — geo prompt discovery, keyword discovery, query clustering, brand discovery or brand-name suggestion — and, once it has completed, its result. Poll it until `status` is terminal: `completed` or `failed`. A null `result` means the result is not known, either because the job is still in flight or because it failed; it never means the job produced an empty result. A failed job carries no reason: the stored one is an internal exception message, not a published field. A job started by another organization, a job of a type this API does not publish, and a job id that does not exist all answer 404 alike, so the API never confirms that an inaccessible job exists.
16
+ Minimum role: manager. The status of one asynchronous job started inside this organization — geo prompt discovery, keyword discovery, query clustering, brand discovery or brand-name suggestion — and, once it has completed, its result. Poll it until `status` is terminal: `completed` or `failed`. A null `result` means the result is not known, either because the job is still in flight or because it failed; it never means the job produced an empty result. A failed job carries `error`: a stable `code` (`timed_out`, `provider_failed`, `submission_failed` or `internal_error`) and a fixed `message` saying what to do next; `error` is null for a job that has not failed. A job started by another organization, a job of a type this API does not publish, and a job id that does not exist all answer 404 alike, so the API never confirms that an inaccessible job exists.
17
17
 
18
18
  ### Examples
19
19
 
@@ -15,16 +15,16 @@
15
15
  | **status_summary** | **String** | \&quot;mixed\&quot; when the variants disagree; otherwise the one status they share. | |
16
16
  | **statuses** | **Array&lt;String&gt;** | Distinct statuses across the variants. | |
17
17
  | **check_frequencies** | **Array&lt;String&gt;** | Distinct check frequencies across the variants. | |
18
- | **n_passes_values** | **Array&lt;Integer&gt;** | Distinct pass counts across the variants. A pass is one budget unit per check. | |
18
+ | **n_passes_values** | **Array&lt;Integer&gt;** | Distinct pass counts across the variants. Each Claude pass consumes five checks; each other engine pass consumes one. | |
19
19
  | **last_checked_at** | **Time** | The most recent completed check across the variants. Null when none has ever completed — not a check that found nothing. | [optional] |
20
- | **avg_serp_position** | **Float** | Average position in traditional search over the window. 1-based, LOWER is better. | [optional] |
21
- | **trend_serp** | **Float** | Signed improvement in avgSerpPosition against the previous window. Positive is better. | [optional] |
22
- | **avg_shopping_position** | **Float** | Average position in shopping results over the window. 1-based, LOWER is better. | [optional] |
23
- | **trend_shopping** | **Float** | Signed improvement in avgShoppingPosition. Positive is better. | [optional] |
24
- | **avg_mention_position** | **Float** | Average position of the brand mention inside the AI answer. 1-based, LOWER is better. | [optional] |
25
- | **trend_mention** | **Float** | Signed improvement in avgMentionPosition. Positive is better. | [optional] |
26
- | **avg_link_position** | **Float** | Average position of a cited link to the brand. 1-based, LOWER is better. | [optional] |
27
- | **trend_link** | **Float** | Signed improvement in avgLinkPosition. Positive is better. | [optional] |
20
+ | **avg_serp_position** | **Float** | 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. | [optional] |
21
+ | **trend_serp** | **Float** | Signed improvement in avgSerpPosition against the previous window. Positive is better. Null when carriedPositions.serp is set. | [optional] |
22
+ | **avg_shopping_position** | **Float** | 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. | [optional] |
23
+ | **trend_shopping** | **Float** | Signed improvement in avgShoppingPosition. Positive is better. Null when carriedPositions.shopping is set. | [optional] |
24
+ | **avg_mention_position** | **Float** | 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. | [optional] |
25
+ | **trend_mention** | **Float** | Signed improvement in avgMentionPosition. Positive is better. Null when carriedPositions.mention is set. | [optional] |
26
+ | **avg_link_position** | **Float** | 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. | [optional] |
27
+ | **trend_link** | **Float** | Signed improvement in avgLinkPosition. Positive is better. Null when carriedPositions.link is set. | [optional] |
28
28
  | **mention_position_stability** | **Float** | Day-to-day spread of the mention position (a standard deviation): LOWER means steadier. | [optional] |
29
29
  | **trend_stability** | **Float** | Signed improvement in mentionPositionStability. Positive means steadier than the previous window. | [optional] |
30
30
  | **positivity_index** | **Integer** | 0-100 weighted sentiment score of the mentions; HIGHER is better. Null when there were no mentions to score. | [optional] |
@@ -40,6 +40,7 @@
40
40
  | **sentiment_negative** | **Integer** | Negative brand mentions counted in the window. | |
41
41
  | **avg_mention_count** | **Float** | Mentions per AI engine per day with a capture, over the window. Not a total: the window total is not part of this contract. | [optional] |
42
42
  | **mention_type_counts** | [**KeywordListingResourceMentionTypeCounts**](KeywordListingResourceMentionTypeCounts.md) | | |
43
+ | **carried_positions** | [**KeywordListingResourceCarriedPositions**](KeywordListingResourceCarriedPositions.md) | | |
43
44
 
44
45
  ## Example
45
46
 
@@ -82,7 +83,8 @@ instance = Mencoro::KeywordListingResource.new(
82
83
  sentiment_neutral: null,
83
84
  sentiment_negative: null,
84
85
  avg_mention_count: null,
85
- mention_type_counts: null
86
+ mention_type_counts: null,
87
+ carried_positions: null
86
88
  )
87
89
  ```
88
90
 
@@ -0,0 +1,24 @@
1
+ # Mencoro::KeywordListingResourceCarriedPositions
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **serp** | [**KeywordListingResourceCarriedPositionsSerp**](KeywordListingResourceCarriedPositionsSerp.md) | | |
8
+ | **shopping** | [**KeywordListingResourceCarriedPositionsSerp**](KeywordListingResourceCarriedPositionsSerp.md) | | |
9
+ | **mention** | [**KeywordListingResourceCarriedPositionsSerp**](KeywordListingResourceCarriedPositionsSerp.md) | | |
10
+ | **link** | [**KeywordListingResourceCarriedPositionsSerp**](KeywordListingResourceCarriedPositionsSerp.md) | | |
11
+
12
+ ## Example
13
+
14
+ ```ruby
15
+ require 'mencoro'
16
+
17
+ instance = Mencoro::KeywordListingResourceCarriedPositions.new(
18
+ serp: null,
19
+ shopping: null,
20
+ mention: null,
21
+ link: null
22
+ )
23
+ ```
24
+
@@ -0,0 +1,20 @@
1
+ # Mencoro::KeywordListingResourceCarriedPositionsSerp
2
+
3
+ ## Properties
4
+
5
+ | Name | Type | Description | Notes |
6
+ | ---- | ---- | ----------- | ----- |
7
+ | **measured_at** | **Date** | Date (YYYY-MM-DD) of the oldest carried measurement. | |
8
+ | **all_carried** | **Boolean** | True when every variant behind the figure carried, so it holds no measurement from the window. | |
9
+
10
+ ## Example
11
+
12
+ ```ruby
13
+ require 'mencoro'
14
+
15
+ instance = Mencoro::KeywordListingResourceCarriedPositionsSerp.new(
16
+ measured_at: null,
17
+ all_carried: null
18
+ )
19
+ ```
20
+
@@ -5,7 +5,7 @@
5
5
  | Name | Type | Description | Notes |
6
6
  | ---- | ---- | ----------- | ----- |
7
7
  | **items** | [**Array&lt;ProjectResource&gt;**](ProjectResource.md) | | [optional] |
8
- | **total** | **Integer** | Every project matching the filters, not the size of this page. | [optional] |
8
+ | **total** | **Integer** | Every project matching the filters that the caller can access, not the size of this page. | [optional] |
9
9
 
10
10
  ## Example
11
11
 
@@ -10,6 +10,8 @@
10
10
  | **state** | **String** | | |
11
11
  | **is_active** | **Boolean** | | |
12
12
  | **joined_at** | **Time** | | |
13
+ | **project_access_mode** | **String** | Which projects of the organization the member reaches: every project, or only projectIds | |
14
+ | **project_ids** | **Array&lt;String&gt;** | The projects a selected access reaches; empty when the mode is all | |
13
15
 
14
16
  ## Example
15
17
 
@@ -22,7 +24,9 @@ instance = Mencoro::MemberResource.new(
22
24
  role: null,
23
25
  state: null,
24
26
  is_active: null,
25
- joined_at: null
27
+ joined_at: null,
28
+ project_access_mode: null,
29
+ project_ids: null
26
30
  )
27
31
  ```
28
32