mencoro 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (401) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +9 -0
  3. data/README.md +304 -0
  4. data/Rakefile +10 -0
  5. data/docs/AcceptedJobResource.md +22 -0
  6. data/docs/AccountApi.md +141 -0
  7. data/docs/AiResponseReportResource.md +28 -0
  8. data/docs/AiResponseResource.md +36 -0
  9. data/docs/AnalyticsApi.md +1320 -0
  10. data/docs/ApplyClusteringJobOutcome.md +26 -0
  11. data/docs/ApplyClusteringJobOutcomeClustersInner.md +22 -0
  12. data/docs/ApplyClusteringJobOutcomeFailedInner.md +22 -0
  13. data/docs/ApplyClusteringJobOutcomeSkippedClustersInner.md +20 -0
  14. data/docs/ApplyClusteringJobOutcomeSuccessfulInner.md +20 -0
  15. data/docs/AsyncJobResource.md +24 -0
  16. data/docs/BatchChangeTrackedQueryCheckFrequencyRequestData.md +20 -0
  17. data/docs/BatchChangeTrackedQueryPassesRequestData.md +20 -0
  18. data/docs/BatchCreateQueryClustersOutcome.md +20 -0
  19. data/docs/BatchCreateQueryClustersOutcomeFailedInner.md +22 -0
  20. data/docs/BatchCreateQueryClustersOutcomeSuccessfulInner.md +20 -0
  21. data/docs/BatchCreateQueryClustersRequestData.md +18 -0
  22. data/docs/BatchCreateTrackedQueriesRequestData.md +30 -0
  23. data/docs/BatchCreateTrackedQueriesResultResource.md +20 -0
  24. data/docs/BatchCreateTrackedQueriesResultResourceFailedInner.md +26 -0
  25. data/docs/BatchCreateTrackedQueriesResultResourceSuccessfulInner.md +24 -0
  26. data/docs/BatchForceCheckTrackedQueries200Response.md +20 -0
  27. data/docs/BatchForceCheckTrackedQueries200ResponseFailedInner.md +22 -0
  28. data/docs/BatchPauseTrackedQueries200Response.md +20 -0
  29. data/docs/BatchPauseTrackedQueries200ResponseFailedInner.md +22 -0
  30. data/docs/BatchPauseTrackedQueries200ResponseSuccessfulInner.md +18 -0
  31. data/docs/BatchResumeTrackedQueries200Response.md +20 -0
  32. data/docs/BatchTargetsRequestData.md +18 -0
  33. data/docs/BatchWriteOutcome.md +20 -0
  34. data/docs/BatchWriteOutcomeFailedInner.md +22 -0
  35. data/docs/BillingApi.md +77 -0
  36. data/docs/BrandProfileResource.md +24 -0
  37. data/docs/BulkAddClustersToTrackedQueries200Response.md +20 -0
  38. data/docs/BulkAddClustersToTrackedQueriesRequest.md +20 -0
  39. data/docs/BulkRemoveClustersFromTrackedQueries200Response.md +20 -0
  40. data/docs/BulkRemoveClustersFromTrackedQueriesRequest.md +20 -0
  41. data/docs/CapturesApi.md +267 -0
  42. data/docs/ChangeMemberRoleRequest.md +18 -0
  43. data/docs/ChangeTrackedQueryCheckFrequencyRequestData.md +18 -0
  44. data/docs/ChangeTrackedQueryPassesRequestData.md +18 -0
  45. data/docs/CitationResource.md +36 -0
  46. data/docs/ClusterMembershipRequestData.md +18 -0
  47. data/docs/ClustersApi.md +465 -0
  48. data/docs/CompetitorResource.md +24 -0
  49. data/docs/CreateCompetitorRequest.md +22 -0
  50. data/docs/CreateInvitation200Response.md +22 -0
  51. data/docs/CreateInvitation201Response.md +32 -0
  52. data/docs/CreateInvitationRequest.md +20 -0
  53. data/docs/CreateOrganization201Response.md +22 -0
  54. data/docs/CreateOrganizationRequest.md +18 -0
  55. data/docs/CreateProjectRequest.md +24 -0
  56. data/docs/CreateProjectRequestCompetitorsInner.md +22 -0
  57. data/docs/CreateQueryCluster409Response.md +22 -0
  58. data/docs/CreateQueryClusterRequest.md +18 -0
  59. data/docs/DeleteQueryCluster200Response.md +22 -0
  60. data/docs/DiscoveryApi.md +311 -0
  61. data/docs/EntitlementsResource.md +38 -0
  62. data/docs/GetAvailableFilters200Response.md +22 -0
  63. data/docs/GetAvailableFilters200ResponseClustersInner.md +20 -0
  64. data/docs/GetMeStats200Response.md +20 -0
  65. data/docs/GetMeStats200ResponseOrganizations.md +18 -0
  66. data/docs/GetMeStats200ResponseProjects.md +20 -0
  67. data/docs/GetMembershipStats200Response.md +30 -0
  68. data/docs/GetMentionSamples400Response.md +24 -0
  69. data/docs/GetMentionSamples400ResponseDetailsValueInner.md +22 -0
  70. data/docs/GetMetricGlossary200Response.md +18 -0
  71. data/docs/GetMetricGlossary200ResponseMetricsInner.md +30 -0
  72. data/docs/GetOrganizationOverview200Response.md +20 -0
  73. data/docs/GetOrganizationOverview200ResponseAggregate.md +30 -0
  74. data/docs/GetOrganizationOverview200ResponseProjectsInner.md +32 -0
  75. data/docs/GetOrganizationStats200Response.md +22 -0
  76. data/docs/GetOrganizationStats200ResponseInvitations.md +18 -0
  77. data/docs/GetOrganizationStats200ResponseMembers.md +18 -0
  78. data/docs/GetOrganizationStats200ResponseProjects.md +20 -0
  79. data/docs/GetShareOfVoiceFormula200Response.md +24 -0
  80. data/docs/GetTrackingCoverage200Response.md +30 -0
  81. data/docs/GetTrackingCoverage200ResponseSampleInner.md +28 -0
  82. data/docs/InvitationResource.md +30 -0
  83. data/docs/InvitationsApi.md +243 -0
  84. data/docs/JobsApi.md +79 -0
  85. data/docs/KeywordListingResource.md +88 -0
  86. data/docs/KeywordListingResourceMentionTypeCounts.md +26 -0
  87. data/docs/ListAiResponses200Response.md +20 -0
  88. data/docs/ListCompetitors200Response.md +20 -0
  89. data/docs/ListInvitations200Response.md +20 -0
  90. data/docs/ListKeywordListings200Response.md +24 -0
  91. data/docs/ListMembers200Response.md +20 -0
  92. data/docs/ListOrganizations200Response.md +20 -0
  93. data/docs/ListProjects200Response.md +20 -0
  94. data/docs/ListQueryClusters200Response.md +20 -0
  95. data/docs/ListSearchSnapshots200Response.md +20 -0
  96. data/docs/ListShoppingSnapshots200Response.md +20 -0
  97. data/docs/MeResource.md +34 -0
  98. data/docs/MemberResource.md +28 -0
  99. data/docs/MembersApi.md +391 -0
  100. data/docs/OperationEffect.md +22 -0
  101. data/docs/OrganizationOperationsApi.md +77 -0
  102. data/docs/OrganizationResource.md +32 -0
  103. data/docs/OrganizationsApi.md +807 -0
  104. data/docs/PreviewOrganizationOperation200Response.md +34 -0
  105. data/docs/PreviewOrganizationOperation200ResponseOrganization.md +20 -0
  106. data/docs/PreviewOrganizationOperationRequest.md +24 -0
  107. data/docs/ProjectDetailResource.md +32 -0
  108. data/docs/ProjectDetailResourceCompetitorsInner.md +24 -0
  109. data/docs/ProjectResource.md +50 -0
  110. data/docs/ProjectedMonthlyChecksResource.md +20 -0
  111. data/docs/ProjectsApi.md +999 -0
  112. data/docs/QueryClusterResource.md +22 -0
  113. data/docs/ReportAiResponseRequest.md +22 -0
  114. data/docs/SearchResultResource.md +32 -0
  115. data/docs/SearchSnapshotResource.md +28 -0
  116. data/docs/SearchTrackedQueries200Response.md +20 -0
  117. data/docs/ShoppingOfferResource.md +38 -0
  118. data/docs/ShoppingSnapshotResource.md +28 -0
  119. data/docs/StartBrandDiscoveryJobRequest.md +20 -0
  120. data/docs/StartBrandNameSuggestionJobRequest.md +24 -0
  121. data/docs/StartClusteringJobRequestData.md +22 -0
  122. data/docs/StartKeywordDiscoveryJobRequest.md +24 -0
  123. data/docs/StartPromptDiscoveryJobRequest.md +24 -0
  124. data/docs/SubmittedChecksResource.md +20 -0
  125. data/docs/SubscriptionResource.md +42 -0
  126. data/docs/TrackedQueriesApi.md +1549 -0
  127. data/docs/TrackedQueryCountResource.md +20 -0
  128. data/docs/TrackedQueryDetailResource.md +38 -0
  129. data/docs/TrackedQueryResource.md +52 -0
  130. data/docs/TrackedQueryUsageResource.md +18 -0
  131. data/docs/UpdateOrganizationRequest.md +22 -0
  132. data/docs/UpdateProjectBrandProfileRequest.md +20 -0
  133. data/docs/UpdateProjectRequest.md +18 -0
  134. data/git_push.sh +57 -0
  135. data/lib/mencoro/api/account_api.rb +136 -0
  136. data/lib/mencoro/api/analytics_api.rb +1555 -0
  137. data/lib/mencoro/api/billing_api.rb +85 -0
  138. data/lib/mencoro/api/captures_api.rb +338 -0
  139. data/lib/mencoro/api/clusters_api.rb +548 -0
  140. data/lib/mencoro/api/discovery_api.rb +360 -0
  141. data/lib/mencoro/api/invitations_api.rb +302 -0
  142. data/lib/mencoro/api/jobs_api.rb +91 -0
  143. data/lib/mencoro/api/members_api.rb +453 -0
  144. data/lib/mencoro/api/organization_operations_api.rb +90 -0
  145. data/lib/mencoro/api/organizations_api.rb +835 -0
  146. data/lib/mencoro/api/projects_api.rb +1158 -0
  147. data/lib/mencoro/api/tracked_queries_api.rb +1792 -0
  148. data/lib/mencoro/api_client.rb +441 -0
  149. data/lib/mencoro/api_error.rb +58 -0
  150. data/lib/mencoro/api_model_base.rb +88 -0
  151. data/lib/mencoro/configuration.rb +392 -0
  152. data/lib/mencoro/models/accepted_job_resource.rb +220 -0
  153. data/lib/mencoro/models/ai_response_report_resource.rb +311 -0
  154. data/lib/mencoro/models/ai_response_resource.rb +412 -0
  155. data/lib/mencoro/models/apply_clustering_job_outcome.rb +199 -0
  156. data/lib/mencoro/models/apply_clustering_job_outcome_clusters_inner.rb +165 -0
  157. data/lib/mencoro/models/apply_clustering_job_outcome_failed_inner.rb +165 -0
  158. data/lib/mencoro/models/apply_clustering_job_outcome_skipped_clusters_inner.rb +156 -0
  159. data/lib/mencoro/models/apply_clustering_job_outcome_successful_inner.rb +158 -0
  160. data/lib/mencoro/models/async_job_resource.rb +256 -0
  161. data/lib/mencoro/models/batch_change_tracked_query_check_frequency_request_data.rb +237 -0
  162. data/lib/mencoro/models/batch_change_tracked_query_passes_request_data.rb +231 -0
  163. data/lib/mencoro/models/batch_create_query_clusters_outcome.rb +163 -0
  164. data/lib/mencoro/models/batch_create_query_clusters_outcome_failed_inner.rb +165 -0
  165. data/lib/mencoro/models/batch_create_query_clusters_outcome_successful_inner.rb +156 -0
  166. data/lib/mencoro/models/batch_create_query_clusters_request_data.rb +186 -0
  167. data/lib/mencoro/models/batch_create_tracked_queries_request_data.rb +399 -0
  168. data/lib/mencoro/models/batch_create_tracked_queries_result_resource.rb +163 -0
  169. data/lib/mencoro/models/batch_create_tracked_queries_result_resource_failed_inner.rb +183 -0
  170. data/lib/mencoro/models/batch_create_tracked_queries_result_resource_successful_inner.rb +174 -0
  171. data/lib/mencoro/models/batch_force_check_tracked_queries200_response.rb +162 -0
  172. data/lib/mencoro/models/batch_force_check_tracked_queries200_response_failed_inner.rb +165 -0
  173. data/lib/mencoro/models/batch_pause_tracked_queries200_response.rb +162 -0
  174. data/lib/mencoro/models/batch_pause_tracked_queries200_response_failed_inner.rb +165 -0
  175. data/lib/mencoro/models/batch_pause_tracked_queries200_response_successful_inner.rb +147 -0
  176. data/lib/mencoro/models/batch_resume_tracked_queries200_response.rb +162 -0
  177. data/lib/mencoro/models/batch_targets_request_data.rb +186 -0
  178. data/lib/mencoro/models/batch_write_outcome.rb +163 -0
  179. data/lib/mencoro/models/batch_write_outcome_failed_inner.rb +166 -0
  180. data/lib/mencoro/models/brand_profile_resource.rb +235 -0
  181. data/lib/mencoro/models/bulk_add_clusters_to_tracked_queries200_response.rb +162 -0
  182. data/lib/mencoro/models/bulk_add_clusters_to_tracked_queries_request.rb +218 -0
  183. data/lib/mencoro/models/bulk_remove_clusters_from_tracked_queries200_response.rb +162 -0
  184. data/lib/mencoro/models/bulk_remove_clusters_from_tracked_queries_request.rb +218 -0
  185. data/lib/mencoro/models/change_member_role_request.rb +181 -0
  186. data/lib/mencoro/models/change_tracked_query_check_frequency_request_data.rb +190 -0
  187. data/lib/mencoro/models/change_tracked_query_passes_request_data.rb +184 -0
  188. data/lib/mencoro/models/citation_resource.rb +306 -0
  189. data/lib/mencoro/models/cluster_membership_request_data.rb +186 -0
  190. data/lib/mencoro/models/competitor_resource.rb +250 -0
  191. data/lib/mencoro/models/create_competitor_request.rb +247 -0
  192. data/lib/mencoro/models/create_invitation200_response.rb +202 -0
  193. data/lib/mencoro/models/create_invitation201_response.rb +347 -0
  194. data/lib/mencoro/models/create_invitation_request.rb +192 -0
  195. data/lib/mencoro/models/create_organization201_response.rb +166 -0
  196. data/lib/mencoro/models/create_organization_request.rb +175 -0
  197. data/lib/mencoro/models/create_project_request.rb +307 -0
  198. data/lib/mencoro/models/create_project_request_competitors_inner.rb +256 -0
  199. data/lib/mencoro/models/create_query_cluster409_response.rb +165 -0
  200. data/lib/mencoro/models/create_query_cluster_request.rb +167 -0
  201. data/lib/mencoro/models/delete_query_cluster200_response.rb +168 -0
  202. data/lib/mencoro/models/entitlements_resource.rb +328 -0
  203. data/lib/mencoro/models/get_available_filters200_response.rb +173 -0
  204. data/lib/mencoro/models/get_available_filters200_response_clusters_inner.rb +157 -0
  205. data/lib/mencoro/models/get_me_stats200_response.rb +156 -0
  206. data/lib/mencoro/models/get_me_stats200_response_organizations.rb +167 -0
  207. data/lib/mencoro/models/get_me_stats200_response_projects.rb +196 -0
  208. data/lib/mencoro/models/get_membership_stats200_response.rb +322 -0
  209. data/lib/mencoro/models/get_mention_samples400_response.rb +231 -0
  210. data/lib/mencoro/models/get_mention_samples400_response_details_value_inner.rb +168 -0
  211. data/lib/mencoro/models/get_metric_glossary200_response.rb +149 -0
  212. data/lib/mencoro/models/get_metric_glossary200_response_metrics_inner.rb +240 -0
  213. data/lib/mencoro/models/get_organization_overview200_response.rb +158 -0
  214. data/lib/mencoro/models/get_organization_overview200_response_aggregate.rb +209 -0
  215. data/lib/mencoro/models/get_organization_overview200_response_projects_inner.rb +218 -0
  216. data/lib/mencoro/models/get_organization_stats200_response.rb +165 -0
  217. data/lib/mencoro/models/get_organization_stats200_response_invitations.rb +167 -0
  218. data/lib/mencoro/models/get_organization_stats200_response_members.rb +167 -0
  219. data/lib/mencoro/models/get_organization_stats200_response_projects.rb +196 -0
  220. data/lib/mencoro/models/get_share_of_voice_formula200_response.rb +182 -0
  221. data/lib/mencoro/models/get_tracking_coverage200_response.rb +209 -0
  222. data/lib/mencoro/models/get_tracking_coverage200_response_sample_inner.rb +229 -0
  223. data/lib/mencoro/models/invitation_resource.rb +331 -0
  224. data/lib/mencoro/models/keyword_listing_resource.rb +798 -0
  225. data/lib/mencoro/models/keyword_listing_resource_mention_type_counts.rb +184 -0
  226. data/lib/mencoro/models/list_ai_responses200_response.rb +159 -0
  227. data/lib/mencoro/models/list_competitors200_response.rb +159 -0
  228. data/lib/mencoro/models/list_invitations200_response.rb +158 -0
  229. data/lib/mencoro/models/list_keyword_listings200_response.rb +180 -0
  230. data/lib/mencoro/models/list_members200_response.rb +158 -0
  231. data/lib/mencoro/models/list_organizations200_response.rb +158 -0
  232. data/lib/mencoro/models/list_projects200_response.rb +159 -0
  233. data/lib/mencoro/models/list_query_clusters200_response.rb +159 -0
  234. data/lib/mencoro/models/list_search_snapshots200_response.rb +159 -0
  235. data/lib/mencoro/models/list_shopping_snapshots200_response.rb +159 -0
  236. data/lib/mencoro/models/me_resource.rb +394 -0
  237. data/lib/mencoro/models/member_resource.rb +322 -0
  238. data/lib/mencoro/models/operation_effect.rb +204 -0
  239. data/lib/mencoro/models/organization_resource.rb +326 -0
  240. data/lib/mencoro/models/preview_organization_operation200_response.rb +236 -0
  241. data/lib/mencoro/models/preview_organization_operation200_response_organization.rb +158 -0
  242. data/lib/mencoro/models/preview_organization_operation_request.rb +213 -0
  243. data/lib/mencoro/models/project_detail_resource.rb +380 -0
  244. data/lib/mencoro/models/project_detail_resource_competitors_inner.rb +178 -0
  245. data/lib/mencoro/models/project_resource.rb +422 -0
  246. data/lib/mencoro/models/projected_monthly_checks_resource.rb +211 -0
  247. data/lib/mencoro/models/query_cluster_resource.rb +229 -0
  248. data/lib/mencoro/models/report_ai_response_request.rb +227 -0
  249. data/lib/mencoro/models/search_result_resource.rb +284 -0
  250. data/lib/mencoro/models/search_snapshot_resource.rb +302 -0
  251. data/lib/mencoro/models/search_tracked_queries200_response.rb +158 -0
  252. data/lib/mencoro/models/shopping_offer_resource.rb +381 -0
  253. data/lib/mencoro/models/shopping_snapshot_resource.rb +302 -0
  254. data/lib/mencoro/models/start_brand_discovery_job_request.rb +185 -0
  255. data/lib/mencoro/models/start_brand_name_suggestion_job_request.rb +287 -0
  256. data/lib/mencoro/models/start_clustering_job_request_data.rb +249 -0
  257. data/lib/mencoro/models/start_keyword_discovery_job_request.rb +266 -0
  258. data/lib/mencoro/models/start_prompt_discovery_job_request.rb +276 -0
  259. data/lib/mencoro/models/submitted_checks_resource.rb +195 -0
  260. data/lib/mencoro/models/subscription_resource.rb +362 -0
  261. data/lib/mencoro/models/tracked_query_count_resource.rb +193 -0
  262. data/lib/mencoro/models/tracked_query_detail_resource.rb +440 -0
  263. data/lib/mencoro/models/tracked_query_resource.rb +492 -0
  264. data/lib/mencoro/models/tracked_query_usage_resource.rb +175 -0
  265. data/lib/mencoro/models/update_organization_request.rb +195 -0
  266. data/lib/mencoro/models/update_project_brand_profile_request.rb +218 -0
  267. data/lib/mencoro/models/update_project_request.rb +182 -0
  268. data/lib/mencoro/version.rb +15 -0
  269. data/lib/mencoro.rb +169 -0
  270. data/mencoro.gemspec +41 -0
  271. data/spec/api/account_api_spec.rb +57 -0
  272. data/spec/api/analytics_api_spec.rb +318 -0
  273. data/spec/api/billing_api_spec.rb +47 -0
  274. data/spec/api/captures_api_spec.rb +93 -0
  275. data/spec/api/clusters_api_spec.rb +126 -0
  276. data/spec/api/discovery_api_spec.rb +94 -0
  277. data/spec/api/invitations_api_spec.rb +83 -0
  278. data/spec/api/jobs_api_spec.rb +48 -0
  279. data/spec/api/members_api_spec.rb +111 -0
  280. data/spec/api/organization_operations_api_spec.rb +47 -0
  281. data/spec/api/organizations_api_spec.rb +181 -0
  282. data/spec/api/projects_api_spec.rb +229 -0
  283. data/spec/api/tracked_queries_api_spec.rb +344 -0
  284. data/spec/models/accepted_job_resource_spec.rb +48 -0
  285. data/spec/models/ai_response_report_resource_spec.rb +70 -0
  286. data/spec/models/ai_response_resource_spec.rb +90 -0
  287. data/spec/models/apply_clustering_job_outcome_clusters_inner_spec.rb +48 -0
  288. data/spec/models/apply_clustering_job_outcome_failed_inner_spec.rb +48 -0
  289. data/spec/models/apply_clustering_job_outcome_skipped_clusters_inner_spec.rb +42 -0
  290. data/spec/models/apply_clustering_job_outcome_spec.rb +60 -0
  291. data/spec/models/apply_clustering_job_outcome_successful_inner_spec.rb +42 -0
  292. data/spec/models/async_job_resource_spec.rb +62 -0
  293. data/spec/models/batch_change_tracked_query_check_frequency_request_data_spec.rb +46 -0
  294. data/spec/models/batch_change_tracked_query_passes_request_data_spec.rb +42 -0
  295. data/spec/models/batch_create_query_clusters_outcome_failed_inner_spec.rb +48 -0
  296. data/spec/models/batch_create_query_clusters_outcome_spec.rb +42 -0
  297. data/spec/models/batch_create_query_clusters_outcome_successful_inner_spec.rb +42 -0
  298. data/spec/models/batch_create_query_clusters_request_data_spec.rb +36 -0
  299. data/spec/models/batch_create_tracked_queries_request_data_spec.rb +80 -0
  300. data/spec/models/batch_create_tracked_queries_result_resource_failed_inner_spec.rb +60 -0
  301. data/spec/models/batch_create_tracked_queries_result_resource_spec.rb +42 -0
  302. data/spec/models/batch_create_tracked_queries_result_resource_successful_inner_spec.rb +54 -0
  303. data/spec/models/batch_force_check_tracked_queries200_response_failed_inner_spec.rb +48 -0
  304. data/spec/models/batch_force_check_tracked_queries200_response_spec.rb +42 -0
  305. data/spec/models/batch_pause_tracked_queries200_response_failed_inner_spec.rb +48 -0
  306. data/spec/models/batch_pause_tracked_queries200_response_spec.rb +42 -0
  307. data/spec/models/batch_pause_tracked_queries200_response_successful_inner_spec.rb +36 -0
  308. data/spec/models/batch_resume_tracked_queries200_response_spec.rb +42 -0
  309. data/spec/models/batch_targets_request_data_spec.rb +36 -0
  310. data/spec/models/batch_write_outcome_failed_inner_spec.rb +48 -0
  311. data/spec/models/batch_write_outcome_spec.rb +42 -0
  312. data/spec/models/brand_profile_resource_spec.rb +54 -0
  313. data/spec/models/bulk_add_clusters_to_tracked_queries200_response_spec.rb +42 -0
  314. data/spec/models/bulk_add_clusters_to_tracked_queries_request_spec.rb +42 -0
  315. data/spec/models/bulk_remove_clusters_from_tracked_queries200_response_spec.rb +42 -0
  316. data/spec/models/bulk_remove_clusters_from_tracked_queries_request_spec.rb +42 -0
  317. data/spec/models/change_member_role_request_spec.rb +40 -0
  318. data/spec/models/change_tracked_query_check_frequency_request_data_spec.rb +40 -0
  319. data/spec/models/change_tracked_query_passes_request_data_spec.rb +36 -0
  320. data/spec/models/citation_resource_spec.rb +90 -0
  321. data/spec/models/cluster_membership_request_data_spec.rb +36 -0
  322. data/spec/models/competitor_resource_spec.rb +54 -0
  323. data/spec/models/create_competitor_request_spec.rb +48 -0
  324. data/spec/models/create_invitation200_response_spec.rb +52 -0
  325. data/spec/models/create_invitation201_response_spec.rb +86 -0
  326. data/spec/models/create_invitation_request_spec.rb +46 -0
  327. data/spec/models/create_organization201_response_spec.rb +48 -0
  328. data/spec/models/create_organization_request_spec.rb +36 -0
  329. data/spec/models/create_project_request_competitors_inner_spec.rb +48 -0
  330. data/spec/models/create_project_request_spec.rb +54 -0
  331. data/spec/models/create_query_cluster409_response_spec.rb +48 -0
  332. data/spec/models/create_query_cluster_request_spec.rb +36 -0
  333. data/spec/models/delete_query_cluster200_response_spec.rb +48 -0
  334. data/spec/models/entitlements_resource_spec.rb +104 -0
  335. data/spec/models/get_available_filters200_response_clusters_inner_spec.rb +42 -0
  336. data/spec/models/get_available_filters200_response_spec.rb +48 -0
  337. data/spec/models/get_me_stats200_response_organizations_spec.rb +36 -0
  338. data/spec/models/get_me_stats200_response_projects_spec.rb +42 -0
  339. data/spec/models/get_me_stats200_response_spec.rb +42 -0
  340. data/spec/models/get_membership_stats200_response_spec.rb +72 -0
  341. data/spec/models/get_mention_samples400_response_details_value_inner_spec.rb +48 -0
  342. data/spec/models/get_mention_samples400_response_spec.rb +54 -0
  343. data/spec/models/get_metric_glossary200_response_metrics_inner_spec.rb +76 -0
  344. data/spec/models/get_metric_glossary200_response_spec.rb +36 -0
  345. data/spec/models/get_organization_overview200_response_aggregate_spec.rb +72 -0
  346. data/spec/models/get_organization_overview200_response_projects_inner_spec.rb +78 -0
  347. data/spec/models/get_organization_overview200_response_spec.rb +42 -0
  348. data/spec/models/get_organization_stats200_response_invitations_spec.rb +36 -0
  349. data/spec/models/get_organization_stats200_response_members_spec.rb +36 -0
  350. data/spec/models/get_organization_stats200_response_projects_spec.rb +42 -0
  351. data/spec/models/get_organization_stats200_response_spec.rb +48 -0
  352. data/spec/models/get_share_of_voice_formula200_response_spec.rb +54 -0
  353. data/spec/models/get_tracking_coverage200_response_sample_inner_spec.rb +70 -0
  354. data/spec/models/get_tracking_coverage200_response_spec.rb +72 -0
  355. data/spec/models/invitation_resource_spec.rb +80 -0
  356. data/spec/models/keyword_listing_resource_mention_type_counts_spec.rb +60 -0
  357. data/spec/models/keyword_listing_resource_spec.rb +262 -0
  358. data/spec/models/list_ai_responses200_response_spec.rb +42 -0
  359. data/spec/models/list_competitors200_response_spec.rb +42 -0
  360. data/spec/models/list_invitations200_response_spec.rb +42 -0
  361. data/spec/models/list_keyword_listings200_response_spec.rb +54 -0
  362. data/spec/models/list_members200_response_spec.rb +42 -0
  363. data/spec/models/list_organizations200_response_spec.rb +42 -0
  364. data/spec/models/list_projects200_response_spec.rb +42 -0
  365. data/spec/models/list_query_clusters200_response_spec.rb +42 -0
  366. data/spec/models/list_search_snapshots200_response_spec.rb +42 -0
  367. data/spec/models/list_shopping_snapshots200_response_spec.rb +42 -0
  368. data/spec/models/me_resource_spec.rb +92 -0
  369. data/spec/models/member_resource_spec.rb +74 -0
  370. data/spec/models/operation_effect_spec.rb +48 -0
  371. data/spec/models/organization_resource_spec.rb +86 -0
  372. data/spec/models/preview_organization_operation200_response_organization_spec.rb +42 -0
  373. data/spec/models/preview_organization_operation200_response_spec.rb +84 -0
  374. data/spec/models/preview_organization_operation_request_spec.rb +58 -0
  375. data/spec/models/project_detail_resource_competitors_inner_spec.rb +54 -0
  376. data/spec/models/project_detail_resource_spec.rb +82 -0
  377. data/spec/models/project_resource_spec.rb +136 -0
  378. data/spec/models/projected_monthly_checks_resource_spec.rb +42 -0
  379. data/spec/models/query_cluster_resource_spec.rb +48 -0
  380. data/spec/models/report_ai_response_request_spec.rb +52 -0
  381. data/spec/models/search_result_resource_spec.rb +78 -0
  382. data/spec/models/search_snapshot_resource_spec.rb +66 -0
  383. data/spec/models/search_tracked_queries200_response_spec.rb +42 -0
  384. data/spec/models/shopping_offer_resource_spec.rb +96 -0
  385. data/spec/models/shopping_snapshot_resource_spec.rb +66 -0
  386. data/spec/models/start_brand_discovery_job_request_spec.rb +42 -0
  387. data/spec/models/start_brand_name_suggestion_job_request_spec.rb +54 -0
  388. data/spec/models/start_clustering_job_request_data_spec.rb +52 -0
  389. data/spec/models/start_keyword_discovery_job_request_spec.rb +54 -0
  390. data/spec/models/start_prompt_discovery_job_request_spec.rb +54 -0
  391. data/spec/models/submitted_checks_resource_spec.rb +42 -0
  392. data/spec/models/subscription_resource_spec.rb +120 -0
  393. data/spec/models/tracked_query_count_resource_spec.rb +42 -0
  394. data/spec/models/tracked_query_detail_resource_spec.rb +108 -0
  395. data/spec/models/tracked_query_resource_spec.rb +150 -0
  396. data/spec/models/tracked_query_usage_resource_spec.rb +36 -0
  397. data/spec/models/update_organization_request_spec.rb +48 -0
  398. data/spec/models/update_project_brand_profile_request_spec.rb +42 -0
  399. data/spec/models/update_project_request_spec.rb +36 -0
  400. data/spec/spec_helper.rb +111 -0
  401. metadata +641 -0
data/lib/mencoro.rb ADDED
@@ -0,0 +1,169 @@
1
+ =begin
2
+ #Mencoro API
3
+
4
+ #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`.
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+ Contact: support@mencoro.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.24.0
10
+
11
+ =end
12
+
13
+ # Common files
14
+ require 'mencoro/api_client'
15
+ require 'mencoro/api_error'
16
+ require 'mencoro/api_model_base'
17
+ require 'mencoro/version'
18
+ require 'mencoro/configuration'
19
+
20
+ # Models
21
+ require 'mencoro/models/accepted_job_resource'
22
+ require 'mencoro/models/ai_response_report_resource'
23
+ require 'mencoro/models/ai_response_resource'
24
+ require 'mencoro/models/apply_clustering_job_outcome'
25
+ require 'mencoro/models/apply_clustering_job_outcome_clusters_inner'
26
+ require 'mencoro/models/apply_clustering_job_outcome_failed_inner'
27
+ require 'mencoro/models/apply_clustering_job_outcome_skipped_clusters_inner'
28
+ require 'mencoro/models/apply_clustering_job_outcome_successful_inner'
29
+ require 'mencoro/models/async_job_resource'
30
+ require 'mencoro/models/batch_change_tracked_query_check_frequency_request_data'
31
+ require 'mencoro/models/batch_change_tracked_query_passes_request_data'
32
+ require 'mencoro/models/batch_create_query_clusters_outcome'
33
+ require 'mencoro/models/batch_create_query_clusters_outcome_failed_inner'
34
+ require 'mencoro/models/batch_create_query_clusters_outcome_successful_inner'
35
+ require 'mencoro/models/batch_create_query_clusters_request_data'
36
+ require 'mencoro/models/batch_create_tracked_queries_request_data'
37
+ require 'mencoro/models/batch_create_tracked_queries_result_resource'
38
+ require 'mencoro/models/batch_create_tracked_queries_result_resource_failed_inner'
39
+ require 'mencoro/models/batch_create_tracked_queries_result_resource_successful_inner'
40
+ require 'mencoro/models/batch_force_check_tracked_queries200_response'
41
+ require 'mencoro/models/batch_force_check_tracked_queries200_response_failed_inner'
42
+ require 'mencoro/models/batch_pause_tracked_queries200_response'
43
+ require 'mencoro/models/batch_pause_tracked_queries200_response_failed_inner'
44
+ require 'mencoro/models/batch_pause_tracked_queries200_response_successful_inner'
45
+ require 'mencoro/models/batch_resume_tracked_queries200_response'
46
+ require 'mencoro/models/batch_targets_request_data'
47
+ require 'mencoro/models/batch_write_outcome'
48
+ require 'mencoro/models/batch_write_outcome_failed_inner'
49
+ require 'mencoro/models/brand_profile_resource'
50
+ require 'mencoro/models/bulk_add_clusters_to_tracked_queries200_response'
51
+ require 'mencoro/models/bulk_add_clusters_to_tracked_queries_request'
52
+ require 'mencoro/models/bulk_remove_clusters_from_tracked_queries200_response'
53
+ require 'mencoro/models/bulk_remove_clusters_from_tracked_queries_request'
54
+ require 'mencoro/models/change_member_role_request'
55
+ require 'mencoro/models/change_tracked_query_check_frequency_request_data'
56
+ require 'mencoro/models/change_tracked_query_passes_request_data'
57
+ require 'mencoro/models/citation_resource'
58
+ require 'mencoro/models/cluster_membership_request_data'
59
+ require 'mencoro/models/competitor_resource'
60
+ require 'mencoro/models/create_competitor_request'
61
+ require 'mencoro/models/create_invitation200_response'
62
+ require 'mencoro/models/create_invitation201_response'
63
+ require 'mencoro/models/create_invitation_request'
64
+ require 'mencoro/models/create_organization201_response'
65
+ require 'mencoro/models/create_organization_request'
66
+ require 'mencoro/models/create_project_request'
67
+ require 'mencoro/models/create_project_request_competitors_inner'
68
+ require 'mencoro/models/create_query_cluster409_response'
69
+ require 'mencoro/models/create_query_cluster_request'
70
+ require 'mencoro/models/delete_query_cluster200_response'
71
+ require 'mencoro/models/entitlements_resource'
72
+ require 'mencoro/models/get_available_filters200_response'
73
+ require 'mencoro/models/get_available_filters200_response_clusters_inner'
74
+ require 'mencoro/models/get_me_stats200_response'
75
+ require 'mencoro/models/get_me_stats200_response_organizations'
76
+ require 'mencoro/models/get_me_stats200_response_projects'
77
+ require 'mencoro/models/get_membership_stats200_response'
78
+ require 'mencoro/models/get_mention_samples400_response'
79
+ require 'mencoro/models/get_mention_samples400_response_details_value_inner'
80
+ require 'mencoro/models/get_metric_glossary200_response'
81
+ require 'mencoro/models/get_metric_glossary200_response_metrics_inner'
82
+ require 'mencoro/models/get_organization_overview200_response'
83
+ require 'mencoro/models/get_organization_overview200_response_aggregate'
84
+ require 'mencoro/models/get_organization_overview200_response_projects_inner'
85
+ require 'mencoro/models/get_organization_stats200_response'
86
+ require 'mencoro/models/get_organization_stats200_response_invitations'
87
+ require 'mencoro/models/get_organization_stats200_response_members'
88
+ require 'mencoro/models/get_organization_stats200_response_projects'
89
+ require 'mencoro/models/get_share_of_voice_formula200_response'
90
+ require 'mencoro/models/get_tracking_coverage200_response'
91
+ require 'mencoro/models/get_tracking_coverage200_response_sample_inner'
92
+ require 'mencoro/models/invitation_resource'
93
+ require 'mencoro/models/keyword_listing_resource'
94
+ require 'mencoro/models/keyword_listing_resource_mention_type_counts'
95
+ require 'mencoro/models/list_ai_responses200_response'
96
+ require 'mencoro/models/list_competitors200_response'
97
+ require 'mencoro/models/list_invitations200_response'
98
+ require 'mencoro/models/list_keyword_listings200_response'
99
+ require 'mencoro/models/list_members200_response'
100
+ require 'mencoro/models/list_organizations200_response'
101
+ require 'mencoro/models/list_projects200_response'
102
+ require 'mencoro/models/list_query_clusters200_response'
103
+ require 'mencoro/models/list_search_snapshots200_response'
104
+ require 'mencoro/models/list_shopping_snapshots200_response'
105
+ require 'mencoro/models/me_resource'
106
+ require 'mencoro/models/member_resource'
107
+ require 'mencoro/models/operation_effect'
108
+ require 'mencoro/models/organization_resource'
109
+ require 'mencoro/models/preview_organization_operation200_response'
110
+ require 'mencoro/models/preview_organization_operation200_response_organization'
111
+ require 'mencoro/models/preview_organization_operation_request'
112
+ require 'mencoro/models/project_detail_resource'
113
+ require 'mencoro/models/project_detail_resource_competitors_inner'
114
+ require 'mencoro/models/project_resource'
115
+ require 'mencoro/models/projected_monthly_checks_resource'
116
+ require 'mencoro/models/query_cluster_resource'
117
+ require 'mencoro/models/report_ai_response_request'
118
+ require 'mencoro/models/search_result_resource'
119
+ require 'mencoro/models/search_snapshot_resource'
120
+ require 'mencoro/models/search_tracked_queries200_response'
121
+ require 'mencoro/models/shopping_offer_resource'
122
+ require 'mencoro/models/shopping_snapshot_resource'
123
+ require 'mencoro/models/start_brand_discovery_job_request'
124
+ require 'mencoro/models/start_brand_name_suggestion_job_request'
125
+ require 'mencoro/models/start_clustering_job_request_data'
126
+ require 'mencoro/models/start_keyword_discovery_job_request'
127
+ require 'mencoro/models/start_prompt_discovery_job_request'
128
+ require 'mencoro/models/submitted_checks_resource'
129
+ require 'mencoro/models/subscription_resource'
130
+ require 'mencoro/models/tracked_query_count_resource'
131
+ require 'mencoro/models/tracked_query_detail_resource'
132
+ require 'mencoro/models/tracked_query_resource'
133
+ require 'mencoro/models/tracked_query_usage_resource'
134
+ require 'mencoro/models/update_organization_request'
135
+ require 'mencoro/models/update_project_brand_profile_request'
136
+ require 'mencoro/models/update_project_request'
137
+
138
+ # APIs
139
+ require 'mencoro/api/account_api'
140
+ require 'mencoro/api/analytics_api'
141
+ require 'mencoro/api/billing_api'
142
+ require 'mencoro/api/captures_api'
143
+ require 'mencoro/api/clusters_api'
144
+ require 'mencoro/api/discovery_api'
145
+ require 'mencoro/api/invitations_api'
146
+ require 'mencoro/api/jobs_api'
147
+ require 'mencoro/api/members_api'
148
+ require 'mencoro/api/organization_operations_api'
149
+ require 'mencoro/api/organizations_api'
150
+ require 'mencoro/api/projects_api'
151
+ require 'mencoro/api/tracked_queries_api'
152
+
153
+ module Mencoro
154
+ class << self
155
+ # Customize default settings for the SDK using block.
156
+ # Mencoro.configure do |config|
157
+ # config.username = "xxx"
158
+ # config.password = "xxx"
159
+ # end
160
+ # If no block given, return the default Configuration object.
161
+ def configure
162
+ if block_given?
163
+ yield(Configuration.default)
164
+ else
165
+ Configuration.default
166
+ end
167
+ end
168
+ end
169
+ end
data/mencoro.gemspec ADDED
@@ -0,0 +1,41 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ =begin
4
+ #Mencoro API
5
+
6
+ #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`.
7
+
8
+ The version of the OpenAPI document: 1.0.0
9
+ Contact: support@mencoro.com
10
+ Generated by: https://openapi-generator.tech
11
+ Generator version: 7.24.0
12
+
13
+ =end
14
+
15
+ $:.push File.expand_path("../lib", __FILE__)
16
+ require "mencoro/version"
17
+
18
+ Gem::Specification.new do |s|
19
+ s.name = "mencoro"
20
+ s.version = Mencoro::VERSION
21
+ s.platform = Gem::Platform::RUBY
22
+ s.authors = ["OpenAPI-Generator"]
23
+ s.email = ["support@mencoro.com"]
24
+ s.homepage = "https://openapi-generator.tech"
25
+ s.summary = "Mencoro API Ruby Gem"
26
+ s.description = "Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`."
27
+ s.license = "Unlicense"
28
+ s.required_ruby_version = ">= 2.7"
29
+ s.metadata = {}
30
+
31
+ s.add_runtime_dependency 'faraday', '>= 1.0.1', '< 3.0'
32
+ s.add_runtime_dependency 'faraday-multipart'
33
+ s.add_runtime_dependency 'marcel'
34
+
35
+ s.add_development_dependency 'rspec', '~> 3.6', '>= 3.6.0'
36
+
37
+ s.files = `find *`.split("\n").uniq.sort.select { |f| !f.empty? }
38
+ s.test_files = `find spec/*`.split("\n")
39
+ s.executables = []
40
+ s.require_paths = ["lib"]
41
+ end
@@ -0,0 +1,57 @@
1
+ =begin
2
+ #Mencoro API
3
+
4
+ #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`.
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+ Contact: support@mencoro.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.24.0
10
+
11
+ =end
12
+
13
+ require 'spec_helper'
14
+ require 'json'
15
+
16
+ # Unit tests for Mencoro::AccountApi
17
+ # Automatically generated by openapi-generator (https://openapi-generator.tech)
18
+ # Please update as you see appropriate
19
+ describe 'AccountApi' do
20
+ before do
21
+ # run before each test
22
+ @api_instance = Mencoro::AccountApi.new
23
+ end
24
+
25
+ after do
26
+ # run after each test
27
+ end
28
+
29
+ describe 'test an instance of AccountApi' do
30
+ it 'should create an instance of AccountApi' do
31
+ expect(@api_instance).to be_instance_of(Mencoro::AccountApi)
32
+ end
33
+ end
34
+
35
+ # unit tests for get_me
36
+ # Get the authenticated identity
37
+ # Returns the user the API key belongs to, plus the key&#39;s capabilities and scope. Use it to confirm which credential a call runs under.
38
+ # @param [Hash] opts the optional parameters
39
+ # @return [MeResource]
40
+ describe 'get_me test' do
41
+ it 'should work' do
42
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
43
+ end
44
+ end
45
+
46
+ # unit tests for get_me_stats
47
+ # Counts across everything the key can reach
48
+ # 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.
49
+ # @param [Hash] opts the optional parameters
50
+ # @return [GetMeStats200Response]
51
+ describe 'get_me_stats test' do
52
+ it 'should work' do
53
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
54
+ end
55
+ end
56
+
57
+ end
@@ -0,0 +1,318 @@
1
+ =begin
2
+ #Mencoro API
3
+
4
+ #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`.
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+ Contact: support@mencoro.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.24.0
10
+
11
+ =end
12
+
13
+ require 'spec_helper'
14
+ require 'json'
15
+
16
+ # Unit tests for Mencoro::AnalyticsApi
17
+ # Automatically generated by openapi-generator (https://openapi-generator.tech)
18
+ # Please update as you see appropriate
19
+ describe 'AnalyticsApi' do
20
+ before do
21
+ # run before each test
22
+ @api_instance = Mencoro::AnalyticsApi.new
23
+ end
24
+
25
+ after do
26
+ # run after each test
27
+ end
28
+
29
+ describe 'test an instance of AnalyticsApi' do
30
+ it 'should create an instance of AnalyticsApi' do
31
+ expect(@api_instance).to be_instance_of(Mencoro::AnalyticsApi)
32
+ end
33
+ end
34
+
35
+ # unit tests for get_available_filters
36
+ # Filter values a project is configured for
37
+ # Minimum role: viewer. Call this first: it is where every other analytics operation sends you for the valid engines, countries and keyword clusters of a project, and the values it returns are the exact strings the engines, countries and queryClusterIds parameters accept — anything else is rejected as a 400. Engines are engine codes, countries are ISO-3166 alpha-2 codes, and clusters are {id, name} objects whose id goes in queryClusterIds. Takes no date window: it describes how the project is configured right now, so a value is listed as soon as a tracked query uses it, even when no response has been captured for it yet. An empty list therefore means nothing is configured for it, not that no data was collected. Competitor ids are not part of this response.
38
+ # @param organization_id
39
+ # @param project_id
40
+ # @param [Hash] opts the optional parameters
41
+ # @return [GetAvailableFilters200Response]
42
+ describe 'get_available_filters test' do
43
+ it 'should work' do
44
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
45
+ end
46
+ end
47
+
48
+ # unit tests for get_cited_sources
49
+ # Domains and pages the AI answers cited
50
+ # Minimum role: viewer. The sources the answer engines drew on across a project&#39;s AI answers over a date window, ranked by how often they were cited. Per source: citationCount, the total number of citations; distinctResponseCount and distinctQueryCount, how many captured answers and tracked queries it appeared in; avgPosition, its average 1-based rank inside the answers&#39; citation lists, where LOWER is better. A null avgPosition means no citation in the window carried a position, not a rank of zero; a null domain or sampleTitle means the citation never carried one. &#x60;total&#x60; counts the distinct sources matching the window, before paging. The list is UNFILTERED by ownership: the brand&#39;s, competitors&#39; and third-party sources sit in the same ranking. Only the AI answer engines (chatgpt, perplexity, google_ai_overview, google_ai_mode) produce citations, so filtering by google_serp or google_shopping is accepted and returns nothing. Citations still behind an answer engine&#39;s redirect (a google.com/goto link, whose URL names the engine rather than the source) are excluded, so a source cited only through such links is absent from this list rather than counted as zero.
51
+ # @param organization_id
52
+ # @param project_id
53
+ # @param date_from Inclusive start of the window, Y-m-d. Must fall inside the data retention window.
54
+ # @param date_to Inclusive end of the window, Y-m-d.
55
+ # @param [Hash] opts the optional parameters
56
+ # @option opts [Array<String>] :engines Repeatable, or comma-separated. Only the AI engines carry citations.
57
+ # @option opts [String] :group_by Grain of the roll-up: \&quot;domain\&quot; by host, \&quot;page\&quot; by exact URL.
58
+ # @option opts [Integer] :limit Page size. A larger value is rejected, never silently reduced.
59
+ # @option opts [Integer] :offset Number of sources to skip.
60
+ # @return [nil]
61
+ describe 'get_cited_sources test' do
62
+ it 'should work' do
63
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
64
+ end
65
+ end
66
+
67
+ # unit tests for get_cluster_breakdown
68
+ # Rank-tracking metrics per keyword cluster
69
+ # Minimum role: viewer. One row per keyword cluster over a date window, with its tracked query and keyword counts, average positions, rates, share of voice and sentiment split. A row whose clusterId is null is the ungrouped bucket: the tracked queries belonging to no cluster. Position metrics are 1-based and LOWER is better; rates, positivityIndex and shareOfVoice are 0-100 percentages where higher is better. A null metric means nothing was captured for that cluster in the window — it is not a zero, and averaging or charting it as one would misstate the period. dataDirtySince is non-null while a recalculation is pending, meaning the numbers predate the latest configuration change.
70
+ # @param organization_id
71
+ # @param project_id
72
+ # @param date_from Inclusive start of the window, Y-m-d. Must fall inside the data retention window.
73
+ # @param date_to Inclusive end of the window, Y-m-d.
74
+ # @param [Hash] opts the optional parameters
75
+ # @option opts [Array<String>] :engines Repeatable, or comma-separated.
76
+ # @option opts [Array<String>] :countries ISO-3166 alpha-2 codes or English names. Must be configured on the project.
77
+ # @option opts [Array<String>] :query_cluster_ids Restrict to these clusters. Each must belong to the project.
78
+ # @option opts [Boolean] :include_ungrouped_queries Sent alone, returns only the ungrouped bucket rather than adding it to every cluster.
79
+ # @return [nil]
80
+ describe 'get_cluster_breakdown test' do
81
+ it 'should work' do
82
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
83
+ end
84
+ end
85
+
86
+ # unit tests for get_competitor_co_occurrence
87
+ # Head-to-head record of the brand against each tracked competitor
88
+ # Minimum role: viewer. Restricted to the AI answers where the brand and a competitor are BOTH mentioned, one row per tracked competitor: sharedResponseCount is how many such answers there are, and brandWins / competitorWins / ties split them by who holds the better (lower) best mention position. winRate is the percentage 0-100 of those answers the brand wins; avgOwnPosition and avgCompetitorPosition are the average best mention position each side held, 1-based, so LOWER is better. exampleQueryText and exampleAiResponseId point at one representative shared answer. Every nullable field means \&quot;not known yet\&quot; rather than zero: a null winRate or average position is the absence of a shared answer in the window, not a record of losing. Tracked competitors only.
89
+ # @param organization_id
90
+ # @param project_id
91
+ # @param date_from Inclusive start of the window, Y-m-d. Must fall inside the data retention window.
92
+ # @param date_to Inclusive end of the window, Y-m-d.
93
+ # @param [Hash] opts the optional parameters
94
+ # @option opts [Array<String>] :engines Repeatable, or comma-separated. SERP and Shopping carry no AI answer text, so they contribute no co-occurrence.
95
+ # @option opts [Array<String>] :countries ISO-3166 alpha-2 codes or English names. Must be configured on the project.
96
+ # @option opts [String] :competitor_id Restricts the answer to a single tracked competitor. Omit it for every tracked competitor. The available-filters endpoint lists the valid ids.
97
+ # @return [nil]
98
+ describe 'get_competitor_co_occurrence test' do
99
+ it 'should work' do
100
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
101
+ end
102
+ end
103
+
104
+ # unit tests for get_mention_mix
105
+ # Composition of a project brand mentions in AI answers
106
+ # Minimum role: viewer. Counts of the project brand&#39;s own text mentions in AI answers over a date window, grouped three ways: byType (recommendation, comparison, listing, example, reference), byTone (positive, neutral, negative) and byQualifier (direct, conditional — a conditional mention is one the answer hedged with a condition). These are the inputs behind the Share of Voice weighted score. Every bucket is always present and is a plain count, never null: a zero means no mention of that kind was found in the window. The three groupings count the same mentions, so each one sums to the same total. Only the project brand is counted, never a competitor, and only mentions inside the answer text — a citation of the brand&#39;s URL is not a mention here. Only AI answer engines produce mentions, so restricting engines to google_serp or google_shopping alone returns all zeros. For the positive/neutral/negative split per engine and per competitor use the sentiment endpoint.
107
+ # @param organization_id
108
+ # @param project_id
109
+ # @param date_from Inclusive start of the window, Y-m-d. Must fall inside the data retention window.
110
+ # @param date_to Inclusive end of the window, Y-m-d.
111
+ # @param [Hash] opts the optional parameters
112
+ # @option opts [Array<String>] :engines Repeatable, or comma-separated. Non-AI engines contribute no mentions.
113
+ # @option opts [Array<String>] :countries ISO-3166 alpha-2 codes or English names. Must be configured on the project.
114
+ # @return [nil]
115
+ describe 'get_mention_mix test' do
116
+ it 'should work' do
117
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
118
+ end
119
+ end
120
+
121
+ # unit tests for get_mention_samples
122
+ # Sample of the raw AI mention texts of a project
123
+ # Minimum role: viewer. A paginated page of the individual mention texts behind the aggregate numbers, for qualitative review and for checking sentiment labels by eye. Each sample carries the mention text, the engine and country it was seen in, the tracked query that produced it, its sentiment and mention type, and mentionPosition — a 1-based rank inside the answer where LOWER is better, always present. &#x60;total&#x60; counts every mention matching the filters, not the size of the page returned. Only mentions inside the answer text are returned: a citation of the brand URL is not a mention here, and only AI answer engines produce mentions, so restricting engines to google_serp or google_shopping alone returns an empty page rather than an error. Two fields carry a \&quot;not known\&quot; rather than a zero: country is null and queryText is empty when the tracked query behind the mention has since been deleted, and competitorId is null when the mention row stores no competitor id — which is NOT an assertion that the mention is about your own brand, since an untracked competitor also stores none. Read mentionRelation instead: &#x60;own&#x60; and &#x60;tracked-competitor&#x60; are what the scraper resolved to a configured entity, &#x60;untracked-competitor&#x60; is a rival the project does not track, and null means the row predates the field. brandName carries the mentioned brand, and is the only way to name an untracked competitor, which has no competitor id to resolve one from. Omitting the competitorId filter returns exactly the rows with no competitor id stored — that is, own-brand AND untracked-competitor mentions together, not every competitor; pass a competitor UUID to restrict the page to that competitor, and use mentionRelation to separate the rest. For the aggregate positive/neutral/negative split use the sentiment endpoint, and for weighted mention-type counts the mention mix endpoint.
124
+ # @param organization_id
125
+ # @param project_id
126
+ # @param date_from Inclusive start of the window, Y-m-d. Must fall inside the data retention window.
127
+ # @param date_to Inclusive end of the window, Y-m-d.
128
+ # @param [Hash] opts the optional parameters
129
+ # @option opts [Array<String>] :engines Repeatable, or comma-separated. Non-AI engines contribute no mentions.
130
+ # @option opts [Array<String>] :countries ISO-3166 alpha-2 codes or English names. Must be configured on the project.
131
+ # @option opts [String] :sentiment Restrict to one sentiment label. Omit for every sentiment.
132
+ # @option opts [String] :mention_type Restrict to one mention type. Omit for every type.
133
+ # @option opts [String] :competitor_id UUID of a single competitor, as listed by the available-filters endpoint (competitors[].id). Omitted, the page is restricted to mentions storing no competitor id, which is own-brand and untracked-competitor mentions together — see the operation description and read mentionRelation to tell them apart.
134
+ # @option opts [String] :sort_by recent: newest first. negative: negative sentiment first, then neutral, then positive, newest first inside each. engine and country: grouped alphabetically, newest first inside each group. An unknown value is rejected, not replaced by the default.
135
+ # @option opts [Integer] :limit Page size. A larger value is rejected, never silently reduced.
136
+ # @option opts [Integer] :offset Number of matching mentions to skip before the page starts.
137
+ # @return [nil]
138
+ describe 'get_mention_samples test' do
139
+ it 'should work' do
140
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
141
+ end
142
+ end
143
+
144
+ # unit tests for get_metric_glossary
145
+ # Map everyday wording to a metric and the operation that serves it
146
+ # Static reference, no project data. Each entry gives a metric, the everyday words people use for it, its unit and range, whether higher or lower is better, the operation that returns it, and example questions. Useful when turning a vague or non-technical request into the right call.
147
+ # @param [Hash] opts the optional parameters
148
+ # @return [GetMetricGlossary200Response]
149
+ describe 'get_metric_glossary test' do
150
+ it 'should work' do
151
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
152
+ end
153
+ end
154
+
155
+ # unit tests for get_organization_overview
156
+ # Snapshot rank-health board across an organization active projects
157
+ # Minimum role: viewer. One row per active project — share of voice, mention rate, average mention position, positivity index and tracked-query count — ordered by share of voice, plus an organization-level aggregate of the same metrics. Archived projects are excluded. This is a current-state snapshot and takes no date window; for a date-ranged comparison call the per-project operations (getProjectMetrics, getProjectTimeSeries) for each projectId returned here. Every metric is nullable, and a null means the project has no rank data yet — not a score of zero. Higher is better for shareOfVoice, mentionRate and positivityIndex; avgMentionPosition is a 1-based rank, so LOWER is better.
158
+ # @param organization_id
159
+ # @param [Hash] opts the optional parameters
160
+ # @return [GetOrganizationOverview200Response]
161
+ describe 'get_organization_overview test' do
162
+ it 'should work' do
163
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
164
+ end
165
+ end
166
+
167
+ # unit tests for get_project_metrics
168
+ # Headline visibility metrics of a project
169
+ # Minimum role: viewer. The project overview over a date window: share of voice (own and per competitor), mention / SERP / shopping rates, average and best positions, position stability, the sentiment split and the position-distribution buckets. Positions are 1-based, so a LOWER number is better; rates, the positivity index and share of voice are percentages from 0 to 100, where HIGHER is better. Every &#x60;trend*&#x60; field is the signed change against the immediately preceding window of the same length: negative means an improved position, positive means an improved rate or score. A null metric means \&quot;not known yet\&quot;, never zero: a scalar is null when the window holds no checks at all, and a &#x60;trend*&#x60; field is null when there is no earlier window to compare against. The counters (&#x60;mentionCount&#x60;, &#x60;*TrackedQueryCount&#x60;, &#x60;*QueriesWithResult&#x60;, &#x60;sentiment*&#x60; and &#x60;mentionTypeCounts&#x60;) are genuine zeros instead, so an empty window reads as zero counts with null rates. &#x60;dataDirtySince&#x60; is non-null while a recalculation is pending, meaning the figures may still move for dates from then on.
170
+ # @param organization_id
171
+ # @param project_id
172
+ # @param date_from Inclusive start of the window, Y-m-d. Must fall inside the data retention window.
173
+ # @param date_to Inclusive end of the window, Y-m-d.
174
+ # @param [Hash] opts the optional parameters
175
+ # @option opts [Array<String>] :engines Repeatable, or comma-separated.
176
+ # @option opts [Array<String>] :countries ISO-3166 alpha-2 codes or English names. Must be configured on the project.
177
+ # @option opts [Array<String>] :query_cluster_ids Restrict to these keyword clusters. Each must belong to this project.
178
+ # @option opts [Boolean] :include_ungrouped_queries Only meaningful together with queryClusterIds: also counts the tracked queries that belong to no cluster.
179
+ # @return [nil]
180
+ describe 'get_project_metrics test' do
181
+ it 'should work' do
182
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
183
+ end
184
+ end
185
+
186
+ # unit tests for get_project_sentiment
187
+ # Sentiment breakdown of a project brand mentions
188
+ # Minimum role: viewer. Positive, neutral and negative split of the brand mentions in AI answers over a date window, per engine and per competitor. A null positivityIndex means no mentions were found in the window, which is not the same as a score of zero.
189
+ # @param organization_id
190
+ # @param project_id
191
+ # @param date_from Inclusive start of the window, Y-m-d. Must fall inside the data retention window.
192
+ # @param date_to Inclusive end of the window, Y-m-d.
193
+ # @param [Hash] opts the optional parameters
194
+ # @option opts [Array<String>] :engines Repeatable, or comma-separated.
195
+ # @option opts [Array<String>] :countries ISO-3166 alpha-2 codes or English names. Must be configured on the project.
196
+ # @option opts [Array<String>] :query_cluster_ids
197
+ # @option opts [Boolean] :include_ungrouped_queries
198
+ # @return [nil]
199
+ describe 'get_project_sentiment test' do
200
+ it 'should work' do
201
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
202
+ end
203
+ end
204
+
205
+ # unit tests for get_project_time_series
206
+ # Rank-tracking metrics of a project over time
207
+ # Minimum role: viewer. One point per bucket over the date window, each carrying the brand metrics and one same-shaped entry per requested competitor. Rank metrics (serp, shopping, mention, link) are 1-based averages where LOWER is better; positivity (0-100), shareOfVoice (0-100), mentionRate (0-100) and serpRate (0-100) are scores where higher is better. Every metric is nullable, and a null means no data was collected for that bucket, which is not the same as a value of zero. A project with no tracked queries returns an empty points list. Prefer weekly or monthly granularity over a long window to keep the response compact.
208
+ # @param organization_id
209
+ # @param project_id
210
+ # @param date_from Inclusive start of the window, Y-m-d. Must fall inside the data retention window.
211
+ # @param date_to Inclusive end of the window, Y-m-d.
212
+ # @param [Hash] opts the optional parameters
213
+ # @option opts [String] :granularity Bucket size of each point.
214
+ # @option opts [Array<String>] :engines Repeatable, or comma-separated.
215
+ # @option opts [Array<String>] :countries ISO-3166 alpha-2 codes or English names. Must be configured on the project.
216
+ # @option opts [Array<String>] :query_cluster_ids
217
+ # @option opts [Boolean] :include_ungrouped_queries On its own this NARROWS the series to tracked queries that belong to no cluster; combined with queryClusterIds it widens those clusters to also cover them.
218
+ # @option opts [Array<String>] :competitor_ids Repeatable, or comma-separated. Each id adds one series under the competitors map of every point.
219
+ # @return [nil]
220
+ describe 'get_project_time_series test' do
221
+ it 'should work' do
222
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
223
+ end
224
+ end
225
+
226
+ # unit tests for get_query_movers
227
+ # Tracked queries ranked by how much a metric moved
228
+ # Minimum role: viewer. One row per tracked query — a single engine plus country — carrying its current metric envelope and the signed change against the immediately preceding window of equal length: a 7-day window is compared with the 7 days before it. Every trend delta is signed so that POSITIVE means improved, including the position trends, where the underlying avgSerpPosition / avgShoppingPosition / avgMentionPosition / avgLinkPosition are 1-based ranks and therefore LOWER is better. shareOfVoice and positivityIndex are percentages from 0 to 100, where HIGHER is better. Sorting applies to the trend keys only: sortOrder&#x3D;desc gives the top gainers, asc the top losers. Every nullable field means \&quot;not known yet\&quot; rather than zero — a null position or shareOfVoice is a query with no data in the window, and a null positivityIndex or trend is a period with no mentions to score, neither of which is a record of losing ground. total counts the tracked queries the filters match, not the rows on this page. dataDirtySince is a date from which the rank data is being recomputed, or null when nothing is pending; while it is non-null the deltas may still move.
229
+ # @param organization_id
230
+ # @param project_id
231
+ # @param date_from Inclusive start of the window, Y-m-d. Must fall inside the data retention window. The comparison window is the equally long stretch immediately before it.
232
+ # @param date_to Inclusive end of the window, Y-m-d.
233
+ # @param [Hash] opts the optional parameters
234
+ # @option opts [Array<String>] :engines Repeatable, or comma-separated.
235
+ # @option opts [Array<String>] :countries ISO-3166 alpha-2 codes or English names. Must be configured on the project.
236
+ # @option opts [String] :sort_by Which trend delta ranks the rows. Positions improve as they fall, so a positive delta is always an improvement whichever key you pick. An unknown value is rejected, not replaced by the default.
237
+ # @option opts [String] :sort_order desc for the top gainers, asc for the top losers.
238
+ # @option opts [Integer] :limit Page size. A value above the maximum is rejected, never clamped.
239
+ # @option opts [Integer] :offset
240
+ # @return [nil]
241
+ describe 'get_query_movers test' do
242
+ it 'should work' do
243
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
244
+ end
245
+ end
246
+
247
+ # unit tests for get_share_of_voice_formula
248
+ # The constants behind the Share of Voice score
249
+ # Minimum role: viewer. Static reference data, the same for every project: the weights and multipliers that turn individual brand mentions into a Share of Voice score. Each mention is worth &#x60;mentionTypeWeights[type] * sentimentMultipliers[tone] * (conditional ? conditionalMultiplier : directMultiplier)&#x60;, and a competitor&#39;s Share of Voice is its share of the summed weights of every brand in the window, as a percentage. mentionTypeWeights is keyed by mention type (recommendation, comparison, listing, example, reference) and sentimentMultipliers by tone (positive, neutral, negative); a negative mention is discounted, not discarded, because it still evidences presence. A conditional mention is one the answer hedged with a condition (\&quot;if you need X\&quot;). Use this to explain a score, not to recompute one: the counts it applies to come from the mention mix endpoint. Every value is always present and is never null.
250
+ # @param organization_id
251
+ # @param project_id
252
+ # @param [Hash] opts the optional parameters
253
+ # @return [GetShareOfVoiceFormula200Response]
254
+ describe 'get_share_of_voice_formula test' do
255
+ it 'should work' do
256
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
257
+ end
258
+ end
259
+
260
+ # unit tests for get_tracked_query_time_series
261
+ # Rank-tracking time series of a single tracked query
262
+ # Minimum role: viewer. One point per bucket over the date window, each carrying the brand metrics and one same-shaped entry per requested competitor. Positions (serp, shopping, mention, link) are 1-based, so a LOWER number is better; positivity, shareOfVoice, mentionRate and serpRate are percentages from 0 to 100, where higher is better. Every metric is nullable, and a null means nothing was captured for that entity in that bucket — it is not a zero: a null shareOfVoice means no measurement, a shareOfVoice of 0 means measured and never mentioned. The tracked query fixes its own engine and country, so no engine or country filter is accepted. A non-null dataDirtySince is a timestamp warning that tracked queries were deleted from the project and historical buckets may still include their contributions until the nightly refresh rebuilds them.
263
+ # @param organization_id
264
+ # @param project_id
265
+ # @param tracked_query_id Must belong to the project in the path.
266
+ # @param date_from Inclusive start of the window, Y-m-d. Must fall inside the data retention window.
267
+ # @param date_to Inclusive end of the window, Y-m-d.
268
+ # @param [Hash] opts the optional parameters
269
+ # @option opts [String] :granularity Bucket size. Prefer weekly or monthly for long windows.
270
+ # @option opts [Array<String>] :competitor_ids Competitors to add as extra series, repeatable or comma-separated. Valid ids come from the available-filters endpoint.
271
+ # @return [nil]
272
+ describe 'get_tracked_query_time_series test' do
273
+ it 'should work' do
274
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
275
+ end
276
+ end
277
+
278
+ # unit tests for get_tracking_coverage
279
+ # Coverage and staleness of a project tracked queries
280
+ # Minimum role: viewer. A current-state snapshot answering \&quot;what is stale or not being tracked\&quot;: total is every tracked query on the project, active and paused split it by status, neverChecked counts the active queries that have never run, and overdue counts the active queries whose last check is older than their own check-frequency interval (daily, weekly or monthly). neverChecked and overdue are disjoint — a query that has never run is never also counted as overdue — and both ignore paused queries, which are not expected to be checked at all. sample lists up to 20 of the overdue queries, most stale first; it is a sample of overdue only, so it never contains a never-checked query and is empty when overdue is 0. Takes no date window: every count describes the project as it stands right now.
281
+ # @param organization_id
282
+ # @param project_id
283
+ # @param [Hash] opts the optional parameters
284
+ # @return [GetTrackingCoverage200Response]
285
+ describe 'get_tracking_coverage test' do
286
+ it 'should work' do
287
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
288
+ end
289
+ end
290
+
291
+ # unit tests for list_keyword_listings
292
+ # List a project&#39;s keywords with their windowed metrics
293
+ # Minimum role: viewer. One row per distinct keyword text of the project — every tracked query asking that text, on any engine in any country, collapsed into a single row whose variantIds name the tracked queries behind it. Each row carries the metrics of the requested window and a signed trend against the window of equal length immediately before it, where POSITIVE ALWAYS MEANS BETTER whichever direction the metric itself runs. Positions are 1-based and lower is better; rates, positivityIndex and shareOfVoice are 0-100 and higher is better; mentionPositionStability is a day-to-day spread, so lower is steadier. A null metric means nothing was captured for that keyword in the window — it is not a zero. &#x60;total&#x60; counts the KEYWORDS matching the filters, not the rows on this page and not tracked queries; &#x60;totalVariantCount&#x60; counts the tracked queries behind the keywords matching every filter EXCEPT &#x60;search&#x60; — with a text search applied it still counts the project&#39;s variants, so do not size a force-check budget from it on a searched page. NEITHER IS THE PROJECT&#39;S TRACKED-QUERY COUNT: the count operation reads the write model, while this listing reads projections refreshed in the background from it, so the numbers legitimately differ while those projections catch up. A project whose cached tracked-query count has not been refreshed yet answers an empty page with total 0 — the same answer as a project with no tracked queries at all — so treat an unexpected empty page right after creating queries as \&quot;not projected yet\&quot;, not as \&quot;no data\&quot;. dataDirtySince is non-null while a recalculation is pending, meaning the metrics predate the latest configuration change. Filters narrow which VARIANTS count towards a row, so engines, countries, statuses, checkFrequencies and nPassesValues each report what the filters selected rather than everything the keyword has. A filter or sort key this endpoint cannot honour is rejected by name, never ignored, and a limit above the maximum is rejected rather than quietly reduced. This operation answers JSON only: a keyword row carries a nested mentionTypeCounts object, so it is not part of the CSV family.
294
+ # @param organization_id
295
+ # @param project_id
296
+ # @param date_from Inclusive start of the window, Y-m-d. Must fall inside the data retention window.
297
+ # @param date_to Inclusive end of the window, Y-m-d. The trend compares against the equally long window ending the day before dateFrom.
298
+ # @param [Hash] opts the optional parameters
299
+ # @option opts [Array<String>] :engines Repeatable, or comma-separated. Narrows which variants count towards each row.
300
+ # @option opts [Array<String>] :countries ISO-3166 alpha-2 codes or English names. Must be configured on the project.
301
+ # @option opts [Array<String>] :query_cluster_ids Restrict to keywords with a variant in these clusters. Each must belong to the project.
302
+ # @option opts [Boolean] :include_ungrouped_queries Sent alone, restricts the listing to keywords whose variants belong to no cluster; sent with queryClusterIds, adds them to that selection.
303
+ # @option opts [String] :status Restrict to variants with this status. A keyword whose variants disagree still reports statusSummary \&quot;mixed\&quot;.
304
+ # @option opts [Array<String>] :check_frequencies Repeatable, or comma-separated.
305
+ # @option opts [Array<Integer>] :n_passes Repeatable, or comma-separated. Restrict to variants configured with these pass counts.
306
+ # @option opts [String] :search Case-insensitive substring match on the keyword text.
307
+ # @option opts [String] :sort_by Named after the field it orders by. Rows with no value for the chosen key sort last in either direction. An unknown key is rejected, not replaced by the default.
308
+ # @option opts [String] :sort_order
309
+ # @option opts [Integer] :limit Page size. A larger value is rejected, never silently reduced.
310
+ # @option opts [Integer] :offset Number of matching keywords to skip before the page starts.
311
+ # @return [ListKeywordListings200Response]
312
+ describe 'list_keyword_listings test' do
313
+ it 'should work' do
314
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
315
+ end
316
+ end
317
+
318
+ end
@@ -0,0 +1,47 @@
1
+ =begin
2
+ #Mencoro API
3
+
4
+ #Public API for Mencoro customers. Authenticate with an API key: `Authorization: Bearer mencoro_sk_...`.
5
+
6
+ The version of the OpenAPI document: 1.0.0
7
+ Contact: support@mencoro.com
8
+ Generated by: https://openapi-generator.tech
9
+ Generator version: 7.24.0
10
+
11
+ =end
12
+
13
+ require 'spec_helper'
14
+ require 'json'
15
+
16
+ # Unit tests for Mencoro::BillingApi
17
+ # Automatically generated by openapi-generator (https://openapi-generator.tech)
18
+ # Please update as you see appropriate
19
+ describe 'BillingApi' do
20
+ before do
21
+ # run before each test
22
+ @api_instance = Mencoro::BillingApi.new
23
+ end
24
+
25
+ after do
26
+ # run after each test
27
+ end
28
+
29
+ describe 'test an instance of BillingApi' do
30
+ it 'should create an instance of BillingApi' do
31
+ expect(@api_instance).to be_instance_of(Mencoro::BillingApi)
32
+ end
33
+ end
34
+
35
+ # unit tests for get_subscription
36
+ # Get the subscription of an organization
37
+ # 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 \&quot;status\&quot;: \&quot;none\&quot; and every other field null - a null is \&quot;not applicable\&quot;, never a stand-in for a zero budget or zero consumption. Stripe identifiers, prices and payment methods are not part of this API.
38
+ # @param organization_id
39
+ # @param [Hash] opts the optional parameters
40
+ # @return [SubscriptionResource]
41
+ describe 'get_subscription test' do
42
+ it 'should work' do
43
+ # assertion here. ref: https://rspec.info/features/3-12/rspec-expectations/built-in-matchers/
44
+ end
45
+ end
46
+
47
+ end