import {z} from 'zod' export type ProtosIssuesV1IssuesFilter = {ids?: Array | undefined, since?: string | undefined, until?: string | undefined, repositoryNames?: Array | undefined, repositoryIds?: Array | undefined, repositoryTags?: Array | undefined, refs?: Array | undefined, repositoryRefIds?: Array | undefined, aiVerdicts?: (Array<'VERDICT_UNSPECIFIED' | 'VERDICT_TRUE_POSITIVE' | 'VERDICT_FALSE_POSITIVE' | 'VERDICT_NO_VERDICT'>) | undefined, aiSensitivities?: Array | undefined, status?: (Array<'ISSUE_STATUS_UNSPECIFIED' | 'ISSUE_STATUS_FIXED' | 'ISSUE_STATUS_MUTED' | 'ISSUE_STATUS_REMOVED' | 'ISSUE_STATUS_UNRESOLVED'>) | undefined, tab?: ('ISSUE_TAB_OPEN' | 'ISSUE_TAB_IGNORED' | 'ISSUE_TAB_CLOSED' | 'ISSUE_TAB_REVIEWING' | 'ISSUE_TAB_FIXING' | 'ISSUE_TAB_PROVISIONALLY_IGNORED') | undefined, teamNames?: Array | undefined, actions?: (Array<'MODE_UNSPECIFIED' | 'MODE_MONITOR' | 'MODE_COMMENT' | 'MODE_BLOCK' | 'MODE_DISABLED'>) | undefined, policySlugs?: Array | undefined, rules?: Array | undefined, ruleIds?: Array | undefined, rulesets?: Array | undefined, categories?: Array | undefined, confidences?: (Array<'CONFIDENCE_UNSPECIFIED' | 'CONFIDENCE_HIGH' | 'CONFIDENCE_MEDIUM' | 'CONFIDENCE_LOW'>) | undefined, severities?: (Array<'SEVERITY_UNSPECIFIED' | 'SEVERITY_HIGH' | 'SEVERITY_MEDIUM' | 'SEVERITY_LOW' | 'SEVERITY_CRITICAL'>) | undefined, transitivities?: (Array<'UNKNOWN_TRANSITIVITY' | 'TRANSITIVE' | 'DIRECT'>) | undefined, exposures?: (Array<'UNKNOWN_EXPOSURE' | 'UNREACHABLE' | 'REACHABLE'>) | undefined, dependencies?: Array | undefined, cves?: Array | undefined, source?: (Array<'SOURCE_UNSPECIFIED' | 'SOURCE_PRO' | 'SOURCE_COMMUNITY' | 'SOURCE_CUSTOM'>) | undefined, reachabilities?: (Array<'REACHABILITY_UNSPECIFIED' | 'REACHABILITY_CONDITIONALLY_REACHABLE' | 'REACHABILITY_ALWAYS_REACHABLE' | 'REACHABILITY_REACHABLE' | 'REACHABILITY_UNREACHABLE' | 'REACHABILITY_UNKNOWN'>) | undefined, issueParentIds?: Array | undefined, validationStates?: (Array<'VALIDATION_STATE_UNSPECIFIED' | 'VALIDATION_STATE_CONFIRMED_VALID' | 'VALIDATION_STATE_CONFIRMED_INVALID' | 'VALIDATION_STATE_VALIDATION_ERROR' | 'VALIDATION_STATE_NO_VALIDATOR'>) | undefined, secretTypes?: Array | undefined, repoVisibilities?: (Array<'REPOSITORY_VISIBILITY_UNSPECIFIED' | 'REPOSITORY_VISIBILITY_PUBLIC' | 'REPOSITORY_VISIBILITY_PRIVATE' | 'REPOSITORY_VISIBILITY_UNKNOWN'>) | undefined, excludeHistorical?: boolean | undefined, onPrimaryBranch?: boolean | undefined, epssProbabilities?: (Array<'EPSS_PROBABILITY_UNSPECIFIED' | 'EPSS_PROBABILITY_LOW' | 'EPSS_PROBABILITY_MEDIUM' | 'EPSS_PROBABILITY_HIGH' | 'EPSS_PROBABILITY_NONE'>) | undefined, triageReasons?: (Array<'FINDING_TRIAGE_REASON_UNSPECIFIED' | 'FINDING_TRIAGE_REASON_FALSE_POSITIVE' | 'FINDING_TRIAGE_REASON_NO_TIME' | 'FINDING_TRIAGE_REASON_ACCEPTABLE_RISK' | 'FINDING_TRIAGE_REASON_NO_TRIAGE_REASON' | 'FINDING_TRIAGE_REASON_UNKNOWN' | 'FINDING_TRIAGE_REASON_DUPLICATE'>) | undefined, timeFilter?: ('TIME_FILTER_RELEVANT_SINCE' | 'TIME_FILTER_TRIAGED_AT' | 'TIME_FILTER_FIXED_AT') | undefined, includeTicketed?: boolean | undefined, backlogType?: ('ISSUE_BACKLOG_TYPE_PROD' | 'ISSUE_BACKLOG_TYPE_PREPROD') | undefined, scaRuleKind?: (Array<'SCA_RULE_KIND_UNSPECIFIED' | 'SCA_RULE_KIND_REACHABLE' | 'SCA_RULE_KIND_UPGRADE_ONLY' | 'SCA_RULE_KIND_MALICIOUS_DEPENDENCY' | 'SCA_RULE_KIND_LEGACY'>) | undefined, aiMemoryWillFlipVerdict?: string | undefined, aiMemoryReferenced?: string | undefined, includeAiMemoryRendered?: boolean | undefined, aiMemoryRendered?: string | undefined, memoryIdInScope?: string | undefined, relativeSince?: ('RELATIVE_SINCE_ONE_DAY' | 'RELATIVE_SINCE_ONE_WEEK' | 'RELATIVE_SINCE_ONE_MONTH' | 'RELATIVE_SINCE_THREE_MONTHS' | 'RELATIVE_SINCE_SIX_MONTHS' | 'RELATIVE_SINCE_ONE_YEAR' | 'RELATIVE_SINCE_ALL_TIME' | 'RELATIVE_SINCE_ONE_MINUTE') | undefined, repositoryDeploymentStatuses?: (Array<'DEPLOYMENT_STATUS_UNSPECIFIED' | 'DEPLOYMENT_STATUS_UNKNOWN' | 'DEPLOYMENT_STATUS_DEPLOYED' | 'DEPLOYMENT_STATUS_NOT_DEPLOYED'>) | undefined, upgradeGuidance?: (Array<'BREAKING_CHANGE_TYPE_UNSPECIFIED' | 'BREAKING_CHANGE_TYPE_PARAMETER_CHANGE' | 'BREAKING_CHANGE_TYPE_FUNCTION_OR_CLASS_REMOVAL' | 'BREAKING_CHANGE_TYPE_FUNCTION_RENAME' | 'BREAKING_CHANGE_TYPE_LOGIC_CHANGE' | 'BREAKING_CHANGE_TYPE_NOT_BREAKING'>) | undefined, repositoryPublicExposures?: (Array<'PUBLIC_EXPOSURE_UNSPECIFIED' | 'PUBLIC_EXPOSURE_UNKNOWN' | 'PUBLIC_EXPOSURE_PUBLIC' | 'PUBLIC_EXPOSURE_NOT_PUBLIC'>) | undefined, clickToFixPrStates?: (Array<'CLICK_TO_FIX_PR_STATE_UNSPECIFIED' | 'CLICK_TO_FIX_PR_STATE_OPEN' | 'CLICK_TO_FIX_PR_STATE_MERGED' | 'CLICK_TO_FIX_PR_STATE_NO_PR'>) | undefined, advisoryIds?: Array | undefined, aggregateIssueStates?: (Array<'AGGREGATE_ISSUE_STATE_UNSPECIFIED' | 'AGGREGATE_ISSUE_STATE_OPEN' | 'AGGREGATE_ISSUE_STATE_FIXED' | 'AGGREGATE_ISSUE_STATE_REMOVED' | 'AGGREGATE_ISSUE_STATE_IGNORED_APP' | 'AGGREGATE_ISSUE_STATE_IGNORED_CODE' | 'AGGREGATE_ISSUE_STATE_UNKNOWN' | 'AGGREGATE_ISSUE_STATE_REVIEWING' | 'AGGREGATE_ISSUE_STATE_FIXING' | 'AGGREGATE_ISSUE_STATE_PROVISIONALLY_IGNORED_APP'>) | undefined, upgradeGuidanceFilters?: (Array<'UPGRADE_GUIDANCE_SELECTION_UNSPECIFIED' | 'UPGRADE_GUIDANCE_SELECTION_SAFE' | 'UPGRADE_GUIDANCE_SELECTION_BREAKING'>) | undefined, filterIssueTypes?: (Array<'ISSUE_TYPE_UNSPECIFIED' | 'ISSUE_TYPE_SAST' | 'ISSUE_TYPE_SCA' | 'ISSUE_TYPE_SECRETS' | 'ISSUE_TYPE_RESEARCH' | 'ISSUE_TYPE_AI_SAST'>) | undefined, filePaths?: Array | undefined, includeArchived?: boolean | undefined}; export type ProtosIssuesV1ListIssuesRequest = {deploymentId?: string | undefined, issueType?: ('ISSUE_TYPE_SAST' | 'ISSUE_TYPE_SCA' | 'ISSUE_TYPE_SECRETS' | 'ISSUE_TYPE_RESEARCH' | 'ISSUE_TYPE_AI_SAST') | undefined, sortBy?: ('SORT_BY_SEVERITY' | 'SORT_BY_REF' | 'SORT_BY_REPO' | 'SORT_BY_RULE' | 'SORT_BY_RELEVANT_SINCE' | 'SORT_BY_STATE') | undefined, sortDirection?: ('SORT_DIRECTION_ASC' | 'SORT_DIRECTION_DESC') | undefined, limit?: number | undefined, cursor?: string | undefined, filter?: ProtosIssuesV1IssuesFilter | undefined, issueTypes?: (Array<'ISSUE_TYPE_UNSPECIFIED' | 'ISSUE_TYPE_SAST' | 'ISSUE_TYPE_SCA' | 'ISSUE_TYPE_SECRETS' | 'ISSUE_TYPE_RESEARCH' | 'ISSUE_TYPE_AI_SAST'>) | undefined, includeRemediation?: boolean | undefined, includeActivityHistory?: boolean | undefined, includeIsArchived?: boolean | undefined}; export type CreateApiApiAgentDeploymentsDeploymentIdIssuesArgs = {deploymentId: string, body: ProtosIssuesV1ListIssuesRequest}; export type CreateApiApiAgentDeploymentsDeploymentIdIssuesOptions = {baseUrl: string, SemgrepWebToken?: string | undefined, fetch?: typeof fetch | undefined}; export const protosIssuesV1IssuePrimaryRefItem = z.object({id: z.string().optional(), ref: z.string().optional()}); export const protosIssuesV1IssueRepository = z.object({name: z.string().optional(), id: z.string().optional(), type: z.enum(["SCM_TYPE_GITHUB", "SCM_TYPE_GITHUB_ENTERPRISE", "SCM_TYPE_GITLAB", "SCM_TYPE_GITLAB_SELFMANAGED", "SCM_TYPE_BITBUCKET", "SCM_TYPE_BITBUCKET_DATACENTER", "SCM_TYPE_AZURE_DEVOPS", "SCM_TYPE_UNKNOWN", "SCM_TYPE_HARNESS"]).optional(), primaryRef: protosIssuesV1IssuePrimaryRefItem.optional()}); export const protosIssuesV1IssueScan = z.object({id: z.string().optional(), meta: z.object({}).optional()}); export const protosTicketingV1ExternalTicket = z.object({url: z.string().optional(), externalSlug: z.string().optional(), id: z.string().optional(), linkedIssueIds: z.array(z.string()).optional()}); export const protosAiV1AutotriageFeedback = z.object({autotriageId: z.string().optional(), rating: z.enum(["RATING_GOOD", "RATING_BAD"]).optional(), note: z.string().optional()}); export const protosAiV1Autotriage = z.object({id: z.string().optional(), issueId: z.string().optional(), verdict: z.enum(["VERDICT_TRUE_POSITIVE", "VERDICT_FALSE_POSITIVE", "VERDICT_NO_VERDICT"]).optional(), reason: z.string().optional(), feedback: protosAiV1AutotriageFeedback.optional(), matchBasedId: z.string().optional(), memoryIdsReferenced: z.array(z.string()).optional(), memoryIdsRendered: z.array(z.string()).optional()}); export const protosAiV1SensitivityTags = z.object({id: z.string().optional(), path: z.string().optional(), tags: z.string().optional(), sensitivity: z.enum(["SENSITIVITY_HIGH_SENSITIVITY", "SENSITIVITY_LOW_SENSITIVITY", "SENSITIVITY_NEUTRAL_SENSITIVITY"]).optional()}); export const protosIssuesV1DataflowTracePosition = z.object({line: z.string().optional(), col: z.string().optional(), offset: z.string().optional()}); export const protosIssuesV1DataflowTraceLocation = z.object({path: z.string().optional(), start: protosIssuesV1DataflowTracePosition.optional(), end: protosIssuesV1DataflowTracePosition.optional(), locationUrl: z.string().optional()}); export const protosIssuesV1IssueDataflowTrace = z.object({taintSource: z.array(protosIssuesV1DataflowTraceLocation).optional(), intermediateVars: z.array(protosIssuesV1DataflowTraceLocation).optional(), taintSink: z.array(protosIssuesV1DataflowTraceLocation).optional()}); export const protosIssuesV1ActivityHistoryEventExceptionRequestDetails = z.object({actionSource: z.enum(["FINDING_EXCEPTION_REQUEST_SOURCE_SCM_COMMENT", "FINDING_EXCEPTION_REQUEST_SOURCE_SEMGREP_APPSEC_PLATFORM", "FINDING_EXCEPTION_REQUEST_SOURCE_API"]).optional()}); export const protosIssuesV1IssueActivityHistoryEvent = z.object({date: z.string().optional(), title: z.string().optional(), triageReason: z.string().optional(), note: z.string().optional(), actor: z.string().optional(), historyType: z.enum(["HISTORY_TYPE_STATUS", "HISTORY_TYPE_TRIAGE", "HISTORY_TYPE_AUTOTRIAGE", "HISTORY_TYPE_AUTOTRIAGE_FEEDBACK", "HISTORY_TYPE_AI_TAG", "HISTORY_TYPE_ANALYSIS_STARTED", "HISTORY_TYPE_REVIEW_COMMENT_SILENCED", "HISTORY_TYPE_TICKET_CREATED", "HISTORY_TYPE_TICKET_ATTEMPTED", "HISTORY_TYPE_GUIDANCE_REGENERATION", "HISTORY_TYPE_SCM_MENTION", "HISTORY_TYPE_CLICK_TO_FIX_PR_REQUESTED", "HISTORY_TYPE_CLICK_TO_FIX_PR_OPENED", "HISTORY_TYPE_CLICK_TO_FIX_PR_FAILED", "HISTORY_TYPE_CLICK_TO_FIX_PR_MERGED", "HISTORY_TYPE_EXCEPTION_REQUEST_CREATED", "HISTORY_TYPE_EXCEPTION_REQUEST_APPROVED", "HISTORY_TYPE_EXCEPTION_REQUEST_REJECTED"]).optional(), exceptionRequestDetails: protosIssuesV1ActivityHistoryEventExceptionRequestDetails.optional()}); export const protosIssuesV1IssueRelatedIssue = z.object({id: z.string().optional(), ref: z.string().optional(), pullRequestId: z.string().optional(), aggregateState: z.enum(["AGGREGATE_ISSUE_STATE_OPEN", "AGGREGATE_ISSUE_STATE_FIXED", "AGGREGATE_ISSUE_STATE_REMOVED", "AGGREGATE_ISSUE_STATE_IGNORED_APP", "AGGREGATE_ISSUE_STATE_IGNORED_CODE", "AGGREGATE_ISSUE_STATE_UNKNOWN", "AGGREGATE_ISSUE_STATE_REVIEWING", "AGGREGATE_ISSUE_STATE_FIXING", "AGGREGATE_ISSUE_STATE_PROVISIONALLY_IGNORED_APP"]).optional(), createdAt: z.string().optional()}); export const protosAiV1Autofix = z.object({id: z.string().optional(), fixCode: z.string().optional(), fixDiff: z.string().optional(), explanation: z.string().optional(), url: z.string().optional()}); export const protosAiV1Guidance = z.object({id: z.string().optional(), summary: z.string().optional(), guidanceText: z.string().optional(), memoryIdsUsed: z.array(z.string()).optional()}); export const protosAiV1Remediation = z.object({issueId: z.string().optional(), matchBasedId: z.string().optional(), autofix: protosAiV1Autofix.optional(), guidance: protosAiV1Guidance.optional()}); export const protosIssuesV1SupersededRule = z.object({product: z.enum(["RULE_TYPE_SAST", "RULE_TYPE_SCA", "RULE_TYPE_SECRETS"]).optional(), rulePath: z.string().optional()}); export const protosTicketingV1TicketAttempt = z.object({attemptedAt: z.string().optional(), responseMessage: z.string().optional()}); export const protosIssuesV1IssueSastAttributes = z.object({}); export const protosIssuesV1ScaAttributesFoundDependency = z.object({package: z.string().optional(), version: z.string().optional(), transitivity: z.enum(["UNKNOWN_TRANSITIVITY", "TRANSITIVE", "DIRECT"]).optional(), lockfileLineUrl: z.string().optional(), filePath: z.string().optional(), ecosystem: z.enum(["no_package_manager", "npm", "pypi", "gomod", "cargo", "maven", "gem", "composer", "nuget", "pub", "swiftpm", "hex", "cocoapods", "mix", "opam"]).optional(), manifestFilePath: z.string().optional()}); export const protosIssuesV1ScaAttributesFixRecommendation = z.object({package: z.string().optional(), version: z.string().optional()}); export const protosScaV1EpssScore = z.object({score: z.number().optional(), percentile: z.number().optional(), updatedAt: z.string().optional(), categorization: z.enum(["EPSS_PROBABILITY_LOW", "EPSS_PROBABILITY_MEDIUM", "EPSS_PROBABILITY_HIGH", "EPSS_PROBABILITY_NONE"]).optional()}); export const protosIssuesV1ScaMatchInfoTransitiveMatch = z.object({dependency: protosIssuesV1ScaAttributesFoundDependency.optional(), path: z.string().optional(), line: z.string().optional()}); export const protosIssuesV1ScaAttributesScaMatchInfo = z.object({matchKind: z.enum(["SCA_MATCH_KIND_LOCKFILE_ONLY", "SCA_MATCH_KIND_DIRECT_REACHABLE", "SCA_MATCH_KIND_DIRECT_UNREACHABLE", "SCA_MATCH_KIND_TRANSITIVE_REACHABLE", "SCA_MATCH_KIND_TRANSITIVE_UNREACHABLE", "SCA_MATCH_KIND_TRANSITIVE_UNDETERMINED"]).optional(), analyzedPackages: z.array(protosIssuesV1ScaAttributesFoundDependency).optional(), transitiveMatches: z.array(protosIssuesV1ScaMatchInfoTransitiveMatch).optional()}); export const protosIssuesV1ScaAttributesIntroducingDependency = z.object({package: z.string().optional(), version: z.string().optional()}); export const protosIssuesV1IssueScaAttributes = z.object({severity: z.enum(["SEVERITY_HIGH", "SEVERITY_MEDIUM", "SEVERITY_LOW", "SEVERITY_CRITICAL"]).optional(), vulnDatabaseIdentifier: z.string().optional(), reachability: z.enum(["REACHABILITY_CONDITIONALLY_REACHABLE", "REACHABILITY_ALWAYS_REACHABLE", "REACHABILITY_REACHABLE", "REACHABILITY_UNREACHABLE", "REACHABILITY_UNKNOWN"]).optional(), reachableCondition: z.string().optional(), cwes: z.array(z.string()).optional(), foundDependency: protosIssuesV1ScaAttributesFoundDependency.optional(), fixRecommendations: z.array(protosIssuesV1ScaAttributesFixRecommendation).optional(), bestFix: protosIssuesV1ScaAttributesFixRecommendation.optional(), epssScore: protosScaV1EpssScore.optional(), rulePublishDate: z.string().optional(), scaRuleKind: z.enum(["SCA_RULE_KIND_REACHABLE", "SCA_RULE_KIND_UPGRADE_ONLY", "SCA_RULE_KIND_MALICIOUS_DEPENDENCY", "SCA_RULE_KIND_LEGACY"]).optional(), scaMatchInfo: protosIssuesV1ScaAttributesScaMatchInfo.optional(), introducedBy: z.array(protosIssuesV1ScaAttributesIntroducingDependency).optional()}); export const protosSecretsV1HistoricalInfo = z.object({gitCommit: z.string().optional(), gitCommitTimestamp: z.string().optional(), gitBlob: z.string().optional()}); export const protosIssuesV1IssueSecretsAttributes = z.object({validationState: z.enum(["VALIDATION_STATE_CONFIRMED_VALID", "VALIDATION_STATE_CONFIRMED_INVALID", "VALIDATION_STATE_VALIDATION_ERROR", "VALIDATION_STATE_NO_VALIDATOR"]).optional(), secretType: z.string().optional(), historicalInfo: protosSecretsV1HistoricalInfo.optional()}); export const protosAiV1Codeowner: z.ZodType = z.object({id: z.string().optional(), name: z.string().optional(), isTeam: z.boolean().optional(), members: z.array(z.lazy(() => protosAiV1Codeowner)).optional()}); export const protosIssuesV1IssueCodeSnippet = z.object({path: z.string().optional(), content: z.string().optional()}); export const protosAiV1RuleExplanation = z.object({id: z.string().optional(), summary: z.string().optional(), explanation: z.string().optional()}); export const protosAiV1ExploitCondition = z.object({description: z.string().optional(), confirmed: z.boolean().optional()}); export const protosIssuesV1IssueExceptionRequestSummary = z.object({exceptionState: z.enum(["FINDING_EXCEPTION_REQUEST_STATE_REQUESTED", "FINDING_EXCEPTION_REQUEST_STATE_APPROVED", "FINDING_EXCEPTION_REQUEST_STATE_REJECTED"]).optional(), requesterLogin: z.string().optional(), requesterNote: z.string().optional(), requesterTriageReason: z.enum(["FINDING_TRIAGE_REASON_FALSE_POSITIVE", "FINDING_TRIAGE_REASON_NO_TIME", "FINDING_TRIAGE_REASON_ACCEPTABLE_RISK", "FINDING_TRIAGE_REASON_NO_TRIAGE_REASON", "FINDING_TRIAGE_REASON_UNKNOWN", "FINDING_TRIAGE_REASON_DUPLICATE"]).optional(), requesterActionSource: z.enum(["FINDING_EXCEPTION_REQUEST_SOURCE_SCM_COMMENT", "FINDING_EXCEPTION_REQUEST_SOURCE_SEMGREP_APPSEC_PLATFORM", "FINDING_EXCEPTION_REQUEST_SOURCE_API"]).optional(), reviewerLogin: z.string().optional(), requestId: z.string().optional(), reviewId: z.string().optional(), issueId: z.string().optional(), createdAt: z.string().optional(), reviewedAt: z.string().optional()}); export const protosIssuesV1Issue = z.object({id: z.string().optional(), createdAt: z.string().optional(), ref: z.string().optional(), syntacticId: z.string().optional(), matchBasedId: z.string().optional(), ruleId: z.string().optional(), status: z.enum(["ISSUE_STATUS_FIXED", "ISSUE_STATUS_MUTED", "ISSUE_STATUS_REMOVED", "ISSUE_STATUS_UNRESOLVED"]).optional(), repository: protosIssuesV1IssueRepository.optional(), firstSeenScan: protosIssuesV1IssueScan.optional(), triageState: z.enum(["FINDING_TRIAGE_STATE_UNTRIAGED", "FINDING_TRIAGE_STATE_IGNORED", "FINDING_TRIAGE_STATE_REOPENED", "FINDING_TRIAGE_STATE_UNKNOWN", "FINDING_TRIAGE_STATE_REVIEWING", "FINDING_TRIAGE_STATE_FIXING", "FINDING_TRIAGE_STATE_PROVISIONALLY_IGNORED"]).optional(), triageReason: z.enum(["FINDING_TRIAGE_REASON_FALSE_POSITIVE", "FINDING_TRIAGE_REASON_NO_TIME", "FINDING_TRIAGE_REASON_ACCEPTABLE_RISK", "FINDING_TRIAGE_REASON_NO_TRIAGE_REASON", "FINDING_TRIAGE_REASON_UNKNOWN", "FINDING_TRIAGE_REASON_DUPLICATE"]).optional(), relevantSince: z.string().optional(), aggregateState: z.enum(["AGGREGATE_ISSUE_STATE_OPEN", "AGGREGATE_ISSUE_STATE_FIXED", "AGGREGATE_ISSUE_STATE_REMOVED", "AGGREGATE_ISSUE_STATE_IGNORED_APP", "AGGREGATE_ISSUE_STATE_IGNORED_CODE", "AGGREGATE_ISSUE_STATE_UNKNOWN", "AGGREGATE_ISSUE_STATE_REVIEWING", "AGGREGATE_ISSUE_STATE_FIXING", "AGGREGATE_ISSUE_STATE_PROVISIONALLY_IGNORED_APP"]).optional(), note: z.string().optional(), externalTicket: protosTicketingV1ExternalTicket.optional(), vulnGroupKey: z.string().optional(), isBlocking: z.boolean().optional(), autotriage: protosAiV1Autotriage.optional(), aiTags: protosAiV1SensitivityTags.optional(), lineOfCodeUrl: z.string().optional(), codeSnippet: z.string().optional(), dataflowTrace: protosIssuesV1IssueDataflowTrace.optional(), commitUrl: z.string().optional(), activityHistory: z.array(protosIssuesV1IssueActivityHistoryEvent).optional(), relatedIssues: z.array(protosIssuesV1IssueRelatedIssue).optional(), remediation: protosAiV1Remediation.optional(), lastSeenScan: protosIssuesV1IssueScan.optional(), filePath: z.string().optional(), line: z.number().int().optional(), endLine: z.number().int().optional(), column: z.number().int().optional(), endColumn: z.number().int().optional(), severity: z.enum(["SEVERITY_HIGH", "SEVERITY_MEDIUM", "SEVERITY_LOW", "SEVERITY_CRITICAL"]).optional(), message: z.string().optional(), rulePath: z.string().optional(), confidence: z.enum(["CONFIDENCE_HIGH", "CONFIDENCE_MEDIUM", "CONFIDENCE_LOW"]).optional(), ruleUrl: z.string().optional(), ruleReferences: z.array(z.string()).optional(), ruleOrigin: z.enum(["RULE_ORIGIN_CUSTOM", "RULE_ORIGIN_COMMUNITY", "RULE_ORIGIN_PRO_RULES"]).optional(), ruleHashId: z.string().optional(), ruleCweNames: z.array(z.string()).optional(), ruleOwaspNames: z.array(z.string()).optional(), ruleset: z.string().optional(), policySlug: z.string().optional(), category: z.string().optional(), ruleSupersededBy: z.array(protosIssuesV1SupersededRule).optional(), issueType: z.enum(["ISSUE_TYPE_SAST", "ISSUE_TYPE_SCA", "ISSUE_TYPE_SECRETS", "ISSUE_TYPE_RESEARCH", "ISSUE_TYPE_AI_SAST"]).optional(), issueParentId: z.string().optional(), ticketAttempts: z.array(protosTicketingV1TicketAttempt).optional(), sastAttributes: protosIssuesV1IssueSastAttributes.optional(), scaAttributes: protosIssuesV1IssueScaAttributes.optional(), secretsAttributes: protosIssuesV1IssueSecretsAttributes.optional(), subcategories: z.array(z.string()).optional(), refUrl: z.string().optional(), codeowners: z.array(protosAiV1Codeowner).optional(), codeSnippets: z.array(protosIssuesV1IssueCodeSnippet).optional(), ruleExplanation: protosAiV1RuleExplanation.optional(), ruleDisplayName: z.string().optional(), clickToFixPrUrl: z.string().optional(), aiImpact: z.string().optional(), aiExploitConditions: z.array(protosAiV1ExploitCondition).optional(), clickToFixCommitMsg: z.string().optional(), exceptionRequest: protosIssuesV1IssueExceptionRequestSummary.optional(), clickToFixPrId: z.string().optional(), triagePermission: z.enum(["TRIAGE_PERMISSION_IGNORE", "TRIAGE_PERMISSION_REQUEST", "TRIAGE_PERMISSION_NONE"]).optional(), isArchived: z.boolean().optional()}); export const protosIssuesV1ListIssuesResponseReviewComment = z.object({isInline: z.boolean().optional(), threadId: z.string().optional()}); export const protosIssuesV1ListIssuesResponseIssueSummary = z.object({issue: protosIssuesV1Issue.optional(), reviewCount: z.string().optional(), triageCount: z.string().optional(), allRefs: z.array(z.string()).optional(), aiSilencedCount: z.string().optional(), allReviewThreadIds: z.array(z.string()).optional(), allReviewComments: z.array(protosIssuesV1ListIssuesResponseReviewComment).optional()}); export const protosIssuesV1ListIssuesResponse = z.object({issues: z.array(protosIssuesV1ListIssuesResponseIssueSummary).optional(), cursor: z.string().optional()}); export const validateResponse = async ( schema: { readonly '~standard': { readonly validate: (value: unknown) => ({ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }) | Promise<{ readonly value: Output; readonly issues?: undefined } | { readonly issues: ReadonlyArray<{ readonly message: string; readonly path?: ReadonlyArray | undefined }> }> } }, value: unknown ): Promise => { const result = await schema['~standard'].validate(value) if (result.issues !== undefined) { const detail = result.issues .map(({ message, path }) => path?.length ? `${path.map((segment) => String(typeof segment === 'object' ? segment.key : segment)).join('.')}: ${message}` : message ) .join('; ') throw new Error(`Response does not match the schema: ${detail}`, { cause: { issues: result.issues } }) } return result.value }; /** * List Issues * * POST /api/agent/deployments/{deploymentId}/issues * * Also accepts auth: SemgrepJWT */ export const createApiApiAgentDeploymentsDeploymentIdIssues = async (args: CreateApiApiAgentDeploymentsDeploymentIdIssuesArgs, options: CreateApiApiAgentDeploymentsDeploymentIdIssuesOptions) => { const {baseUrl, fetch: fetchFn = fetch, SemgrepWebToken} = options ?? {} const query = new URLSearchParams() const headers = new Headers() headers.set('content-type', "application/json") headers.set('accept', "application/json") if (SemgrepWebToken !== undefined) headers.set('authorization', `Bearer ${SemgrepWebToken}`) const url = `${baseUrl.replace(/\/+$/, '')}/api/agent/deployments/${encodeURIComponent(String(args.deploymentId))}/issues${query.size > 0 ? `?${query}` : ''}` const res = await fetchFn(url, {method: "POST", headers, body: JSON.stringify(args.body)}) if (!res.ok) throw new Error(`Request failed with status ${res.status}`, {cause: {status: res.status, body: await res.text()}}) return validateResponse(protosIssuesV1ListIssuesResponse, await res.json()) };