feat:Add Claroty vendor model suggestion API endpoint#260
Conversation
WalkthroughA new API endpoint was added to the OpenAPI specification: POST Changes
Estimated code review effort🎯 2 (Simple) | ⏱️ ~8 minutes Poem
🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. ✨ Finishing Touches
🧪 Generate unit tests (beta)
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Actionable comments posted: 1
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@src/libs/AI21/openapi.yaml`:
- Around line 3010-3019: The OpenAPI operation
/solutions/claroty/suggest-vendor-model (operationId
claroty_suggest_vendor_model_solutions_claroty_suggest_vendor_model_post) lacks
a requestBody and concrete response schemas, producing an untyped SDK method;
add a JSON requestBody schema describing the expected input fields (e.g., vendor
details, sample data, options) and a 200 response schema describing the
successful result object (e.g., modelId, recommendedVendor, confidence,
metadata), and include typical error responses (e.g., 400/422 for validation
errors with an ErrorResponse schema, and 500 for server errors) so codegen can
generate a typed request/response contract and surface validation info.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: f05f47a1-8ba2-4a91-8ca6-72cd5c3c4d6f
⛔ Files ignored due to path filters (120)
src/libs/AI21/Generated/AI21.Ai21Api.ClarotyProductLookupSolutionsClarotyProductLookupPost.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Ai21Api.ClarotySuggestVendorModelSolutionsClarotySuggestVendorModelPost.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.IAi21Api.ClarotySuggestVendorModelSolutionsClarotySuggestVendorModelPost.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.AnyOf2.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.AnyOf4.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.LanguageStudioApiServerDataTypesExecutionEngineToolDefinition.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.MessagesItem.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.JsonConverters.QueryFilter.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.Assistant.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.AssistantBasicInfo.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.AssistantRoute.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.AssistantsByMcpResponse.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.BodyConvertDocumentFileStudioV1ChatFilesConvertPost.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.BodyParsePdfStudioV1DemosDocumentModifierParsePdfPost.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.BodyProcessRfiDocumentStudioV1DemosRfiProcessRfiPost.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.BodyUploadCheckComplianceStudioV1DemosRegulationsUploadCheckCompliancePost.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.BodyV1LibraryUpload.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ChatCompletion.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ChatCompletionResponseChoice.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ChatCompletionResponseDeltaChoice.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ChatCompletionVllmStreamingMessage.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ChatRequest.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ChatStreamingContentDelta.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ChatStreamingFirstDelta.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ChatStreamingToolCallsDelta.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ChatStreamingToolCallsFirstDelta.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ClarotySuggestVendorModelSolutionsClarotySuggestVendorModelPostResponse.Json.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ClarotySuggestVendorModelSolutionsClarotySuggestVendorModelPostResponse.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.CompareTextRequest.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ConnectorConnectionStatus.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ConnectorsDataSources.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ConnectorsStatus.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ConnectorsSyncParams.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ConnectorsToken.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.CreateAssistantRequest.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.CreateMCPStorageRequest.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.CreateMaestroRunsPayload.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.CreateOrganizationSchemaRequest.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.CreatePlanPayload.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.CreateRoutePayload.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.CreateSecretPayload.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.DataSourceMetadata.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.DeleteAssistantResponse.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.DeleteMCPStorageResponse.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.Demo.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.DemoCreate.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.DetectSchemaRequest.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.DetectSchemaResponse.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.DocumentReference.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.DocumentSchema.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.DownloadModifiedDocumentRequest.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.FileResponse.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.FunctionToolDefinition.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.GenerateAssistantRequest.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.GenerateAssistantResponse.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.HTTPToolEndpoint.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.HTTPToolFunction.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.HTTPToolFunctionParamProperties.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.HTTPToolFunctionParameters.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.HTTPToolResource.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.IgnestionBatchStatusCount.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.IngestionBatchStatusResponse.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.JambaExecuteRequest.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesChatToolDefinition.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.LanguageStudioApiServerDataTypesExecutionEngineRequirement.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.LibrarySearchRequest.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ListAssistantsResponse.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ListMCPsStorageResponse.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ListPlansResponse.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ListRoutesResponse.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.Logprobs.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.LogprobsData.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MCPDefinition.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MCPDiscoveryResponse.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MCPStorageResponse.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MCPTool.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MaestroRunError.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MaestroRunResult.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.MarkdownRequest.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.Message.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ModelInfo.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ModelPricing.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ModelsInfoResponse.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.OrgSchema.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.OrgSchemas.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.Plan.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.RFIResponseSection.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.RequirementItem.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.RequirementsGenerationRequest.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.RequirementsGenerationResponse.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ResponseFormat.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.RunAssistantRequest.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.SecretResponse.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.StarterQuestion.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.SystemMessage.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ThreadNameGenerationRequest.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ThreadNameGenerationResponse.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ToolCall.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ToolCallDelta.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ToolCallDeltaStart.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ToolFunction.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ToolFunctionDelta.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ToolFunctionDeltaStart.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ToolMessage.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ToolParameters.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.TopLogprobsData.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.UpdateMCPStorageRequest.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.UpdateRoutePayload.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.UsageInfo.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.UserMessage.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ValidationError.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.ValidationResult.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.WebsiteConnectorCreateConfigPayload.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.WebsiteConnectorIngestUrlPayload.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.WebsiteConnectorIngestWebsitePayload.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.WebsiteConnectorPayload.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.WebsiteConnectorRetryIngestWebsitePayload.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.WorkflowConfig.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.WorkspaceModelResponse.g.csis excluded by!**/generated/**src/libs/AI21/Generated/AI21.Models.WorkspaceModelsResponse.g.csis excluded by!**/generated/**
📒 Files selected for processing (1)
src/libs/AI21/openapi.yaml
| /solutions/claroty/suggest-vendor-model: | ||
| post: | ||
| summary: Claroty Suggest Vendor Model | ||
| operationId: claroty_suggest_vendor_model_solutions_claroty_suggest_vendor_model_post | ||
| responses: | ||
| '200': | ||
| description: Successful Response | ||
| content: | ||
| application/json: | ||
| schema: { } |
There was a problem hiding this comment.
Define the request/response contract here, not just the route.
Right now this endpoint generates a parameterless ClarotySuggestVendorModelSolutionsClarotySuggestVendorModelPostAsync() that returns raw Task<string> because the spec has no requestBody and the 200 schema is empty. That leaves the SDK without a usable typed contract for a public API operation.
Please add the concrete request schema and response schema (and typical validation/error responses if the backend returns them) so codegen can expose the real API surface. As per coding guidelines, "Maintain the OpenAPI specification at src/libs/AI21/openapi.yaml as the source of truth for the SDK API".
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed.
In `@src/libs/AI21/openapi.yaml` around lines 3010 - 3019, The OpenAPI operation
/solutions/claroty/suggest-vendor-model (operationId
claroty_suggest_vendor_model_solutions_claroty_suggest_vendor_model_post) lacks
a requestBody and concrete response schemas, producing an untyped SDK method;
add a JSON requestBody schema describing the expected input fields (e.g., vendor
details, sample data, options) and a 200 response schema describing the
successful result object (e.g., modelId, recommendedVendor, confidence,
metadata), and include typical error responses (e.g., 400/422 for validation
errors with an ErrorResponse schema, and 500 for server errors) so codegen can
generate a typed request/response contract and surface validation info.
Summary by CodeRabbit
New Features