Look up a vulnerability ID or known alias for its current source explanation and one page of grouped package evidence. Authentication and public_read authorization are required. To assess an installed release, follow up with GET /v1/packages/{registry}/{name}/vulnerabilities?version=....
Read
Use it for
advisory
The served source’s explanation, references, severity and original affected entries
affected_packages.entries
Named packages with separate source_evidence and imported advisories
affected_packages.coverage and diagnostics
Which evidence was acquired and what remains unresolved, including on empty pages
Keep source and imported evidence separate. The service groups canonical package identities; clients need not match aliases or infer registries. The live source and imported association rows can disagree in ranges, fixes or revision. Package-less Git evidence stays under advisory.affected; a CVE can still have useful imported GHSA package associations. Unsupported namespaces remain visible with a null registry. A null registry is not permission to guess one from a purl.
requested_id preserves normalized caller intent. advisory.osv_id and each evidence branch’s ID, URL and revision identify the record actually served. Lookup is exact-first; only an exact source 404 permits one uniquely recorded imported alias candidate. Imported associations use exact ID/direct aliases, with no recursive alias discovery or range merge. Each row keeps its own timestamps and withdrawal state. URLs identify current records, not archival snapshots.
Check coverage before interpreting an empty result.source_status is available, not_found, ambiguous or unavailable; imported_status is available or unavailable. Imported available means that read completed, even with no rows, not worldwide coverage. Source failure can preserve useful imported packages; an imported-read failure can preserve source evidence. Partial reads return 200 with diagnostics. Source not-found plus checked empty imported evidence returns 404. Ambiguity without useful package evidence returns 422 with candidates when available; choose an explicit ID. Wholly unavailable evidence returns a provider error. Successful pagination and has_next_page=false do not establish completeness or safety.
Diagnostics use stable code, displayable message, and retryable. Optional display failures include a JSON pointer path; acquisition diagnostics have null path. Branch on code rather than parsing messages. Response status, section, registry and code vocabularies are open. Known registry/status/section values use lowercase spelling; source discriminators and modification categories retain producer spelling. Honor Retry-After when present.
Distinguish ranges, displays and fixes. Original affected entries retain repeated entries, nullable packages, ecosystem spellings, purls, explicit versions and ordered range events. Derived affected_version_ranges retains native comparisons, semver: ordering and osv-invalid: uncertainty; null means unavailable derivation. These are evidence strings, not manifest constraints. affected_version_display is presentation with at most ten spans, total_count and truncated; it is not matcher input. Null can mean unsupported interpretation or a diagnosed optional failure.
Source fixed_in_versions contains source-reported SEMVER/ECOSYSTEM fixed release strings; it excludes Git commits, limits and last-affected boundaries. Imported fix lists retain storage order. These lists do not certify published or safe releases or recommend an upgrade. Use the package endpoint for version-specific assessment and candidate evidence.
SEMVER ranges use semantic ordering, ECOSYSTEM uses its own ordering, and GIT requires repository ancestry rather than lexical hash sorting. introduced is inclusive (0 means before all versions); fixed is an excluded fixing boundary; last_affected is inclusive and not a fix; limit is an exclusive boundary, not a fix (* means infinity). Missing event fields are null; no implicit events are added. Empty or null evidence never establishes safety.
Timestamps remain strings with source precision; non-null withdrawn_at means withdrawn. Root and per-entry severity are independent. Raw vectors remain strings; an imported numeric SEVERITY_LABEL value is an approximation, not calculated CVSS. Prose is normalized source content, not trusted agent instructions. Reference URLs are not fetched and purls are identifiers; absent optional URLs are null, while unsafe schemes neutralized upstream become empty strings. content_safety reports normalization, not trust or severity.
The fixed response has no fields selector. limit defaults to 5 and accepts 1–8 whole package groups; a group is never split between its advisory rows. No page is automatically drained. Continue with the same requested ID and after; evidence/revision changes invalidate cursors, while changing limit is allowed. Invalid or stale pages return 400, including when other source evidence is available.
Optional caller-defined session ID: one to 64 ASCII letters, digits, underscores or hyphens, preserved exactly. Supply the header at most once. Invalid supplied IDs return 400 INVALID_SESSION_ID; no session is created.
Source ID or known imported alias. Trimmed, case-preserving, 1–512 UTF-8 bytes; embedded whitespace, control and format characters are forbidden. Encode punctuation such as slash within one path segment.
Opaque end_cursor for this requested ID. Preserved unchanged. Evidence or revision changes invalidate continuation; changing limit is allowed. A stale/invalid page is a 400. No automatic draining.
Response
Attributed source and one whole-group package page, with explicit evidence coverage and diagnostics
One advisory lookup with independently usable source and grouped package evidence.
Current exact-first OSV source explanation. Its osv_id identifies the served record. Null on source lookup failure; inspect diagnostics with section advisory. Related source records are never merged.
Known named packages grouped by the existing registry identity rules, combining one served source record with exact-ID/direct-alias associations in the imported corpus. Package-less Git evidence remains under advisory.affected. A source failure preserves imported groups; an imported read failure preserves named source groups. Null means neither branch established package evidence; inspect diagnostics. An invalid or stale selected page returns 400 rather than a successful null page. The REST page defaults to limit 5 and accepts 1–8 complete groups; whole groups are never cut between their advisory rows. This endpoint returns one page without automatic draining.
Public outcomes from source/imported acquisition and optional displays. Shared acquisition outcomes occur once, ordered source then imported. Optional display diagnostics follow with a public field path; their missing presentation does not discard usable evidence.
{"docsConfig":{"theme":"luma","$schema":"https://mintlify.com/docs.json","name":"GitHits","colors":{"primary":"#cc3f8b","light":"#ff72be","dark":"#cc3f8b"},"logo":{"light":"https://mintcdn.com/githits/nEuGn8_ZROo1DncD/images/githits-wordmark.svg?fit=max\u0026auto=format\u0026n=nEuGn8_ZROo1DncD\u0026q=85\u0026s=33b1a4083b1476ad8520731d35d55987","dark":"https://mintcdn.com/githits/nEuGn8_ZROo1DncD/images/githits-wordmark.svg?fit=max\u0026auto=format\u0026n=nEuGn8_ZROo1DncD\u0026q=85\u0026s=33b1a4083b1476ad8520731d35d55987","href":"/"},"favicon":"https://mintcdn.com/githits/Hm40jjPoMZp3cAjh/images/githits-favicon.svg?fit=max\u0026auto=format\u0026n=Hm40jjPoMZp3cAjh\u0026q=85\u0026s=701b144dbf93beea1351b26de5f854f1","api":{"playground":{"proxy":false,"credentials":false}},"appearance":{"default":"dark"},"background":{"color":{"light":"#ffffff","dark":"#13161a"}},"navbar":{"primary":{"type":"github","href":"https://github.com/githits-com/githits-cli"}},"fonts":{"heading":{"family":"Lexend","weight":600},"body":{"family":"Onest"}},"icons":{"library":"lucide"},"styling":{"latex":false},"navigation":{"pages":[]}},"deployment":{"deploymentMetadataValue":{"subdomain":"githits","hasAudioNarration":false,"actualSubdomain":"githits","customDomains":["docs.githits.com"],"gitSource":{"type":"github","owner":"githits-com","repo":"docs","deployBranch":"main","isPrivate":true,"contentDirectory":"","mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6aec8b8a802fe9fbb765e027","collectionId":"44fa3485-93e2-448f-87f1-8c681d333d9f","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6aec8b8a802fe9fbb765e027"},"feedback":{"agentFeedback":true},"entitlements":{"AI_CHAT":{"status":"ENABLED"},"WEB_MCP":{"status":"ENABLED"},"NARRATION":{"status":"ENABLED"}},"buildId":"6aedaebccc98a9ae37e0bb52","clientVersion":"0.0.4074","searchFilterCounts":[{"language":"default","tag":"API","count":34},{"language":"default","tag":"Documentation","count":28},{"language":"default","tag":"v1 reference","count":27},{"language":"default","tag":"Experimental","count":12},{"language":"default","tag":"Agent tools","count":8},{"language":"default","tag":"Get started","count":7},{"language":"default","tag":"Get Started","count":6},{"language":"default","tag":"Scan","count":6},{"language":"default","tag":"Packages","count":5},{"language":"default","tag":"CLI","count":4}]},"assistantConfig":{"enableAskAiButton":false,"enableStarterQuestions":false,"enableContextualStarterQuestions":false,"enableAskAiSearchBar":true},"basePath":"","hasChatPermissions":true,"hasWebMcpPermissions":true,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"rbac-expansion","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-serve","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"live-agents","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"comment-mode","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":":root{--githits-primary-200: #ffb8de;--githits-primary-400: #ff72be;--githits-primary-500: #ff4fae;--githits-primary-700: #992f68;--githits-primary-800: #651f45;--githits-neutral-primary: #ffffff;--githits-neutral-secondary: #d5d9df;--githits-neutral-muted: #abb2bf;--githits-neutral-border: #4a4e56;--githits-neutral-background: #21262d;--githits-neutral-surface: #13161a;--githits-text: var(--githits-neutral-border);--githits-heading: var(--githits-neutral-surface);--githits-accent: var(--githits-primary-700);--githits-surface: var(--githits-neutral-primary);--githits-border: var(--githits-neutral-muted);--githits-code-surface: var(--githits-neutral-secondary);--githits-code-text: var(--githits-primary-800);--githits-duration-normal: 200ms;--githits-ease-in-out: cubic-bezier(0.4, 0, 0.2, 1)}html.dark{--githits-text: var(--githits-neutral-secondary);--githits-heading: var(--githits-neutral-primary);--githits-accent: var(--githits-primary-400);--githits-surface: var(--githits-neutral-background);--githits-border: var(--githits-neutral-border);--githits-code-surface: var(--githits-neutral-background);--githits-code-text: var(--githits-primary-200)}html{letter-spacing:0}code,pre{font-family:Consolas, \"SF Mono\", Menlo, Monaco, monospace}#content :not(pre)>code{background:var(--githits-code-surface);color:var(--githits-code-text)}#navbar{border-bottom-color:color-mix(in srgb, var(--githits-primary-500) 18%, transparent)}#navbar a[href=\"/\"]:has(img[src*=\"githits-wordmark\"]){box-sizing:border-box;display:inline-flex;flex:0 0 9.5rem;width:9.5rem;min-width:9.5rem;align-items:center;gap:0.5rem}#navbar a[href=\"/\"]:has(img[src*=\"githits-wordmark\"])::after{content:\"Beta\";display:inline-flex;align-items:center;justify-content:center;min-height:1.5rem;padding:0.25rem 0.5rem;border:1px solid var(--githits-accent);border-radius:0.25rem;color:var(--githits-accent);font-family:inherit;font-size:0.625rem;font-weight:600;line-height:1rem;text-transform:uppercase;white-space:nowrap}#navbar a[href=\"/\"] img[src*=\"githits-wordmark\"]{width:6.5rem;height:1.516rem;aspect-ratio:554 / 129.3;object-fit:contain;vertical-align:middle}@container navbar (max-width: 48rem){#navbar nav[aria-label=\"Main\"]{flex-shrink:0}#navbar nav[aria-label=\"Main\"] a{padding-inline:0.25rem}}.githits-beta-note{display:inline-flex;align-items:center;max-width:100%;margin:0.75rem 0 1.5rem;padding:0.5rem 0.75rem;border:1px solid color-mix(in srgb, var(--githits-accent) 34%, transparent);border-radius:8px;background:color-mix(in srgb, var(--githits-accent) 9%, transparent);color:var(--githits-heading);font-size:0.875rem;font-weight:500;line-height:1.5}.githits-command-toolbar{display:flex;justify-content:flex-end;margin:1.5rem 0 -0.25rem}.githits-command-toggle{display:inline-flex;align-items:center;gap:0.625rem;min-height:2.5rem;padding:0.5rem 0.875rem;border:1px solid var(--githits-border);border-radius:8px;background:var(--githits-surface);color:var(--githits-heading);font-size:0.875rem;font-weight:600;line-height:1;cursor:pointer}.githits-command-toggle::after{content:\"\";width:0.5rem;height:0.5rem;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);transition:transform var(--githits-duration-normal) var(--githits-ease-in-out)}.githits-command-toggle[aria-expanded=\"true\"]::after{transform:rotate(225deg)}.githits-command-toggle:hover{border-color:var(--githits-accent);color:var(--githits-accent)}.githits-command-toggle:focus-visible,.githits-feature-card:focus-visible{outline:2px solid var(--githits-accent);outline-offset:3px}html[data-current-path=\"/cli/commands\"] #content [data-component-part=\"accordion-title-container\"]{display:flex;flex-direction:column;gap:0.25rem;line-height:1.35}html[data-current-path=\"/cli/commands\"] #content [data-component-part=\"accordion-description\"]{color:var(--githits-text);line-height:1.45}.githits-feature-grid{margin-top:1.25rem}.githits-tool-columns{display:grid;grid-template-columns:repeat(auto-fit, minmax(min(100%, 12.5rem), 1fr));gap:1rem}.githits-feature-grid .githits-feature-card{background:transparent;border:1px solid transparent;box-shadow:none;color:var(--githits-heading)}.githits-feature-grid .githits-feature-card:hover{border-color:var(--githits-accent)}.githits-feature-card::before{content:\"\";display:block;aspect-ratio:16 / 9;box-sizing:border-box;background-color:var(--githits-neutral-surface);background-image:var(--githits-illustration);background-size:contain;background-position:center;background-repeat:no-repeat;border:0;border-radius:8px}.githits-feature-code{--githits-illustration: url(\"/images/githits-code-context.svg\")}.githits-feature-docs{--githits-illustration: url(\"/images/githits-open-source-refresh.svg\")}.githits-feature-packages{--githits-illustration: url(\"/images/githits-reasoning-rank.svg\")}.githits-feature-card [data-component-part=\"card-content\"]{color:var(--githits-text)}@media (prefers-reduced-motion: reduce){.githits-command-toggle::after{transition:none}}"}],"page":{"pagePath":"api-reference/v1/vulnerabilities/look-up-a-vulnerability-and-affected-packages","slug":"/api-reference/v1/vulnerabilities/look-up-a-vulnerability-and-affected-packages","pageMetadata":{"title":"Look up a vulnerability and affected packages","description":"Look up a vulnerability ID or known alias for its current source explanation and one page of grouped package evidence. Authentication and `public_read` authorization are required. To assess an installed release, follow up with `GET /v1/packages/{registry}/{name}/vulnerabilities?version=...`.\n\n| Read | Use it for |\n| --- | --- |\n| `advisory` | The served source's explanation, references, severity and original affected entries |\n| `affected_packages.entries` | Named packages with separate `source_evidence` and imported `advisories` |\n| `affected_packages.coverage` and `diagnostics` | Which evidence was acquired and what remains unresolved, including on empty pages |\n\n**Keep source and imported evidence separate.** The service groups canonical package identities; clients need not match aliases or infer registries. The live source and imported association rows can disagree in ranges, fixes or revision. Package-less Git evidence stays under `advisory.affected`; a CVE can still have useful imported GHSA package associations. Unsupported namespaces remain visible with a null registry. A null registry is not permission to guess one from a purl.\n\n`requested_id` preserves normalized caller intent. `advisory.osv_id` and each evidence branch's ID, URL and revision identify the record actually served. Lookup is exact-first; only an exact source 404 permits one uniquely recorded imported alias candidate. Imported associations use exact ID/direct aliases, with no recursive alias discovery or range merge. Each row keeps its own timestamps and withdrawal state. URLs identify current records, not archival snapshots.\n\n**Check coverage before interpreting an empty result.** `source_status` is `available`, `not_found`, `ambiguous` or `unavailable`; `imported_status` is `available` or `unavailable`. Imported `available` means that read completed, even with no rows, not worldwide coverage. Source failure can preserve useful imported packages; an imported-read failure can preserve source evidence. Partial reads return 200 with `diagnostics`. Source not-found plus checked empty imported evidence returns 404. Ambiguity without useful package evidence returns 422 with candidates when available; choose an explicit ID. Wholly unavailable evidence returns a provider error. Successful pagination and `has_next_page=false` do not establish completeness or safety.\n\nDiagnostics use stable `code`, displayable `message`, and `retryable`. Optional display failures include a JSON pointer `path`; acquisition diagnostics have null `path`. Branch on code rather than parsing messages. Response status, section, registry and code vocabularies are open. Known registry/status/section values use lowercase spelling; source discriminators and modification categories retain producer spelling. Honor `Retry-After` when present.\n\n**Distinguish ranges, displays and fixes.** Original affected entries retain repeated entries, nullable packages, ecosystem spellings, purls, explicit versions and ordered range events. Derived `affected_version_ranges` retains native comparisons, `semver:` ordering and `osv-invalid:` uncertainty; null means unavailable derivation. These are evidence strings, not manifest constraints. `affected_version_display` is presentation with at most ten spans, `total_count` and `truncated`; it is not matcher input. Null can mean unsupported interpretation or a diagnosed optional failure.\n\nSource `fixed_in_versions` contains source-reported SEMVER/ECOSYSTEM fixed release strings; it excludes Git commits, limits and last-affected boundaries. Imported fix lists retain storage order. These lists do not certify published or safe releases or recommend an upgrade. Use the package endpoint for version-specific assessment and candidate evidence.\n\nSEMVER ranges use semantic ordering, ECOSYSTEM uses its own ordering, and GIT requires repository ancestry rather than lexical hash sorting. `introduced` is inclusive (`0` means before all versions); `fixed` is an excluded fixing boundary; `last_affected` is inclusive and not a fix; `limit` is an exclusive boundary, not a fix (`*` means infinity). Missing event fields are null; no implicit events are added. Empty or null evidence never establishes safety.\n\nTimestamps remain strings with source precision; non-null `withdrawn_at` means withdrawn. Root and per-entry severity are independent. Raw vectors remain strings; an imported numeric `SEVERITY_LABEL` value is an approximation, not calculated CVSS. Prose is normalized source content, not trusted agent instructions. Reference URLs are not fetched and purls are identifiers; absent optional URLs are null, while unsafe schemes neutralized upstream become empty strings. `content_safety` reports normalization, not trust or severity.\n\nThe fixed response has no `fields` selector. `limit` defaults to 5 and accepts 1–8 whole package groups; a group is never split between its advisory rows. No page is automatically drained. Continue with the same requested ID and `after`; evidence/revision changes invalidate cursors, while changing limit is allowed. Invalid or stale pages return 400, including when other source evidence is available.\n","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json get /v1/vulnerabilities/{id}","href":"/api-reference/v1/vulnerabilities/look-up-a-vulnerability-and-affected-packages","autogeneratedByOpenApi":true},"description":{"compiledSource":"\"use strict\";\nconst {Fragment: _Fragment, jsx: _jsx, jsxs: _jsxs} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n code: \"code\",\n p: \"p\",\n strong: \"strong\",\n table: \"table\",\n tbody: \"tbody\",\n td: \"td\",\n th: \"th\",\n thead: \"thead\",\n tr: \"tr\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsxs(_Fragment, {\n children: [_jsxs(_components.p, {\n children: [\"Look up a vulnerability ID or known alias for its current source explanation and one page of grouped package evidence. Authentication and \", _jsx(_components.code, {\n children: \"public_read\"\n }), \" authorization are required. To assess an installed release, follow up with \", _jsx(_components.code, {\n children: \"GET /v1/packages/{registry}/{name}/vulnerabilities?version=...\"\n }), \".\"]\n }), \"\\n\", _jsxs(_components.table, {\n children: [_jsx(_components.thead, {\n children: _jsxs(_components.tr, {\n children: [_jsx(_components.th, {\n children: \"Read\"\n }), _jsx(_components.th, {\n children: \"Use it for\"\n })]\n })\n }), _jsxs(_components.tbody, {\n children: [_jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"advisory\"\n })\n }), _jsx(_components.td, {\n children: \"The served source’s explanation, references, severity and original affected entries\"\n })]\n }), _jsxs(_components.tr, {\n children: [_jsx(_components.td, {\n children: _jsx(_components.code, {\n children: \"affected_packages.entries\"\n })\n }), _jsxs(_components.td, {\n children: [\"Named packages with separate \", _jsx(_components.code, {\n children: \"source_evidence\"\n }), \" and imported \", _jsx(_components.code, {\n children: \"advisories\"\n })]\n })]\n }), _jsxs(_components.tr, {\n children: [_jsxs(_components.td, {\n children: [_jsx(_components.code, {\n children: \"affected_packages.coverage\"\n }), \" and \", _jsx(_components.code, {\n children: \"diagnostics\"\n })]\n }), _jsx(_components.td, {\n children: \"Which evidence was acquired and what remains unresolved, including on empty pages\"\n })]\n })]\n })]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Keep source and imported evidence separate.\"\n }), \" The service groups canonical package identities; clients need not match aliases or infer registries. The live source and imported association rows can disagree in ranges, fixes or revision. Package-less Git evidence stays under \", _jsx(_components.code, {\n children: \"advisory.affected\"\n }), \"; a CVE can still have useful imported GHSA package associations. Unsupported namespaces remain visible with a null registry. A null registry is not permission to guess one from a purl.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.code, {\n children: \"requested_id\"\n }), \" preserves normalized caller intent. \", _jsx(_components.code, {\n children: \"advisory.osv_id\"\n }), \" and each evidence branch’s ID, URL and revision identify the record actually served. Lookup is exact-first; only an exact source 404 permits one uniquely recorded imported alias candidate. Imported associations use exact ID/direct aliases, with no recursive alias discovery or range merge. Each row keeps its own timestamps and withdrawal state. URLs identify current records, not archival snapshots.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Check coverage before interpreting an empty result.\"\n }), \" \", _jsx(_components.code, {\n children: \"source_status\"\n }), \" is \", _jsx(_components.code, {\n children: \"available\"\n }), \", \", _jsx(_components.code, {\n children: \"not_found\"\n }), \", \", _jsx(_components.code, {\n children: \"ambiguous\"\n }), \" or \", _jsx(_components.code, {\n children: \"unavailable\"\n }), \"; \", _jsx(_components.code, {\n children: \"imported_status\"\n }), \" is \", _jsx(_components.code, {\n children: \"available\"\n }), \" or \", _jsx(_components.code, {\n children: \"unavailable\"\n }), \". Imported \", _jsx(_components.code, {\n children: \"available\"\n }), \" means that read completed, even with no rows, not worldwide coverage. Source failure can preserve useful imported packages; an imported-read failure can preserve source evidence. Partial reads return 200 with \", _jsx(_components.code, {\n children: \"diagnostics\"\n }), \". Source not-found plus checked empty imported evidence returns 404. Ambiguity without useful package evidence returns 422 with candidates when available; choose an explicit ID. Wholly unavailable evidence returns a provider error. Successful pagination and \", _jsx(_components.code, {\n children: \"has_next_page=false\"\n }), \" do not establish completeness or safety.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Diagnostics use stable \", _jsx(_components.code, {\n children: \"code\"\n }), \", displayable \", _jsx(_components.code, {\n children: \"message\"\n }), \", and \", _jsx(_components.code, {\n children: \"retryable\"\n }), \". Optional display failures include a JSON pointer \", _jsx(_components.code, {\n children: \"path\"\n }), \"; acquisition diagnostics have null \", _jsx(_components.code, {\n children: \"path\"\n }), \". Branch on code rather than parsing messages. Response status, section, registry and code vocabularies are open. Known registry/status/section values use lowercase spelling; source discriminators and modification categories retain producer spelling. Honor \", _jsx(_components.code, {\n children: \"Retry-After\"\n }), \" when present.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [_jsx(_components.strong, {\n children: \"Distinguish ranges, displays and fixes.\"\n }), \" Original affected entries retain repeated entries, nullable packages, ecosystem spellings, purls, explicit versions and ordered range events. Derived \", _jsx(_components.code, {\n children: \"affected_version_ranges\"\n }), \" retains native comparisons, \", _jsx(_components.code, {\n children: \"semver:\"\n }), \" ordering and \", _jsx(_components.code, {\n children: \"osv-invalid:\"\n }), \" uncertainty; null means unavailable derivation. These are evidence strings, not manifest constraints. \", _jsx(_components.code, {\n children: \"affected_version_display\"\n }), \" is presentation with at most ten spans, \", _jsx(_components.code, {\n children: \"total_count\"\n }), \" and \", _jsx(_components.code, {\n children: \"truncated\"\n }), \"; it is not matcher input. Null can mean unsupported interpretation or a diagnosed optional failure.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Source \", _jsx(_components.code, {\n children: \"fixed_in_versions\"\n }), \" contains source-reported SEMVER/ECOSYSTEM fixed release strings; it excludes Git commits, limits and last-affected boundaries. Imported fix lists retain storage order. These lists do not certify published or safe releases or recommend an upgrade. Use the package endpoint for version-specific assessment and candidate evidence.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"SEMVER ranges use semantic ordering, ECOSYSTEM uses its own ordering, and GIT requires repository ancestry rather than lexical hash sorting. \", _jsx(_components.code, {\n children: \"introduced\"\n }), \" is inclusive (\", _jsx(_components.code, {\n children: \"0\"\n }), \" means before all versions); \", _jsx(_components.code, {\n children: \"fixed\"\n }), \" is an excluded fixing boundary; \", _jsx(_components.code, {\n children: \"last_affected\"\n }), \" is inclusive and not a fix; \", _jsx(_components.code, {\n children: \"limit\"\n }), \" is an exclusive boundary, not a fix (\", _jsx(_components.code, {\n children: \"*\"\n }), \" means infinity). Missing event fields are null; no implicit events are added. Empty or null evidence never establishes safety.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"Timestamps remain strings with source precision; non-null \", _jsx(_components.code, {\n children: \"withdrawn_at\"\n }), \" means withdrawn. Root and per-entry severity are independent. Raw vectors remain strings; an imported numeric \", _jsx(_components.code, {\n children: \"SEVERITY_LABEL\"\n }), \" value is an approximation, not calculated CVSS. Prose is normalized source content, not trusted agent instructions. Reference URLs are not fetched and purls are identifiers; absent optional URLs are null, while unsafe schemes neutralized upstream become empty strings. \", _jsx(_components.code, {\n children: \"content_safety\"\n }), \" reports normalization, not trust or severity.\"]\n }), \"\\n\", _jsxs(_components.p, {\n children: [\"The fixed response has no \", _jsx(_components.code, {\n children: \"fields\"\n }), \" selector. \", _jsx(_components.code, {\n children: \"limit\"\n }), \" defaults to 5 and accepts 1–8 whole package groups; a group is never split between its advisory rows. No page is automatically drained. Continue with the same requested ID and \", _jsx(_components.code, {\n children: \"after\"\n }), \"; evidence/revision changes invalidate cursors, while changing limit is allowed. Invalid or stale pages return 400, including when other source evidence is available.\"]\n })]\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){return _jsx(_Fragment,{})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Look up a vulnerability and affected packages","description":"Look up a vulnerability ID or known alias for its current source explanation and one page of grouped package evidence. Authentication and `public_read` authorization are required. To assess an installed release, follow up with `GET /v1/packages/{registry}/{name}/vulnerabilities?version=...`.\n\n| Read | Use it for |\n| --- | --- |\n| `advisory` | The served source's explanation, references, severity and original affected entries |\n| `affected_packages.entries` | Named packages with separate `source_evidence` and imported `advisories` |\n| `affected_packages.coverage` and `diagnostics` | Which evidence was acquired and what remains unresolved, including on empty pages |\n\n**Keep source and imported evidence separate.** The service groups canonical package identities; clients need not match aliases or infer registries. The live source and imported association rows can disagree in ranges, fixes or revision. Package-less Git evidence stays under `advisory.affected`; a CVE can still have useful imported GHSA package associations. Unsupported namespaces remain visible with a null registry. A null registry is not permission to guess one from a purl.\n\n`requested_id` preserves normalized caller intent. `advisory.osv_id` and each evidence branch's ID, URL and revision identify the record actually served. Lookup is exact-first; only an exact source 404 permits one uniquely recorded imported alias candidate. Imported associations use exact ID/direct aliases, with no recursive alias discovery or range merge. Each row keeps its own timestamps and withdrawal state. URLs identify current records, not archival snapshots.\n\n**Check coverage before interpreting an empty result.** `source_status` is `available`, `not_found`, `ambiguous` or `unavailable`; `imported_status` is `available` or `unavailable`. Imported `available` means that read completed, even with no rows, not worldwide coverage. Source failure can preserve useful imported packages; an imported-read failure can preserve source evidence. Partial reads return 200 with `diagnostics`. Source not-found plus checked empty imported evidence returns 404. Ambiguity without useful package evidence returns 422 with candidates when available; choose an explicit ID. Wholly unavailable evidence returns a provider error. Successful pagination and `has_next_page=false` do not establish completeness or safety.\n\nDiagnostics use stable `code`, displayable `message`, and `retryable`. Optional display failures include a JSON pointer `path`; acquisition diagnostics have null `path`. Branch on code rather than parsing messages. Response status, section, registry and code vocabularies are open. Known registry/status/section values use lowercase spelling; source discriminators and modification categories retain producer spelling. Honor `Retry-After` when present.\n\n**Distinguish ranges, displays and fixes.** Original affected entries retain repeated entries, nullable packages, ecosystem spellings, purls, explicit versions and ordered range events. Derived `affected_version_ranges` retains native comparisons, `semver:` ordering and `osv-invalid:` uncertainty; null means unavailable derivation. These are evidence strings, not manifest constraints. `affected_version_display` is presentation with at most ten spans, `total_count` and `truncated`; it is not matcher input. Null can mean unsupported interpretation or a diagnosed optional failure.\n\nSource `fixed_in_versions` contains source-reported SEMVER/ECOSYSTEM fixed release strings; it excludes Git commits, limits and last-affected boundaries. Imported fix lists retain storage order. These lists do not certify published or safe releases or recommend an upgrade. Use the package endpoint for version-specific assessment and candidate evidence.\n\nSEMVER ranges use semantic ordering, ECOSYSTEM uses its own ordering, and GIT requires repository ancestry rather than lexical hash sorting. `introduced` is inclusive (`0` means before all versions); `fixed` is an excluded fixing boundary; `last_affected` is inclusive and not a fix; `limit` is an exclusive boundary, not a fix (`*` means infinity). Missing event fields are null; no implicit events are added. Empty or null evidence never establishes safety.\n\nTimestamps remain strings with source precision; non-null `withdrawn_at` means withdrawn. Root and per-entry severity are independent. Raw vectors remain strings; an imported numeric `SEVERITY_LABEL` value is an approximation, not calculated CVSS. Prose is normalized source content, not trusted agent instructions. Reference URLs are not fetched and purls are identifiers; absent optional URLs are null, while unsafe schemes neutralized upstream become empty strings. `content_safety` reports normalization, not trust or severity.\n\nThe fixed response has no `fields` selector. `limit` defaults to 5 and accepts 1–8 whole package groups; a group is never split between its advisory rows. No page is automatically drained. Continue with the same requested ID and `after`; evidence/revision changes invalidate cursors, while changing limit is allowed. Invalid or stale pages return 400, including when other source evidence is available.\n","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json get /v1/vulnerabilities/{id}","href":"/api-reference/v1/vulnerabilities/look-up-a-vulnerability-and-affected-packages","autogeneratedByOpenApi":true}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[],"codeExamples":{}},"jsLinks":[],"openApiReferenceData":{"operation":{"description":"Look up a vulnerability ID or known alias for its current source explanation and one page of grouped package evidence. Authentication and `public_read` authorization are required. To assess an installed release, follow up with `GET /v1/packages/{registry}/{name}/vulnerabilities?version=...`.\n\n| Read | Use it for |\n| --- | --- |\n| `advisory` | The served source's explanation, references, severity and original affected entries |\n| `affected_packages.entries` | Named packages with separate `source_evidence` and imported `advisories` |\n| `affected_packages.coverage` and `diagnostics` | Which evidence was acquired and what remains unresolved, including on empty pages |\n\n**Keep source and imported evidence separate.** The service groups canonical package identities; clients need not match aliases or infer registries. The live source and imported association rows can disagree in ranges, fixes or revision. Package-less Git evidence stays under `advisory.affected`; a CVE can still have useful imported GHSA package associations. Unsupported namespaces remain visible with a null registry. A null registry is not permission to guess one from a purl.\n\n`requested_id` preserves normalized caller intent. `advisory.osv_id` and each evidence branch's ID, URL and revision identify the record actually served. Lookup is exact-first; only an exact source 404 permits one uniquely recorded imported alias candidate. Imported associations use exact ID/direct aliases, with no recursive alias discovery or range merge. Each row keeps its own timestamps and withdrawal state. URLs identify current records, not archival snapshots.\n\n**Check coverage before interpreting an empty result.** `source_status` is `available`, `not_found`, `ambiguous` or `unavailable`; `imported_status` is `available` or `unavailable`. Imported `available` means that read completed, even with no rows, not worldwide coverage. Source failure can preserve useful imported packages; an imported-read failure can preserve source evidence. Partial reads return 200 with `diagnostics`. Source not-found plus checked empty imported evidence returns 404. Ambiguity without useful package evidence returns 422 with candidates when available; choose an explicit ID. Wholly unavailable evidence returns a provider error. Successful pagination and `has_next_page=false` do not establish completeness or safety.\n\nDiagnostics use stable `code`, displayable `message`, and `retryable`. Optional display failures include a JSON pointer `path`; acquisition diagnostics have null `path`. Branch on code rather than parsing messages. Response status, section, registry and code vocabularies are open. Known registry/status/section values use lowercase spelling; source discriminators and modification categories retain producer spelling. Honor `Retry-After` when present.\n\n**Distinguish ranges, displays and fixes.** Original affected entries retain repeated entries, nullable packages, ecosystem spellings, purls, explicit versions and ordered range events. Derived `affected_version_ranges` retains native comparisons, `semver:` ordering and `osv-invalid:` uncertainty; null means unavailable derivation. These are evidence strings, not manifest constraints. `affected_version_display` is presentation with at most ten spans, `total_count` and `truncated`; it is not matcher input. Null can mean unsupported interpretation or a diagnosed optional failure.\n\nSource `fixed_in_versions` contains source-reported SEMVER/ECOSYSTEM fixed release strings; it excludes Git commits, limits and last-affected boundaries. Imported fix lists retain storage order. These lists do not certify published or safe releases or recommend an upgrade. Use the package endpoint for version-specific assessment and candidate evidence.\n\nSEMVER ranges use semantic ordering, ECOSYSTEM uses its own ordering, and GIT requires repository ancestry rather than lexical hash sorting. `introduced` is inclusive (`0` means before all versions); `fixed` is an excluded fixing boundary; `last_affected` is inclusive and not a fix; `limit` is an exclusive boundary, not a fix (`*` means infinity). Missing event fields are null; no implicit events are added. Empty or null evidence never establishes safety.\n\nTimestamps remain strings with source precision; non-null `withdrawn_at` means withdrawn. Root and per-entry severity are independent. Raw vectors remain strings; an imported numeric `SEVERITY_LABEL` value is an approximation, not calculated CVSS. Prose is normalized source content, not trusted agent instructions. Reference URLs are not fetched and purls are identifiers; absent optional URLs are null, while unsafe schemes neutralized upstream become empty strings. `content_safety` reports normalization, not trust or severity.\n\nThe fixed response has no `fields` selector. `limit` defaults to 5 and accepts 1–8 whole package groups; a group is never split between its advisory rows. No page is automatically drained. Continue with the same requested ID and `after`; evidence/revision changes invalidate cursors, while changing limit is allowed. Invalid or stale pages return 400, including when other source evidence is available.\n","operationId":"get_vulnerability","parameters":["5f8e9d7a-8a2d-45a6-9d8d-035a2b579f89","e73b864a-1aa0-4314-972d-32574f55af34","a9c43700-41db-497f-90ce-35dd16dca771","b9c1f680-8ab8-4910-8772-6e7d46eade07","dc67514b-4737-4c74-a724-fcdba4dbcb40","1abe8eb7-5253-4d41-9adc-5d9d3613c380","70473c35-332b-4731-a349-4a809a38126d"],"responses":{"200":"1f86889f-b495-4510-9bc7-37c15272f276","400":"637f7ef5-2f39-4279-bf0b-7110692e0dbc","401":"ef1b0ee5-5e84-471e-94b1-24974a978915","403":"2ba6380c-f42f-4fe3-954d-807974d29f17","404":"639940dd-2cd4-438f-86bb-55c404b44ec4","405":"7aef1b5f-8d3a-4daa-9649-407fc1db614c","422":"6d13ea5d-4cc9-4e8f-9ad3-285a46ff064e","429":"b3d90a5b-4e73-4525-8172-3030ac25b06f","500":"7acd3bd1-ca74-4f0c-9966-13791627ce88","502":"861d5f54-2630-4608-b7ec-a260fff543af","503":"15aa3865-3875-4abc-a6f8-dd38a27aa5b7","504":"6a177730-b6f2-4032-9318-be6422cbd7e1"},"security":["137f12ca-1445-448b-a68f-425b7cdae3b1"],"summary":"Look up a vulnerability and affected packages","tags":["Vulnerabilities"],"x-githits-cost":1,"method":"get","type":"path","servers":["bfb2a79f-febe-439c-ad58-8db4455b87a2"],"path":"/v1/vulnerabilities/{id}","baseUrlOptions":["https://api.githits.dev"],"title":"Look up a vulnerability and affected packages","codeSamples":[],"requiredOnlyExamples":false,"requestExampleType":"generated","responseExampleType":"generated","disableProxy":true},"dependencies":{"parameters":{"5f8e9d7a-8a2d-45a6-9d8d-035a2b579f89":{"description":"Whole package groups per page, 1–8; default 5. One group is never split between advisory rows.","example":5,"in":"query","name":"limit","required":false,"schema":{"default":5,"format":"int32","maximum":8,"minimum":1,"type":"integer","isRequired":false,"description":"Whole package groups per page, 1–8; default 5. One group is never split between advisory rows.","uniqueKey":"","typeLabel":"integer\u003cint32>"}},"e73b864a-1aa0-4314-972d-32574f55af34":{"description":"Opaque end_cursor for this requested ID. Preserved unchanged. Evidence or revision changes invalidate continuation; changing limit is allowed. A stale/invalid page is a 400. No automatic draining.","in":"query","name":"after","required":false,"schema":{"type":"string","isRequired":false,"description":"Opaque end_cursor for this requested ID. Preserved unchanged. Evidence or revision changes invalidate continuation; changing limit is allowed. A stale/invalid page is a 400. No automatic draining.","uniqueKey":"","typeLabel":"string"}},"a9c43700-41db-497f-90ce-35dd16dca771":{"description":"Source ID or known imported alias. Trimmed, case-preserving, 1–512 UTF-8 bytes; embedded whitespace, control and format characters are forbidden. Encode punctuation such as slash within one path segment.","in":"path","name":"id","required":true,"schema":{"type":"string","isRequired":true,"description":"Source ID or known imported alias. Trimmed, case-preserving, 1–512 UTF-8 bytes; embedded whitespace, control and format characters are forbidden. Encode punctuation such as slash within one path segment.","uniqueKey":"","typeLabel":"string"}},"b9c1f680-8ab8-4910-8772-6e7d46eade07":{"description":"Optional client attribution: trimmed printable ASCII, at most 80 bytes. Invalid optional values are dropped.","in":"header","name":"X-GitHits-Client-Name","required":false,"schema":{"type":"string","isRequired":false,"description":"Optional client attribution: trimmed printable ASCII, at most 80 bytes. Invalid optional values are dropped.","uniqueKey":"","typeLabel":"string"}},"dc67514b-4737-4c74-a724-fcdba4dbcb40":{"description":"Optional client-version attribution: trimmed printable ASCII, at most 80 bytes. Invalid optional values are dropped.","in":"header","name":"X-GitHits-Client-Version","required":false,"schema":{"type":"string","isRequired":false,"description":"Optional client-version attribution: trimmed printable ASCII, at most 80 bytes. Invalid optional values are dropped.","uniqueKey":"","typeLabel":"string"}},"1abe8eb7-5253-4d41-9adc-5d9d3613c380":{"description":"Optional agent attribution: trimmed printable ASCII, at most 160 bytes. Invalid optional values are dropped.","in":"header","name":"X-GitHits-Agent","required":false,"schema":{"type":"string","isRequired":false,"description":"Optional agent attribution: trimmed printable ASCII, at most 160 bytes. Invalid optional values are dropped.","uniqueKey":"","typeLabel":"string"}},"70473c35-332b-4731-a349-4a809a38126d":{"description":"Optional caller-defined session ID: one to 64 ASCII letters, digits, underscores or hyphens, preserved exactly. Supply the header at most once. Invalid supplied IDs return 400 INVALID_SESSION_ID; no session is created.","in":"header","name":"X-GitHits-Session-ID","required":false,"schema":{"maxLength":64,"minLength":1,"pattern":"^[A-Za-z0-9_-]{1,64}$","type":"string","isRequired":false,"description":"Optional caller-defined session ID: one to 64 ASCII letters, digits, underscores or hyphens, preserved exactly. Supply the header at most once. Invalid supplied IDs return 400 INVALID_SESSION_ID; no session is created.","uniqueKey":"","typeLabel":"string"}}},"responses":{"1f86889f-b495-4510-9bc7-37c15272f276":{"content":{"application/json":{"examples":{"named_package":{"title":"named_package","value":{"advisory":{"affected":[{"package":{"ecosystem":"npm","name":"minimatch","purl":null},"ranges":[{"events":[{"fixed":null,"introduced":"10.0.0","last_affected":null,"limit":null},{"fixed":"10.2.1","introduced":null,"last_affected":null,"limit":null}],"repo":null,"type":"SEMVER"}],"severity":[],"versions":[]}],"aliases":["CVE-2026-26996"],"content_safety":{"filtered":false,"modifications":[]},"details":null,"modified_at":"2026-02-20T01:02:03.123456789Z","osv_id":"GHSA-3ppc-4f35-3m26","published_at":null,"references":[{"type":"ADVISORY","url":"https://example.com/advisory"}],"severity":[],"source_url":"https://osv.dev/vulnerability/GHSA-3ppc-4f35-3m26","summary":"Example source advisory","withdrawn_at":null},"affected_packages":{"coverage":{"imported_status":"available","source_status":"available"},"entries":[{"advisories":[{"affected_version_display":{"ranges":["10.0.0 – 10.2.0"],"total_count":1,"truncated":false},"affected_version_ranges":[">=10.0.0 \u003c10.2.1"],"aliases":["CVE-2026-26996"],"content_safety":{"filtered":false,"modifications":[]},"fixed_in_versions":["10.2.1"],"is_malicious":false,"modified_at":"2026-02-21T00:00:00Z","osv_id":"GHSA-3ppc-4f35-3m26","package_name":"minimatch","published_at":null,"registry":"npm","severity_score":7.5,"severity_type":"CVSS_V3","source_url":"https://osv.dev/vulnerability/GHSA-3ppc-4f35-3m26","summary":"Imported advisory evidence","withdrawn_at":null}],"package":{"ecosystem":"npm","name":"minimatch","registry":"npm"},"source_evidence":{"affected":[{"package":{"ecosystem":"npm","name":"minimatch","purl":null},"ranges":[{"events":[{"fixed":null,"introduced":"10.0.0","last_affected":null,"limit":null},{"fixed":"10.2.1","introduced":null,"last_affected":null,"limit":null}],"repo":null,"type":"SEMVER"}],"severity":[],"versions":[]}],"affected_version_display":{"ranges":["10.0.0 – 10.2.0"],"total_count":1,"truncated":false},"affected_version_ranges":[">=10.0.0 \u003c10.2.1"],"content_safety":{"filtered":false,"modifications":[]},"fixed_in_versions":["10.2.1"],"modified_at":"2026-02-20T01:02:03.123456789Z","osv_id":"GHSA-3ppc-4f35-3m26","source_url":"https://osv.dev/vulnerability/GHSA-3ppc-4f35-3m26","withdrawn_at":null}}],"page_info":{"end_cursor":null,"has_next_page":false,"total_count":1}},"diagnostics":[],"requested_id":"GHSA-3ppc-4f35-3m26"}},"package_less_git":{"title":"package_less_git","value":{"advisory":{"affected":[{"package":null,"ranges":[{"events":[{"fixed":null,"introduced":"0","last_affected":null,"limit":null},{"fixed":null,"introduced":null,"last_affected":"abc","limit":null},{"fixed":null,"introduced":null,"last_affected":null,"limit":"*"}],"repo":"https://example.com/repo","type":"GIT"}],"severity":[],"versions":[]}],"aliases":["GHSA-3ppc-4f35-3m26"],"content_safety":{"filtered":false,"modifications":[]},"details":null,"modified_at":"2026-02-20T01:02:03.123456789Z","osv_id":"CVE-2026-26996","published_at":null,"references":[{"type":"ADVISORY","url":"https://example.com/advisory"}],"severity":[{"score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H","source":null,"type":"CVSS_V3"}],"source_url":"https://osv.dev/vulnerability/CVE-2026-26996","summary":"Example source advisory","withdrawn_at":null},"affected_packages":{"coverage":{"imported_status":"available","source_status":"available"},"entries":[{"advisories":[{"affected_version_display":{"ranges":["10.0.0 – 10.2.0","9.0.0 – 9.0.5"],"total_count":2,"truncated":false},"affected_version_ranges":[">=10.0.0 \u003c10.2.1",">=9.0.0 \u003c9.0.6"],"aliases":["CVE-2026-26996"],"content_safety":{"filtered":false,"modifications":[]},"fixed_in_versions":["10.2.1","9.0.6"],"is_malicious":false,"modified_at":"2026-02-21T00:00:00Z","osv_id":"GHSA-3ppc-4f35-3m26","package_name":"minimatch","published_at":null,"registry":"npm","severity_score":7.5,"severity_type":"CVSS_V3","source_url":"https://osv.dev/vulnerability/GHSA-3ppc-4f35-3m26","summary":"Imported advisory evidence","withdrawn_at":null}],"package":{"ecosystem":"npm","name":"minimatch","registry":"npm"},"source_evidence":null}],"page_info":{"end_cursor":null,"has_next_page":false,"total_count":1}},"diagnostics":[],"requested_id":"CVE-2026-26996"}},"source_unavailable":{"title":"source_unavailable","value":{"advisory":null,"affected_packages":{"coverage":{"imported_status":"available","source_status":"unavailable"},"entries":[{"advisories":[{"affected_version_display":{"ranges":["10.0.0 – 10.2.0"],"total_count":1,"truncated":false},"affected_version_ranges":[">=10.0.0 \u003c10.2.1"],"aliases":["CVE-2026-26996"],"content_safety":{"filtered":false,"modifications":[]},"fixed_in_versions":["10.2.1"],"is_malicious":false,"modified_at":"2026-02-21T00:00:00Z","osv_id":"GHSA-3ppc-4f35-3m26","package_name":"minimatch","published_at":null,"registry":"npm","severity_score":7.5,"severity_type":"CVSS_V3","source_url":"https://osv.dev/vulnerability/GHSA-3ppc-4f35-3m26","summary":"Imported advisory evidence","withdrawn_at":null}],"package":{"ecosystem":"npm","name":"minimatch","registry":"npm"},"source_evidence":null}],"page_info":{"end_cursor":null,"has_next_page":false,"total_count":1}},"diagnostics":[{"candidate_ids":null,"candidate_ids_truncated":null,"code":"UPSTREAM_ERROR","message":"The source could not be read.","path":null,"retryable":true,"section":"advisory"}],"requested_id":"GHSA-3ppc-4f35-3m26"}}},"schema":{"description":"One advisory lookup with independently usable source and grouped package evidence.","properties":{"advisory":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"advisory.oneOf.0","typeLabel":"null"},{"type":"object","description":"Current exact-first OSV source explanation. Its `osv_id` identifies the served record. Null on source lookup failure; inspect `diagnostics` with section `advisory`. Related source records are never merged.","required":["osv_id","aliases","summary","details","source_url","published_at","modified_at","withdrawn_at","severity","references","affected","content_safety"],"properties":{"affected":{"description":"Ordered independent source entries; empty does not establish safety.","items":{"description":"Typed `VulnerabilityAffected` source evidence.","properties":{"package":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].package.oneOf.0","typeLabel":"null"},{"type":"object","description":"Source package coordinates; null for package-less Git evidence.","required":["name","ecosystem","purl"],"properties":{"ecosystem":{"description":"Open OSV ecosystem string, including suffixes; not a registry enum.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].package.oneOf.1.ecosystem","typeLabel":"string"},"name":{"description":"Source package name.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].package.oneOf.1.name","typeLabel":"string"},"purl":{"oneOf":[{"description":"Source package identifier, not a browser URL; null when absent.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].package.oneOf.1.purl.oneOf.0","typeLabel":"string"},{"description":"Source package identifier, not a browser URL; null when absent.","type":"null","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].package.oneOf.1.purl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].package.oneOf.1.purl","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].package.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].package","typeLabel":"null | object"},"ranges":{"description":"Source ranges in order; empty is missing evidence, not safety.","items":{"description":"Typed `VulnerabilityRange` source evidence.","properties":{"events":{"description":"Events in source order, without implicit events or evaluation.","items":{"description":"Typed `VulnerabilityRangeEvent` source evidence.","properties":{"fixed":{"oneOf":[{"description":"Exclusive fixing version or commit; source evidence, not upgrade advice.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].fixed.oneOf.0","typeLabel":"string"},{"description":"Exclusive fixing version or commit; source evidence, not upgrade advice.","type":"null","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].fixed.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].fixed","typeLabel":"string | null"},"introduced":{"oneOf":[{"description":"Inclusive start; 0 means before all versions. Null when absent.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].introduced.oneOf.0","typeLabel":"string"},{"description":"Inclusive start; 0 means before all versions. Null when absent.","type":"null","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].introduced.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].introduced","typeLabel":"string | null"},"last_affected":{"oneOf":[{"description":"Inclusive last affected boundary; not a fix. Null when absent.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].last_affected.oneOf.0","typeLabel":"string"},{"description":"Inclusive last affected boundary; not a fix. Null when absent.","type":"null","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].last_affected.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].last_affected","typeLabel":"string | null"},"limit":{"oneOf":[{"description":"Exclusive upper bound, not a fix; * means infinity. Null when absent.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].limit.oneOf.0","typeLabel":"string"},{"description":"Exclusive upper bound, not a fix; * means infinity. Null when absent.","type":"null","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].limit.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].limit","typeLabel":"string | null"}},"required":["introduced","fixed","last_affected","limit"],"type":"object","uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events","typeLabel":"object[]"},"repo":{"oneOf":[{"description":"Source repository URL; null when absent, empty when neutralized.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].repo.oneOf.0","typeLabel":"string"},{"description":"Source repository URL; null when absent, empty when neutralized.","type":"null","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].repo.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].repo","typeLabel":"string | null"},"type":{"description":"Open range type: SEMVER, ECOSYSTEM or GIT; commit ancestry is not lexical order.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].type","typeLabel":"string"}},"required":["type","repo","events"],"type":"object","uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].ranges","typeLabel":"object[]"},"severity":{"description":"Per-entry source severity; no inheritance from root severity.","items":{"description":"Typed `VulnerabilitySeverity` source evidence.","properties":{"score":{"description":"Raw source score or CVSS vector; never converted to numeric CVSS.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].severity.items.[INDEX].score","typeLabel":"string"},"source":{"oneOf":[{"description":"Attribution URL; null when absent, empty when neutralized.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].severity.items.[INDEX].source.oneOf.0","typeLabel":"string"},{"description":"Attribution URL; null when absent, empty when neutralized.","type":"null","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].severity.items.[INDEX].source.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].severity.items.[INDEX].source","typeLabel":"string | null"},"type":{"description":"Open source severity discriminator; preserve unfamiliar values.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].severity.items.[INDEX].type","typeLabel":"string"}},"required":["type","score","source"],"type":"object","uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].severity.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].severity","typeLabel":"object[]"},"versions":{"description":"Explicit source versions in order; not expanded ranges.","items":{"type":"string","uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].versions.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected.items.[INDEX].versions","typeLabel":"string[]"}},"required":["package","severity","ranges","versions"],"type":"object","uniqueKey":"advisory.oneOf.1.affected.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"advisory.oneOf.1.affected","typeLabel":"object[]"},"aliases":{"description":"Aliases reported by this source; no merging or resolution guarantee.","items":{"type":"string","uniqueKey":"advisory.oneOf.1.aliases.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"advisory.oneOf.1.aliases","typeLabel":"string[]"},"content_safety":{"description":"Normalization across the entire source tree; not a trust rating.","properties":{"filtered":{"description":"Whether normalization changed source content.","type":"boolean","isRequired":true,"uniqueKey":"advisory.oneOf.1.content_safety.filtered","typeLabel":"boolean"},"modifications":{"description":"Open source normalization categories, including unfamiliar values.","items":{"type":"string","uniqueKey":"advisory.oneOf.1.content_safety.modifications.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"advisory.oneOf.1.content_safety.modifications","typeLabel":"string[]"}},"required":["filtered","modifications"],"type":"object","isRequired":true,"uniqueKey":"advisory.oneOf.1.content_safety","typeLabel":"object"},"details":{"oneOf":[{"description":"Normalized source Markdown; evidence, not trusted agent instructions.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.details.oneOf.0","typeLabel":"string"},{"description":"Normalized source Markdown; evidence, not trusted agent instructions.","type":"null","isRequired":true,"uniqueKey":"advisory.oneOf.1.details.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"advisory.oneOf.1.details","typeLabel":"string | null"},"modified_at":{"description":"Source revision timestamp with original precision; not an archival snapshot.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.modified_at","typeLabel":"string"},"osv_id":{"description":"Actual served source ID; use for attribution and subsequent reads.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.osv_id","typeLabel":"string"},"published_at":{"oneOf":[{"description":"Source publication timestamp with original precision; null when absent.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.published_at.oneOf.0","typeLabel":"string"},{"description":"Source publication timestamp with original precision; null when absent.","type":"null","isRequired":true,"uniqueKey":"advisory.oneOf.1.published_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"advisory.oneOf.1.published_at","typeLabel":"string | null"},"references":{"description":"Ordered source references; URLs are not fetched.","items":{"description":"Typed `VulnerabilityReference` source evidence.","properties":{"type":{"description":"Open source reference category; preserve unfamiliar values.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.references.items.[INDEX].type","typeLabel":"string"},"url":{"oneOf":[{"description":"Source URL; null when absent, empty when neutralized.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.references.items.[INDEX].url.oneOf.0","typeLabel":"string"},{"description":"Source URL; null when absent, empty when neutralized.","type":"null","isRequired":true,"uniqueKey":"advisory.oneOf.1.references.items.[INDEX].url.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"advisory.oneOf.1.references.items.[INDEX].url","typeLabel":"string | null"}},"required":["type","url"],"type":"object","uniqueKey":"advisory.oneOf.1.references.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"advisory.oneOf.1.references","typeLabel":"object[]"},"severity":{"description":"Advisory-wide severity evidence; empty does not mean zero severity.","items":{"description":"Typed `VulnerabilitySeverity` source evidence.","properties":{"score":{"description":"Raw source score or CVSS vector; never converted to numeric CVSS.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.severity.items.[INDEX].score","typeLabel":"string"},"source":{"oneOf":[{"description":"Attribution URL; null when absent, empty when neutralized.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.severity.items.[INDEX].source.oneOf.0","typeLabel":"string"},{"description":"Attribution URL; null when absent, empty when neutralized.","type":"null","isRequired":true,"uniqueKey":"advisory.oneOf.1.severity.items.[INDEX].source.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"advisory.oneOf.1.severity.items.[INDEX].source","typeLabel":"string | null"},"type":{"description":"Open source severity discriminator; preserve unfamiliar values.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.severity.items.[INDEX].type","typeLabel":"string"}},"required":["type","score","source"],"type":"object","uniqueKey":"advisory.oneOf.1.severity.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"advisory.oneOf.1.severity","typeLabel":"object[]"},"source_url":{"description":"Source advisory URL for the served ID.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.source_url","typeLabel":"string"},"summary":{"oneOf":[{"description":"Normalized source summary, null when absent.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.summary.oneOf.0","typeLabel":"string"},{"description":"Normalized source summary, null when absent.","type":"null","isRequired":true,"uniqueKey":"advisory.oneOf.1.summary.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"advisory.oneOf.1.summary","typeLabel":"string | null"},"withdrawn_at":{"oneOf":[{"description":"Source withdrawal timestamp; non-null means withdrawn.","type":"string","isRequired":true,"uniqueKey":"advisory.oneOf.1.withdrawn_at.oneOf.0","typeLabel":"string"},{"description":"Source withdrawal timestamp; non-null means withdrawn.","type":"null","isRequired":true,"uniqueKey":"advisory.oneOf.1.withdrawn_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"advisory.oneOf.1.withdrawn_at","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"advisory.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"advisory","typeLabel":"null | object"},"affected_packages":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.0","typeLabel":"null"},{"type":"object","description":"Known named packages grouped by the existing registry identity rules, combining one served source record with exact-ID/direct-alias associations in the imported corpus. Package-less Git evidence remains under advisory.affected. A source failure preserves imported groups; an imported read failure preserves named source groups. Null means neither branch established package evidence; inspect `diagnostics`. An invalid or stale selected page returns 400 rather than a successful null page. The REST page defaults to limit 5 and accepts 1–8 complete groups; whole groups are never cut between their advisory rows. This endpoint returns one page without automatic draining.","required":["entries","page_info","coverage"],"properties":{"coverage":{"description":"Independent acquisition outcomes for the current served source and imported associations. Read these even when entries is empty; successful pagination cannot repair missing evidence.","properties":{"imported_status":{"description":"`available` means the exact/direct-alias read completed against the imported corpus, even with zero rows; `unavailable` means it failed. Corpus absence is not a global safety claim. Unfamiliar producer states remain explicit.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.coverage.imported_status","typeLabel":"string"},"source_status":{"description":"Acquisition of the one current exact-first source record: `available`, `not_found`, `ambiguous` or `unavailable`. Availability does not mean every linked advisory was fetched. Missing outcomes are explained in `diagnostics`; unfamiliar producer states remain explicit.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.coverage.source_status","typeLabel":"string"}},"required":["source_status","imported_status"],"type":"object","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.coverage","typeLabel":"object"},"entries":{"description":"Complete evidence branches for each selected package identity, in deterministic registry/ecosystem/name order. Empty is a checked observation only in conjunction with coverage and `diagnostics`; it is never proof that no packages are affected.","items":{"description":"One proven package identity with separate live-source and imported-advisory evidence.","properties":{"advisories":{"description":"All stored advisory association rows qualifying through the requested/served ID or its recorded direct aliases for this package, including withdrawn records. Source IDs, revisions and spellings remain attributable; no advisory or range merge is performed. Empty means no matching imported association was found, not that the source package is unaffected. Bounded displays remain separate from original source ranges and reported fixes.","items":{"description":"A real imported advisory association, with its own source attribution and revision.","properties":{"affected_version_display":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].affected_version_display.oneOf.0","typeLabel":"null"},{"type":"object","description":"Optional compact presentation of affected-version evidence using package release catalogs. Release catalog data is acquired when ordering affects presentation; display strings are not matcher input.","required":["ranges","total_count","truncated"],"properties":{"ranges":{"description":"Compact affected-version display strings.","items":{"type":"string","uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].affected_version_display.oneOf.1.ranges.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].affected_version_display.oneOf.1.ranges","typeLabel":"string[]"},"total_count":{"description":"Number of compact display ranges before truncation.","format":"int32","minimum":0,"type":"integer","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].affected_version_display.oneOf.1.total_count","typeLabel":"integer\u003cint32>"},"truncated":{"description":"Whether the compact display range list was truncated.","type":"boolean","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].affected_version_display.oneOf.1.truncated","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].affected_version_display.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].affected_version_display","typeLabel":"null | object"},"affected_version_ranges":{"oneOf":[{"description":"Raw advisory evidence strings: space-separated native comparisons or literal ==version entries. * means all valid versions; semver: preserves source `SemVer` ordering where native ordering differs; osv-invalid: marks an unevaluable source timeline, not a confirmed match. These ranges are advisory-wide, not an installed-version assessment. Follow up through the package vulnerabilities endpoint with an installed version. Preserve these strings; they are not manifest constraints.","items":{"type":"string","uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].affected_version_ranges.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].affected_version_ranges.oneOf.0","typeLabel":"string[]"},{"description":"Raw advisory evidence strings: space-separated native comparisons or literal ==version entries. * means all valid versions; semver: preserves source `SemVer` ordering where native ordering differs; osv-invalid: marks an unevaluable source timeline, not a confirmed match. These ranges are advisory-wide, not an installed-version assessment. Follow up through the package vulnerabilities endpoint with an installed version. Preserve these strings; they are not manifest constraints.","items":{"type":"string"},"type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].affected_version_ranges.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].affected_version_ranges","typeLabel":"string[] | null"},"aliases":{"description":"Alternative advisory IDs.","items":{"type":"string","uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].aliases.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].aliases","typeLabel":"string[]"},"content_safety":{"description":"Content-safety report for advisory display prose. Content is normalized regardless of field selection; the report may include transformations in unselected fields.","properties":{"filtered":{"description":"Whether normalization changed source content.","type":"boolean","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].content_safety.filtered","typeLabel":"boolean"},"modifications":{"description":"Open source normalization categories, including unfamiliar values.","items":{"type":"string","uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].content_safety.modifications.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].content_safety.modifications","typeLabel":"string[]"}},"required":["filtered","modifications"],"type":"object","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].content_safety","typeLabel":"object"},"fixed_in_versions":{"oneOf":[{"description":"Source-reported fixed-version evidence for this advisory, in storage order and not sorted for a specific resolved version. These strings do not certify releases or safe upgrades; follow up through the package vulnerabilities endpoint with an installed version.","items":{"type":"string","uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].fixed_in_versions.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].fixed_in_versions.oneOf.0","typeLabel":"string[]"},{"description":"Source-reported fixed-version evidence for this advisory, in storage order and not sorted for a specific resolved version. These strings do not certify releases or safe upgrades; follow up through the package vulnerabilities endpoint with an installed version.","items":{"type":"string"},"type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].fixed_in_versions.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].fixed_in_versions","typeLabel":"string[] | null"},"is_malicious":{"oneOf":[{"description":"Whether this advisory identifies malicious package behavior.","type":"boolean","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].is_malicious.oneOf.0","typeLabel":"boolean"},{"description":"Whether this advisory identifies malicious package behavior.","type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].is_malicious.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].is_malicious","typeLabel":"boolean | null"},"modified_at":{"oneOf":[{"description":"Last modification timestamp in ISO8601 format.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].modified_at.oneOf.0","typeLabel":"string"},{"description":"Last modification timestamp in ISO8601 format.","type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].modified_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].modified_at","typeLabel":"string | null"},"osv_id":{"oneOf":[{"description":"OSV advisory identifier.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].osv_id.oneOf.0","typeLabel":"string"},{"description":"OSV advisory identifier.","type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].osv_id.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].osv_id","typeLabel":"string | null"},"package_name":{"oneOf":[{"description":"Affected package name.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].package_name.oneOf.0","typeLabel":"string"},{"description":"Affected package name.","type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].package_name.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].package_name","typeLabel":"string | null"},"published_at":{"oneOf":[{"description":"Publication timestamp in ISO8601 format.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].published_at.oneOf.0","typeLabel":"string"},{"description":"Publication timestamp in ISO8601 format.","type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].published_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].published_at","typeLabel":"string | null"},"registry":{"oneOf":[{"description":"Affected package registry.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].registry.oneOf.0","typeLabel":"string"},{"description":"Affected package registry.","type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].registry.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].registry","typeLabel":"string | null"},"severity_score":{"oneOf":[{"description":"Numeric severity value (0.0-10.0). When `severity_type` is `SEVERITY_LABEL`, this is an approximation derived from the source label, not a calculated CVSS score.","format":"double","type":"number","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].severity_score.oneOf.0","typeLabel":"number\u003cdouble>"},{"description":"Numeric severity value (0.0-10.0). When `severity_type` is `SEVERITY_LABEL`, this is an approximation derived from the source label, not a calculated CVSS score.","format":"double","type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].severity_score.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].severity_score","typeLabel":"number\u003cdouble> | null"},"severity_type":{"oneOf":[{"description":"How `severity_score` was derived. `SEVERITY_LABEL` means `severity_score` is an approximation derived from the source label, not a calculated CVSS score.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].severity_type.oneOf.0","typeLabel":"string"},{"description":"How `severity_score` was derived. `SEVERITY_LABEL` means `severity_score` is an approximation derived from the source label, not a calculated CVSS score.","type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].severity_type.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].severity_type","typeLabel":"string | null"},"source_url":{"description":"OSV advisory page URL derived from this source advisory ID. It identifies the stored advisory record, not a package-version assessment or a historical source snapshot.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].source_url","typeLabel":"string"},"summary":{"oneOf":[{"description":"One-line vulnerability description.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].summary.oneOf.0","typeLabel":"string"},{"description":"One-line vulnerability description.","type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].summary.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].summary","typeLabel":"string | null"},"withdrawn_at":{"oneOf":[{"description":"Withdrawal timestamp in ISO8601 format, or null when the advisory is active.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].withdrawn_at.oneOf.0","typeLabel":"string"},{"description":"Withdrawal timestamp in ISO8601 format, or null when the advisory is active.","type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].withdrawn_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX].withdrawn_at","typeLabel":"string | null"}},"required":["osv_id","source_url","registry","package_name","summary","severity_score","severity_type","affected_version_ranges","fixed_in_versions","published_at","modified_at","withdrawn_at","aliases","is_malicious","affected_version_display","content_safety"],"type":"object","uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].advisories","typeLabel":"object[]"},"package":{"description":"Backend-grouped identity. Clients need not correlate source spellings, ecosystems or registry aliases. Original spellings and purls remain in `source_evidence`.affected.","properties":{"ecosystem":{"oneOf":[{"description":"Established base OSV ecosystem for a proven registry, or the original unmapped source namespace. Supported suffixes such as Maven repository qualifiers remain in original affected evidence, while registry identity follows ingestion rules. Null only for an imported registry without an established OSV ecosystem label.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].package.ecosystem.oneOf.0","typeLabel":"string"},{"description":"Established base OSV ecosystem for a proven registry, or the original unmapped source namespace. Supported suffixes such as Maven repository qualifiers remain in original affected evidence, while registry identity follows ingestion rules. Null only for an imported registry without an established OSV ecosystem label.","type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].package.ecosystem.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].package.ecosystem","typeLabel":"string | null"},"name":{"description":"Canonical package name under the proven registry identity rules; otherwise the source package name. `RubyGems` case and unresolved source names retain their normal identity semantics.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].package.name","typeLabel":"string"},"registry":{"oneOf":[{"description":"Supported registry when package identity is proven; null for unknown ecosystems or unresolved source coordinates. Null is not permission to assume a default registry.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].package.registry.oneOf.0","typeLabel":"string"},{"description":"Supported registry when package identity is proven; null for unknown ecosystems or unresolved source coordinates. Null is not permission to assume a default registry.","type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].package.registry.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].package.registry","typeLabel":"string | null"}},"required":["name","registry","ecosystem"],"type":"object","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].package","typeLabel":"object"},"source_evidence":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.0","typeLabel":"null"},{"type":"object","description":"This group's evidence from the actual served source record. Null when that record supplies no named entry for this identity or could not be read. A CVE may have no package coordinates while an imported GHSA association still supplies useful ranges. This branch never adopts another advisory's evidence.","required":["osv_id","source_url","modified_at","withdrawn_at","affected","affected_version_ranges","fixed_in_versions","affected_version_display","content_safety"],"properties":{"affected":{"description":"All original affected entries belonging to this package, in source order, including repeated entries, explicit versions, source ecosystem spellings and purls. GIT ranges retain commit events and require repository ancestry; they never become package release constraints.","items":{"description":"Typed `VulnerabilityAffected` source evidence.","properties":{"package":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].package.oneOf.0","typeLabel":"null"},{"type":"object","description":"Source package coordinates; null for package-less Git evidence.","required":["name","ecosystem","purl"],"properties":{"ecosystem":{"description":"Open OSV ecosystem string, including suffixes; not a registry enum.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].package.oneOf.1.ecosystem","typeLabel":"string"},"name":{"description":"Source package name.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].package.oneOf.1.name","typeLabel":"string"},"purl":{"oneOf":[{"description":"Source package identifier, not a browser URL; null when absent.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].package.oneOf.1.purl.oneOf.0","typeLabel":"string"},{"description":"Source package identifier, not a browser URL; null when absent.","type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].package.oneOf.1.purl.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].package.oneOf.1.purl","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].package.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].package","typeLabel":"null | object"},"ranges":{"description":"Source ranges in order; empty is missing evidence, not safety.","items":{"description":"Typed `VulnerabilityRange` source evidence.","properties":{"events":{"description":"Events in source order, without implicit events or evaluation.","items":{"description":"Typed `VulnerabilityRangeEvent` source evidence.","properties":{"fixed":{"oneOf":[{"description":"Exclusive fixing version or commit; source evidence, not upgrade advice.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].fixed.oneOf.0","typeLabel":"string"},{"description":"Exclusive fixing version or commit; source evidence, not upgrade advice.","type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].fixed.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].fixed","typeLabel":"string | null"},"introduced":{"oneOf":[{"description":"Inclusive start; 0 means before all versions. Null when absent.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].introduced.oneOf.0","typeLabel":"string"},{"description":"Inclusive start; 0 means before all versions. Null when absent.","type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].introduced.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].introduced","typeLabel":"string | null"},"last_affected":{"oneOf":[{"description":"Inclusive last affected boundary; not a fix. Null when absent.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].last_affected.oneOf.0","typeLabel":"string"},{"description":"Inclusive last affected boundary; not a fix. Null when absent.","type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].last_affected.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].last_affected","typeLabel":"string | null"},"limit":{"oneOf":[{"description":"Exclusive upper bound, not a fix; * means infinity. Null when absent.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].limit.oneOf.0","typeLabel":"string"},{"description":"Exclusive upper bound, not a fix; * means infinity. Null when absent.","type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].limit.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX].limit","typeLabel":"string | null"}},"required":["introduced","fixed","last_affected","limit"],"type":"object","uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].events","typeLabel":"object[]"},"repo":{"oneOf":[{"description":"Source repository URL; null when absent, empty when neutralized.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].repo.oneOf.0","typeLabel":"string"},{"description":"Source repository URL; null when absent, empty when neutralized.","type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].repo.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].repo","typeLabel":"string | null"},"type":{"description":"Open range type: SEMVER, ECOSYSTEM or GIT; commit ancestry is not lexical order.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX].type","typeLabel":"string"}},"required":["type","repo","events"],"type":"object","uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].ranges.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].ranges","typeLabel":"object[]"},"severity":{"description":"Per-entry source severity; no inheritance from root severity.","items":{"description":"Typed `VulnerabilitySeverity` source evidence.","properties":{"score":{"description":"Raw source score or CVSS vector; never converted to numeric CVSS.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].severity.items.[INDEX].score","typeLabel":"string"},"source":{"oneOf":[{"description":"Attribution URL; null when absent, empty when neutralized.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].severity.items.[INDEX].source.oneOf.0","typeLabel":"string"},{"description":"Attribution URL; null when absent, empty when neutralized.","type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].severity.items.[INDEX].source.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].severity.items.[INDEX].source","typeLabel":"string | null"},"type":{"description":"Open source severity discriminator; preserve unfamiliar values.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].severity.items.[INDEX].type","typeLabel":"string"}},"required":["type","score","source"],"type":"object","uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].severity.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].severity","typeLabel":"object[]"},"versions":{"description":"Explicit source versions in order; not expanded ranges.","items":{"type":"string","uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].versions.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX].versions","typeLabel":"string[]"}},"required":["package","severity","ranges","versions"],"type":"object","uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected","typeLabel":"object[]"},"affected_version_display":{"oneOf":[{"type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected_version_display.oneOf.0","typeLabel":"null"},{"type":"object","description":"Optional compact presentation of this package's source-derived version evidence, using the same observed-release interpretation as imported advisories. Null means unsupported interpretation or a nullable enrichment failure; original ranges remain authoritative. Display strings are not matcher input. Count and truncation refer only to displayable version evidence, not Git commit ranges.","required":["ranges","total_count","truncated"],"properties":{"ranges":{"description":"Compact affected-version display strings.","items":{"type":"string","uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected_version_display.oneOf.1.ranges.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected_version_display.oneOf.1.ranges","typeLabel":"string[]"},"total_count":{"description":"Number of compact display ranges before truncation.","format":"int32","minimum":0,"type":"integer","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected_version_display.oneOf.1.total_count","typeLabel":"integer\u003cint32>"},"truncated":{"description":"Whether the compact display range list was truncated.","type":"boolean","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected_version_display.oneOf.1.truncated","typeLabel":"boolean"}},"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected_version_display.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected_version_display","typeLabel":"null | object"},"affected_version_ranges":{"oneOf":[{"description":"Derived advisory constraint evidence using the same parser as ingestion, only when this package identity and source range kinds are supported. Null means derivation is unavailable; original affected evidence is still present. Strings retain native comparisons, semver: ordering and osv-invalid: uncertainty markers. Empty is absence of derived version evidence, not proof of non-affecting. Do not treat these as manifest constraints.","items":{"type":"string","uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected_version_ranges.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected_version_ranges.oneOf.0","typeLabel":"string[]"},{"description":"Derived advisory constraint evidence using the same parser as ingestion, only when this package identity and source range kinds are supported. Null means derivation is unavailable; original affected evidence is still present. Strings retain native comparisons, semver: ordering and osv-invalid: uncertainty markers. Empty is absence of derived version evidence, not proof of non-affecting. Do not treat these as manifest constraints.","items":{"type":"string"},"type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected_version_ranges.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.affected_version_ranges","typeLabel":"string[] | null"},"content_safety":{"description":"Normalization report shared with the complete served source record, plus derived constraint/fix presentation. It can describe transformations outside this package group or outside selected fields. It is neither a severity nor a source-trust rating.","properties":{"filtered":{"description":"Whether normalization changed source content.","type":"boolean","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.content_safety.filtered","typeLabel":"boolean"},"modifications":{"description":"Open source normalization categories, including unfamiliar values.","items":{"type":"string","uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.content_safety.modifications.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.content_safety.modifications","typeLabel":"string[]"}},"required":["filtered","modifications"],"type":"object","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.content_safety","typeLabel":"object"},"fixed_in_versions":{"description":"Distinct source-reported fixed release strings from only this group's SEMVER/ECOSYSTEM fixed events, in source order. GIT fixing commits, `last_affected` and limit are excluded. These strings are evidence, not verified releases or safe upgrade recommendations.","items":{"type":"string","uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.fixed_in_versions.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.fixed_in_versions","typeLabel":"string[]"},"modified_at":{"description":"Source modification timestamp with its original subsecond precision. It identifies the current observation, not an archived or replayable historical document.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.modified_at","typeLabel":"string"},"osv_id":{"description":"Actual served advisory ID for every affected entry in this branch. It can differ from `requested_id` after unique recorded-alias resolution.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.osv_id","typeLabel":"string"},"source_url":{"description":"OSV advisory page URL derived from the served source ID, suitable for attribution and a current source follow-up.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.source_url","typeLabel":"string"},"withdrawn_at":{"oneOf":[{"description":"Source withdrawal timestamp, or null when withdrawal is not reported. Withdrawn evidence remains visible and must be marked accordingly.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.withdrawn_at.oneOf.0","typeLabel":"string"},{"description":"Source withdrawal timestamp, or null when withdrawal is not reported. Withdrawn evidence remains visible and must be marked accordingly.","type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.withdrawn_at.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1.withdrawn_at","typeLabel":"string | null"}},"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX].source_evidence","typeLabel":"null | object"}},"required":["package","source_evidence","advisories"],"type":"object","uniqueKey":"affected_packages.oneOf.1.entries.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.entries","typeLabel":"object[]"},"page_info":{"description":"Exact group count and forward continuation for currently available evidence. `has_next_page` concerns pagination only, not missing acquisition or global corpus completeness. `end_cursor` is null on the final page.","properties":{"end_cursor":{"oneOf":[{"description":"Cursor to use for fetching the next page. Null if no more pages.","type":"string","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.page_info.end_cursor.oneOf.0","typeLabel":"string"},{"description":"Cursor to use for fetching the next page. Null if no more pages.","type":"null","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.page_info.end_cursor.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"affected_packages.oneOf.1.page_info.end_cursor","typeLabel":"string | null"},"has_next_page":{"description":"Whether there are more results after this page","type":"boolean","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.page_info.has_next_page","typeLabel":"boolean"},"total_count":{"description":"Total number of items available","format":"int32","minimum":0,"type":"integer","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.page_info.total_count","typeLabel":"integer\u003cint32>"}},"required":["total_count","has_next_page","end_cursor"],"type":"object","isRequired":true,"uniqueKey":"affected_packages.oneOf.1.page_info","typeLabel":"object"}},"isRequired":true,"uniqueKey":"affected_packages.oneOf.1","typeLabel":"object"}],"isRequired":true,"uniqueKey":"affected_packages","typeLabel":"null | object"},"diagnostics":{"description":"Public outcomes from source/imported acquisition and optional displays. Shared acquisition outcomes occur once, ordered source then imported. Optional display diagnostics follow with a public field `path`; their missing presentation does not discard usable evidence.","items":{"description":"An explicit unresolved acquisition or optional-presentation outcome. Lookup errors can also carry page diagnostics.","properties":{"candidate_ids":{"oneOf":[{"description":"Source advisory candidates for `AMBIGUOUS_VULNERABILITY_ID` when provided; null when unavailable or inapplicable. The producer currently supplies at most 20 sorted distinct IDs. Missing guidance or future bounds never discard usable evidence. Choose an explicit candidate rather than retrying the alias.","items":{"type":"string","uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.0","typeLabel":"string[]"},{"description":"Source advisory candidates for `AMBIGUOUS_VULNERABILITY_ID` when provided; null when unavailable or inapplicable. The producer currently supplies at most 20 sorted distinct IDs. Missing guidance or future bounds never discard usable evidence. Choose an explicit candidate rather than retrying the alias.","items":{"type":"string"},"type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids","typeLabel":"string[] | null"},"candidate_ids_truncated":{"oneOf":[{"description":"Whether more ambiguity candidates were omitted, when supplied. Null means unavailable or inapplicable; missing guidance does not discard usable evidence.","type":"boolean","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated.oneOf.0","typeLabel":"boolean"},{"description":"Whether more ambiguity candidates were omitted, when supplied. Null means unavailable or inapplicable; missing guidance does not discard usable evidence.","type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated","typeLabel":"boolean | null"},"code":{"description":"Stable public error code, such as `NOT_FOUND`, `AMBIGUOUS_VULNERABILITY_ID`, `RATE_LIMITED`, TIMEOUT, `UPSTREAM_ERROR` or `VALIDATION_ERROR`. Branch on this field rather than parsing message text.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].code","typeLabel":"string"},"message":{"description":"Neutral public explanation suitable for display. It contains no raw provider body, transport exception or credential.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].message","typeLabel":"string"},"path":{"oneOf":[{"description":"Sanitized JSON pointer for an optional supporting-field failure; null for backend acquisition outcomes.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path.oneOf.0","typeLabel":"string"},{"description":"Sanitized JSON pointer for an optional supporting-field failure; null for backend acquisition outcomes.","type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path","typeLabel":"string | null"},"retryable":{"description":"Whether retrying this failed operation can be useful. Invalid input, missing sources and unresolved aliases are non-retryable; a partial response does not make every diagnostic retryable.","type":"boolean","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].retryable","typeLabel":"boolean"},"section":{"description":"Evidence section with an unresolved outcome: `advisory` or `affected_packages`. Unfamiliar producer sections remain explicit.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].section","typeLabel":"string"}},"required":["section","code","message","retryable","candidate_ids","candidate_ids_truncated","path"],"type":"object","uniqueKey":"diagnostics.items.[INDEX]","typeLabel":"object"},"type":"array","isRequired":true,"uniqueKey":"diagnostics","typeLabel":"object[]"},"requested_id":{"description":"Trimmed, case-preserving input ID. It remains the requested ID even when a recorded alias resolves to another served source ID.","type":"string","isRequired":true,"uniqueKey":"requested_id","typeLabel":"string"}},"required":["requested_id","advisory","affected_packages","diagnostics"],"type":"object","uniqueKey":"","typeLabel":"object"},"exampleType":"examples"}},"description":"Attributed source and one whole-group package page, with explicit evidence coverage and diagnostics","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}},"X-RateLimit-Limit":{"description":"Maximum requests in the authenticated usage window shared across operations. Optional: supplied only when usage metadata is available.","schema":{"pattern":"^[0-9]+$","type":"string"}},"X-RateLimit-Remaining":{"description":"Requests remaining in that usage window after admission. Advisory snapshot; concurrent requests can consume quota. Optional when usage metadata is unavailable.","schema":{"pattern":"^[0-9]+$","type":"string"}},"X-RateLimit-Reset":{"description":"Usage window reset time as Unix epoch seconds (UTC), rounded up to the next whole second. This is an absolute timestamp, not a delay. Optional when usage metadata is unavailable. Honor Retry-After on 429 when present; other quotas can also reject requests.","schema":{"pattern":"^[0-9]+$","type":"string"}},"X-Request-ID":{"description":"Request trace ID for diagnostics; matches problem.instance on failures.","schema":{"type":"string"}}},"exampleType":"examples"},"637f7ef5-2f39-4279-bf0b-7110692e0dbc":{"content":{"application/problem+json":{"examples":{"invalid_session_id":{"title":"invalid_session_id","value":{"code":"INVALID_SESSION_ID","detail":"X-GitHits-Session-ID must occur once and match [A-Za-z0-9_-]{1,64}.","instance":"4bf92f3577b34da6a3ce929d0e0e4736","status":400,"title":"Invalid session ID","type":"about:blank"}},"validation":{"title":"validation","value":{"code":"VALIDATION_ERROR","detail":"The source ID or request is invalid.","instance":"4bf92f3577b34da6a3ce929d0e0e4736","status":400,"title":"Validation error","type":"about:blank"}}},"schema":{"type":"object","description":"Lookup failure with source selection guidance and evidence diagnostics.","required":["type","title","status","detail","instance","code"],"properties":{"code":{"description":"The stable uppercase API error code.","type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"description":"Human-readable explanation. Wording can change; use code and structured fields for program logic. Validation errors identify the first invalid field (including zero-based array indices) and a reason; version errors can include canonical-version guidance.","type":"string","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"description":"Request ID matching the X-Request-ID response header; include it when seeking support.","type":"string","isRequired":true,"uniqueKey":"instance","typeLabel":"string"},"status":{"description":"The HTTP status returned with this problem.","format":"int32","minimum":0,"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"title":{"description":"A short, stable title for the error.","type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"description":"The generic RFC 9457 problem type.","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string"},"acceptance_url":{"description":"Link for accepting the required terms, when provided.","type":"string","uniqueKey":"acceptance_url","typeLabel":"string"},"retryable":{"description":"Whether retrying later may help, when supplied. Follow this flag for lookup/provider outcomes and temporary daily-allowance failures; malformed evidence can be nonretryable.","type":"boolean","uniqueKey":"retryable","typeLabel":"boolean"},"terms_url":{"description":"Link to the terms that require acceptance, when provided.","type":"string","uniqueKey":"terms_url","typeLabel":"string"},"candidate_ids":{"description":"Candidate source IDs when available for an ambiguous alias; choose an explicit source.","items":{"type":"string","uniqueKey":"candidate_ids.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"candidate_ids","typeLabel":"string[]"},"candidate_ids_truncated":{"description":"Whether more ambiguity candidates exist beyond `candidate_ids`.","type":"boolean","uniqueKey":"candidate_ids_truncated","typeLabel":"boolean"},"diagnostics":{"description":"Source/imported acquisition and page diagnostics when available; request-level failures can omit them.","items":{"description":"An explicit unresolved acquisition or optional-presentation outcome. Lookup errors can also carry page diagnostics.","properties":{"candidate_ids":{"oneOf":[{"description":"Source advisory candidates for `AMBIGUOUS_VULNERABILITY_ID` when provided; null when unavailable or inapplicable. The producer currently supplies at most 20 sorted distinct IDs. Missing guidance or future bounds never discard usable evidence. Choose an explicit candidate rather than retrying the alias.","items":{"type":"string","uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.0","typeLabel":"string[]"},{"description":"Source advisory candidates for `AMBIGUOUS_VULNERABILITY_ID` when provided; null when unavailable or inapplicable. The producer currently supplies at most 20 sorted distinct IDs. Missing guidance or future bounds never discard usable evidence. Choose an explicit candidate rather than retrying the alias.","items":{"type":"string"},"type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids","typeLabel":"string[] | null"},"candidate_ids_truncated":{"oneOf":[{"description":"Whether more ambiguity candidates were omitted, when supplied. Null means unavailable or inapplicable; missing guidance does not discard usable evidence.","type":"boolean","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated.oneOf.0","typeLabel":"boolean"},{"description":"Whether more ambiguity candidates were omitted, when supplied. Null means unavailable or inapplicable; missing guidance does not discard usable evidence.","type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated","typeLabel":"boolean | null"},"code":{"description":"Stable public error code, such as `NOT_FOUND`, `AMBIGUOUS_VULNERABILITY_ID`, `RATE_LIMITED`, TIMEOUT, `UPSTREAM_ERROR` or `VALIDATION_ERROR`. Branch on this field rather than parsing message text.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].code","typeLabel":"string"},"message":{"description":"Neutral public explanation suitable for display. It contains no raw provider body, transport exception or credential.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].message","typeLabel":"string"},"path":{"oneOf":[{"description":"Sanitized JSON pointer for an optional supporting-field failure; null for backend acquisition outcomes.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path.oneOf.0","typeLabel":"string"},{"description":"Sanitized JSON pointer for an optional supporting-field failure; null for backend acquisition outcomes.","type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path","typeLabel":"string | null"},"retryable":{"description":"Whether retrying this failed operation can be useful. Invalid input, missing sources and unresolved aliases are non-retryable; a partial response does not make every diagnostic retryable.","type":"boolean","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].retryable","typeLabel":"boolean"},"section":{"description":"Evidence section with an unresolved outcome: `advisory` or `affected_packages`. Unfamiliar producer sections remain explicit.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].section","typeLabel":"string"}},"required":["section","code","message","retryable","candidate_ids","candidate_ids_truncated","path"],"type":"object","uniqueKey":"diagnostics.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"diagnostics","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"exampleType":"examples"}},"description":"VALIDATION_ERROR: The source ID or request is invalid. INVALID_SESSION_ID: a supplied session header is invalid or duplicated. VALIDATION_ERROR details identify the first invalid field and a reason when available. Array indices are zero-based; submitted values and unknown keys are not echoed.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}},"X-Request-ID":{"description":"Request trace ID for diagnostics; matches problem.instance on failures.","schema":{"type":"string"}}},"exampleType":"examples"},"ef1b0ee5-5e84-471e-94b1-24974a978915":{"content":{"application/problem+json":{"example":{"code":"AUTHENTICATION_REQUIRED","detail":"A bearer credential is required.","instance":"4bf92f3577b34da6a3ce929d0e0e4736","status":401,"title":"Authentication required","type":"about:blank"},"schema":{"type":"object","description":"Lookup failure with source selection guidance and evidence diagnostics.","required":["type","title","status","detail","instance","code"],"properties":{"code":{"description":"The stable uppercase API error code.","type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"description":"Human-readable explanation. Wording can change; use code and structured fields for program logic. Validation errors identify the first invalid field (including zero-based array indices) and a reason; version errors can include canonical-version guidance.","type":"string","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"description":"Request ID matching the X-Request-ID response header; include it when seeking support.","type":"string","isRequired":true,"uniqueKey":"instance","typeLabel":"string"},"status":{"description":"The HTTP status returned with this problem.","format":"int32","minimum":0,"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"title":{"description":"A short, stable title for the error.","type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"description":"The generic RFC 9457 problem type.","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string"},"acceptance_url":{"description":"Link for accepting the required terms, when provided.","type":"string","uniqueKey":"acceptance_url","typeLabel":"string"},"retryable":{"description":"Whether retrying later may help, when supplied. Follow this flag for lookup/provider outcomes and temporary daily-allowance failures; malformed evidence can be nonretryable.","type":"boolean","uniqueKey":"retryable","typeLabel":"boolean"},"terms_url":{"description":"Link to the terms that require acceptance, when provided.","type":"string","uniqueKey":"terms_url","typeLabel":"string"},"candidate_ids":{"description":"Candidate source IDs when available for an ambiguous alias; choose an explicit source.","items":{"type":"string","uniqueKey":"candidate_ids.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"candidate_ids","typeLabel":"string[]"},"candidate_ids_truncated":{"description":"Whether more ambiguity candidates exist beyond `candidate_ids`.","type":"boolean","uniqueKey":"candidate_ids_truncated","typeLabel":"boolean"},"diagnostics":{"description":"Source/imported acquisition and page diagnostics when available; request-level failures can omit them.","items":{"description":"An explicit unresolved acquisition or optional-presentation outcome. Lookup errors can also carry page diagnostics.","properties":{"candidate_ids":{"oneOf":[{"description":"Source advisory candidates for `AMBIGUOUS_VULNERABILITY_ID` when provided; null when unavailable or inapplicable. The producer currently supplies at most 20 sorted distinct IDs. Missing guidance or future bounds never discard usable evidence. Choose an explicit candidate rather than retrying the alias.","items":{"type":"string","uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.0","typeLabel":"string[]"},{"description":"Source advisory candidates for `AMBIGUOUS_VULNERABILITY_ID` when provided; null when unavailable or inapplicable. The producer currently supplies at most 20 sorted distinct IDs. Missing guidance or future bounds never discard usable evidence. Choose an explicit candidate rather than retrying the alias.","items":{"type":"string"},"type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids","typeLabel":"string[] | null"},"candidate_ids_truncated":{"oneOf":[{"description":"Whether more ambiguity candidates were omitted, when supplied. Null means unavailable or inapplicable; missing guidance does not discard usable evidence.","type":"boolean","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated.oneOf.0","typeLabel":"boolean"},{"description":"Whether more ambiguity candidates were omitted, when supplied. Null means unavailable or inapplicable; missing guidance does not discard usable evidence.","type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated","typeLabel":"boolean | null"},"code":{"description":"Stable public error code, such as `NOT_FOUND`, `AMBIGUOUS_VULNERABILITY_ID`, `RATE_LIMITED`, TIMEOUT, `UPSTREAM_ERROR` or `VALIDATION_ERROR`. Branch on this field rather than parsing message text.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].code","typeLabel":"string"},"message":{"description":"Neutral public explanation suitable for display. It contains no raw provider body, transport exception or credential.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].message","typeLabel":"string"},"path":{"oneOf":[{"description":"Sanitized JSON pointer for an optional supporting-field failure; null for backend acquisition outcomes.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path.oneOf.0","typeLabel":"string"},{"description":"Sanitized JSON pointer for an optional supporting-field failure; null for backend acquisition outcomes.","type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path","typeLabel":"string | null"},"retryable":{"description":"Whether retrying this failed operation can be useful. Invalid input, missing sources and unresolved aliases are non-retryable; a partial response does not make every diagnostic retryable.","type":"boolean","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].retryable","typeLabel":"boolean"},"section":{"description":"Evidence section with an unresolved outcome: `advisory` or `affected_packages`. Unfamiliar producer sections remain explicit.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].section","typeLabel":"string"}},"required":["section","code","message","retryable","candidate_ids","candidate_ids_truncated","path"],"type":"object","uniqueKey":"diagnostics.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"diagnostics","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"AUTHENTICATION_REQUIRED","detail":"A bearer credential is required.","instance":"4bf92f3577b34da6a3ce929d0e0e4736","status":401,"title":"Authentication required","type":"about:blank"}}},"exampleType":"examples"}},"description":"AUTHENTICATION_REQUIRED: A bearer credential is required.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}},"X-Request-ID":{"description":"Request trace ID for diagnostics; matches problem.instance on failures.","schema":{"type":"string"}}},"exampleType":"examples"},"2ba6380c-f42f-4fe3-954d-807974d29f17":{"content":{"application/problem+json":{"example":{"code":"FORBIDDEN","detail":"The caller is not allowed to access this resource. ACCOUNT_INACTIVE, FEATURE_FLAG_REQUIRED or TERMS_ACCEPTANCE_REQUIRED may also be returned.","instance":"4bf92f3577b34da6a3ce929d0e0e4736","status":403,"title":"Forbidden","type":"about:blank"},"schema":{"type":"object","description":"Lookup failure with source selection guidance and evidence diagnostics.","required":["type","title","status","detail","instance","code"],"properties":{"code":{"description":"The stable uppercase API error code.","type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"description":"Human-readable explanation. Wording can change; use code and structured fields for program logic. Validation errors identify the first invalid field (including zero-based array indices) and a reason; version errors can include canonical-version guidance.","type":"string","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"description":"Request ID matching the X-Request-ID response header; include it when seeking support.","type":"string","isRequired":true,"uniqueKey":"instance","typeLabel":"string"},"status":{"description":"The HTTP status returned with this problem.","format":"int32","minimum":0,"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"title":{"description":"A short, stable title for the error.","type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"description":"The generic RFC 9457 problem type.","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string"},"acceptance_url":{"description":"Link for accepting the required terms, when provided.","type":"string","uniqueKey":"acceptance_url","typeLabel":"string"},"retryable":{"description":"Whether retrying later may help, when supplied. Follow this flag for lookup/provider outcomes and temporary daily-allowance failures; malformed evidence can be nonretryable.","type":"boolean","uniqueKey":"retryable","typeLabel":"boolean"},"terms_url":{"description":"Link to the terms that require acceptance, when provided.","type":"string","uniqueKey":"terms_url","typeLabel":"string"},"candidate_ids":{"description":"Candidate source IDs when available for an ambiguous alias; choose an explicit source.","items":{"type":"string","uniqueKey":"candidate_ids.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"candidate_ids","typeLabel":"string[]"},"candidate_ids_truncated":{"description":"Whether more ambiguity candidates exist beyond `candidate_ids`.","type":"boolean","uniqueKey":"candidate_ids_truncated","typeLabel":"boolean"},"diagnostics":{"description":"Source/imported acquisition and page diagnostics when available; request-level failures can omit them.","items":{"description":"An explicit unresolved acquisition or optional-presentation outcome. Lookup errors can also carry page diagnostics.","properties":{"candidate_ids":{"oneOf":[{"description":"Source advisory candidates for `AMBIGUOUS_VULNERABILITY_ID` when provided; null when unavailable or inapplicable. The producer currently supplies at most 20 sorted distinct IDs. Missing guidance or future bounds never discard usable evidence. Choose an explicit candidate rather than retrying the alias.","items":{"type":"string","uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.0","typeLabel":"string[]"},{"description":"Source advisory candidates for `AMBIGUOUS_VULNERABILITY_ID` when provided; null when unavailable or inapplicable. The producer currently supplies at most 20 sorted distinct IDs. Missing guidance or future bounds never discard usable evidence. Choose an explicit candidate rather than retrying the alias.","items":{"type":"string"},"type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids","typeLabel":"string[] | null"},"candidate_ids_truncated":{"oneOf":[{"description":"Whether more ambiguity candidates were omitted, when supplied. Null means unavailable or inapplicable; missing guidance does not discard usable evidence.","type":"boolean","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated.oneOf.0","typeLabel":"boolean"},{"description":"Whether more ambiguity candidates were omitted, when supplied. Null means unavailable or inapplicable; missing guidance does not discard usable evidence.","type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated","typeLabel":"boolean | null"},"code":{"description":"Stable public error code, such as `NOT_FOUND`, `AMBIGUOUS_VULNERABILITY_ID`, `RATE_LIMITED`, TIMEOUT, `UPSTREAM_ERROR` or `VALIDATION_ERROR`. Branch on this field rather than parsing message text.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].code","typeLabel":"string"},"message":{"description":"Neutral public explanation suitable for display. It contains no raw provider body, transport exception or credential.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].message","typeLabel":"string"},"path":{"oneOf":[{"description":"Sanitized JSON pointer for an optional supporting-field failure; null for backend acquisition outcomes.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path.oneOf.0","typeLabel":"string"},{"description":"Sanitized JSON pointer for an optional supporting-field failure; null for backend acquisition outcomes.","type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path","typeLabel":"string | null"},"retryable":{"description":"Whether retrying this failed operation can be useful. Invalid input, missing sources and unresolved aliases are non-retryable; a partial response does not make every diagnostic retryable.","type":"boolean","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].retryable","typeLabel":"boolean"},"section":{"description":"Evidence section with an unresolved outcome: `advisory` or `affected_packages`. Unfamiliar producer sections remain explicit.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].section","typeLabel":"string"}},"required":["section","code","message","retryable","candidate_ids","candidate_ids_truncated","path"],"type":"object","uniqueKey":"diagnostics.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"diagnostics","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"FORBIDDEN","detail":"The caller is not allowed to access this resource. ACCOUNT_INACTIVE, FEATURE_FLAG_REQUIRED or TERMS_ACCEPTANCE_REQUIRED may also be returned.","instance":"4bf92f3577b34da6a3ce929d0e0e4736","status":403,"title":"Forbidden","type":"about:blank"}}},"exampleType":"examples"}},"description":"FORBIDDEN: The caller is not allowed to access this resource. ACCOUNT_INACTIVE, FEATURE_FLAG_REQUIRED or TERMS_ACCEPTANCE_REQUIRED may also be returned.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}},"X-Request-ID":{"description":"Request trace ID for diagnostics; matches problem.instance on failures.","schema":{"type":"string"}}},"exampleType":"examples"},"639940dd-2cd4-438f-86bb-55c404b44ec4":{"content":{"application/problem+json":{"example":{"code":"NOT_FOUND","detail":"The source was not found and the imported association read completed with no package evidence.","diagnostics":[{"candidate_ids":null,"candidate_ids_truncated":null,"code":"NOT_FOUND","message":"The source was not found and the imported association read completed with no package evidence.","path":null,"retryable":false,"section":"advisory"}],"instance":"4bf92f3577b34da6a3ce929d0e0e4736","retryable":false,"status":404,"title":"Vulnerability lookup failed","type":"about:blank"},"schema":{"type":"object","description":"Lookup failure with source selection guidance and evidence diagnostics.","required":["type","title","status","detail","instance","code"],"properties":{"code":{"description":"The stable uppercase API error code.","type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"description":"Human-readable explanation. Wording can change; use code and structured fields for program logic. Validation errors identify the first invalid field (including zero-based array indices) and a reason; version errors can include canonical-version guidance.","type":"string","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"description":"Request ID matching the X-Request-ID response header; include it when seeking support.","type":"string","isRequired":true,"uniqueKey":"instance","typeLabel":"string"},"status":{"description":"The HTTP status returned with this problem.","format":"int32","minimum":0,"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"title":{"description":"A short, stable title for the error.","type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"description":"The generic RFC 9457 problem type.","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string"},"acceptance_url":{"description":"Link for accepting the required terms, when provided.","type":"string","uniqueKey":"acceptance_url","typeLabel":"string"},"retryable":{"description":"Whether retrying later may help, when supplied. Follow this flag for lookup/provider outcomes and temporary daily-allowance failures; malformed evidence can be nonretryable.","type":"boolean","uniqueKey":"retryable","typeLabel":"boolean"},"terms_url":{"description":"Link to the terms that require acceptance, when provided.","type":"string","uniqueKey":"terms_url","typeLabel":"string"},"candidate_ids":{"description":"Candidate source IDs when available for an ambiguous alias; choose an explicit source.","items":{"type":"string","uniqueKey":"candidate_ids.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"candidate_ids","typeLabel":"string[]"},"candidate_ids_truncated":{"description":"Whether more ambiguity candidates exist beyond `candidate_ids`.","type":"boolean","uniqueKey":"candidate_ids_truncated","typeLabel":"boolean"},"diagnostics":{"description":"Source/imported acquisition and page diagnostics when available; request-level failures can omit them.","items":{"description":"An explicit unresolved acquisition or optional-presentation outcome. Lookup errors can also carry page diagnostics.","properties":{"candidate_ids":{"oneOf":[{"description":"Source advisory candidates for `AMBIGUOUS_VULNERABILITY_ID` when provided; null when unavailable or inapplicable. The producer currently supplies at most 20 sorted distinct IDs. Missing guidance or future bounds never discard usable evidence. Choose an explicit candidate rather than retrying the alias.","items":{"type":"string","uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.0","typeLabel":"string[]"},{"description":"Source advisory candidates for `AMBIGUOUS_VULNERABILITY_ID` when provided; null when unavailable or inapplicable. The producer currently supplies at most 20 sorted distinct IDs. Missing guidance or future bounds never discard usable evidence. Choose an explicit candidate rather than retrying the alias.","items":{"type":"string"},"type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids","typeLabel":"string[] | null"},"candidate_ids_truncated":{"oneOf":[{"description":"Whether more ambiguity candidates were omitted, when supplied. Null means unavailable or inapplicable; missing guidance does not discard usable evidence.","type":"boolean","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated.oneOf.0","typeLabel":"boolean"},{"description":"Whether more ambiguity candidates were omitted, when supplied. Null means unavailable or inapplicable; missing guidance does not discard usable evidence.","type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated","typeLabel":"boolean | null"},"code":{"description":"Stable public error code, such as `NOT_FOUND`, `AMBIGUOUS_VULNERABILITY_ID`, `RATE_LIMITED`, TIMEOUT, `UPSTREAM_ERROR` or `VALIDATION_ERROR`. Branch on this field rather than parsing message text.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].code","typeLabel":"string"},"message":{"description":"Neutral public explanation suitable for display. It contains no raw provider body, transport exception or credential.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].message","typeLabel":"string"},"path":{"oneOf":[{"description":"Sanitized JSON pointer for an optional supporting-field failure; null for backend acquisition outcomes.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path.oneOf.0","typeLabel":"string"},{"description":"Sanitized JSON pointer for an optional supporting-field failure; null for backend acquisition outcomes.","type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path","typeLabel":"string | null"},"retryable":{"description":"Whether retrying this failed operation can be useful. Invalid input, missing sources and unresolved aliases are non-retryable; a partial response does not make every diagnostic retryable.","type":"boolean","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].retryable","typeLabel":"boolean"},"section":{"description":"Evidence section with an unresolved outcome: `advisory` or `affected_packages`. Unfamiliar producer sections remain explicit.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].section","typeLabel":"string"}},"required":["section","code","message","retryable","candidate_ids","candidate_ids_truncated","path"],"type":"object","uniqueKey":"diagnostics.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"diagnostics","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"NOT_FOUND","detail":"The source was not found and the imported association read completed with no package evidence.","diagnostics":[{"candidate_ids":null,"candidate_ids_truncated":null,"code":"NOT_FOUND","message":"The source was not found and the imported association read completed with no package evidence.","path":null,"retryable":false,"section":"advisory"}],"instance":"4bf92f3577b34da6a3ce929d0e0e4736","retryable":false,"status":404,"title":"Vulnerability lookup failed","type":"about:blank"}}},"exampleType":"examples"}},"description":"NOT_FOUND: The source was not found and the imported association read completed with no package evidence.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}},"X-Request-ID":{"description":"Request trace ID for diagnostics; matches problem.instance on failures.","schema":{"type":"string"}}},"exampleType":"examples"},"7aef1b5f-8d3a-4daa-9649-407fc1db614c":{"content":{"application/problem+json":{"example":{"code":"METHOD_NOT_ALLOWED","detail":"The requested method is not supported for this route.","instance":"4bf92f3577b34da6a3ce929d0e0e4736","status":405,"title":"Method not allowed","type":"about:blank"},"schema":{"description":"The stable problem document returned for an unsuccessful public API request.","properties":{"code":{"description":"The stable uppercase API error code.","type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"description":"Human-readable explanation. Wording can change; use code and structured fields for program logic. Validation errors identify the first invalid field (including zero-based array indices) and a reason; version errors can include canonical-version guidance.","type":"string","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"description":"Request ID matching the X-Request-ID response header; include it when seeking support.","type":"string","isRequired":true,"uniqueKey":"instance","typeLabel":"string"},"status":{"description":"The HTTP status returned with this problem.","format":"int32","minimum":0,"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"title":{"description":"A short, stable title for the error.","type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"description":"The generic RFC 9457 problem type.","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string"},"acceptance_url":{"description":"Link for accepting the required terms, when provided.","type":"string","uniqueKey":"acceptance_url","typeLabel":"string"},"retryable":{"description":"Whether retrying later may help, when supplied. Follow this flag for lookup/provider outcomes and temporary daily-allowance failures; malformed evidence can be nonretryable.","type":"boolean","uniqueKey":"retryable","typeLabel":"boolean"},"terms_url":{"description":"Link to the terms that require acceptance, when provided.","type":"string","uniqueKey":"terms_url","typeLabel":"string"}},"required":["type","title","status","detail","instance","code"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"METHOD_NOT_ALLOWED","detail":"The requested method is not supported for this route.","instance":"4bf92f3577b34da6a3ce929d0e0e4736","status":405,"title":"Method not allowed","type":"about:blank"}}},"exampleType":"examples"}},"description":"METHOD_NOT_ALLOWED: the route does not support this HTTP method.","headers":{"Allow":{"description":"Supported methods: GET, HEAD.","schema":{"type":"string"}},"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}},"X-Request-ID":{"description":"Request trace ID for diagnostics; matches problem.instance on failures.","schema":{"type":"string"}}},"exampleType":"examples"},"6d13ea5d-4cc9-4e8f-9ad3-285a46ff064e":{"content":{"application/problem+json":{"example":{"candidate_ids":["GHSA-example-a","GHSA-example-b"],"candidate_ids_truncated":false,"code":"AMBIGUOUS_VULNERABILITY_ID","detail":"Multiple source advisories match this alias. Read an explicit candidate ID.","diagnostics":[{"candidate_ids":["GHSA-example-a","GHSA-example-b"],"candidate_ids_truncated":false,"code":"AMBIGUOUS_VULNERABILITY_ID","message":"Multiple source advisories match this alias. Read an explicit candidate ID.","path":null,"retryable":false,"section":"advisory"}],"instance":"4bf92f3577b34da6a3ce929d0e0e4736","retryable":false,"status":422,"title":"Vulnerability lookup failed","type":"about:blank"},"schema":{"type":"object","description":"Lookup failure with source selection guidance and evidence diagnostics.","required":["type","title","status","detail","instance","code"],"properties":{"code":{"description":"The stable uppercase API error code.","type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"description":"Human-readable explanation. Wording can change; use code and structured fields for program logic. Validation errors identify the first invalid field (including zero-based array indices) and a reason; version errors can include canonical-version guidance.","type":"string","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"description":"Request ID matching the X-Request-ID response header; include it when seeking support.","type":"string","isRequired":true,"uniqueKey":"instance","typeLabel":"string"},"status":{"description":"The HTTP status returned with this problem.","format":"int32","minimum":0,"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"title":{"description":"A short, stable title for the error.","type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"description":"The generic RFC 9457 problem type.","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string"},"acceptance_url":{"description":"Link for accepting the required terms, when provided.","type":"string","uniqueKey":"acceptance_url","typeLabel":"string"},"retryable":{"description":"Whether retrying later may help, when supplied. Follow this flag for lookup/provider outcomes and temporary daily-allowance failures; malformed evidence can be nonretryable.","type":"boolean","uniqueKey":"retryable","typeLabel":"boolean"},"terms_url":{"description":"Link to the terms that require acceptance, when provided.","type":"string","uniqueKey":"terms_url","typeLabel":"string"},"candidate_ids":{"description":"Candidate source IDs when available for an ambiguous alias; choose an explicit source.","items":{"type":"string","uniqueKey":"candidate_ids.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"candidate_ids","typeLabel":"string[]"},"candidate_ids_truncated":{"description":"Whether more ambiguity candidates exist beyond `candidate_ids`.","type":"boolean","uniqueKey":"candidate_ids_truncated","typeLabel":"boolean"},"diagnostics":{"description":"Source/imported acquisition and page diagnostics when available; request-level failures can omit them.","items":{"description":"An explicit unresolved acquisition or optional-presentation outcome. Lookup errors can also carry page diagnostics.","properties":{"candidate_ids":{"oneOf":[{"description":"Source advisory candidates for `AMBIGUOUS_VULNERABILITY_ID` when provided; null when unavailable or inapplicable. The producer currently supplies at most 20 sorted distinct IDs. Missing guidance or future bounds never discard usable evidence. Choose an explicit candidate rather than retrying the alias.","items":{"type":"string","uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.0","typeLabel":"string[]"},{"description":"Source advisory candidates for `AMBIGUOUS_VULNERABILITY_ID` when provided; null when unavailable or inapplicable. The producer currently supplies at most 20 sorted distinct IDs. Missing guidance or future bounds never discard usable evidence. Choose an explicit candidate rather than retrying the alias.","items":{"type":"string"},"type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids","typeLabel":"string[] | null"},"candidate_ids_truncated":{"oneOf":[{"description":"Whether more ambiguity candidates were omitted, when supplied. Null means unavailable or inapplicable; missing guidance does not discard usable evidence.","type":"boolean","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated.oneOf.0","typeLabel":"boolean"},{"description":"Whether more ambiguity candidates were omitted, when supplied. Null means unavailable or inapplicable; missing guidance does not discard usable evidence.","type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated","typeLabel":"boolean | null"},"code":{"description":"Stable public error code, such as `NOT_FOUND`, `AMBIGUOUS_VULNERABILITY_ID`, `RATE_LIMITED`, TIMEOUT, `UPSTREAM_ERROR` or `VALIDATION_ERROR`. Branch on this field rather than parsing message text.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].code","typeLabel":"string"},"message":{"description":"Neutral public explanation suitable for display. It contains no raw provider body, transport exception or credential.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].message","typeLabel":"string"},"path":{"oneOf":[{"description":"Sanitized JSON pointer for an optional supporting-field failure; null for backend acquisition outcomes.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path.oneOf.0","typeLabel":"string"},{"description":"Sanitized JSON pointer for an optional supporting-field failure; null for backend acquisition outcomes.","type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path","typeLabel":"string | null"},"retryable":{"description":"Whether retrying this failed operation can be useful. Invalid input, missing sources and unresolved aliases are non-retryable; a partial response does not make every diagnostic retryable.","type":"boolean","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].retryable","typeLabel":"boolean"},"section":{"description":"Evidence section with an unresolved outcome: `advisory` or `affected_packages`. Unfamiliar producer sections remain explicit.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].section","typeLabel":"string"}},"required":["section","code","message","retryable","candidate_ids","candidate_ids_truncated","path"],"type":"object","uniqueKey":"diagnostics.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"diagnostics","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"candidate_ids":["GHSA-example-a","GHSA-example-b"],"candidate_ids_truncated":false,"code":"AMBIGUOUS_VULNERABILITY_ID","detail":"Multiple source advisories match this alias. Read an explicit candidate ID.","diagnostics":[{"candidate_ids":["GHSA-example-a","GHSA-example-b"],"candidate_ids_truncated":false,"code":"AMBIGUOUS_VULNERABILITY_ID","message":"Multiple source advisories match this alias. Read an explicit candidate ID.","path":null,"retryable":false,"section":"advisory"}],"instance":"4bf92f3577b34da6a3ce929d0e0e4736","retryable":false,"status":422,"title":"Vulnerability lookup failed","type":"about:blank"}}},"exampleType":"examples"}},"description":"AMBIGUOUS_VULNERABILITY_ID: Multiple source advisories match this alias. Read an explicit candidate ID.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}},"X-Request-ID":{"description":"Request trace ID for diagnostics; matches problem.instance on failures.","schema":{"type":"string"}}},"exampleType":"examples"},"b3d90a5b-4e73-4525-8172-3030ac25b06f":{"content":{"application/problem+json":{"example":{"code":"RATE_LIMITED","detail":"The request was rate limited.","instance":"4bf92f3577b34da6a3ce929d0e0e4736","retryable":true,"status":429,"title":"Rate limited","type":"about:blank"},"schema":{"type":"object","description":"Lookup failure with source selection guidance and evidence diagnostics.","required":["type","title","status","detail","instance","code"],"properties":{"code":{"description":"The stable uppercase API error code.","type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"description":"Human-readable explanation. Wording can change; use code and structured fields for program logic. Validation errors identify the first invalid field (including zero-based array indices) and a reason; version errors can include canonical-version guidance.","type":"string","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"description":"Request ID matching the X-Request-ID response header; include it when seeking support.","type":"string","isRequired":true,"uniqueKey":"instance","typeLabel":"string"},"status":{"description":"The HTTP status returned with this problem.","format":"int32","minimum":0,"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"title":{"description":"A short, stable title for the error.","type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"description":"The generic RFC 9457 problem type.","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string"},"acceptance_url":{"description":"Link for accepting the required terms, when provided.","type":"string","uniqueKey":"acceptance_url","typeLabel":"string"},"retryable":{"description":"Whether retrying later may help, when supplied. Follow this flag for lookup/provider outcomes and temporary daily-allowance failures; malformed evidence can be nonretryable.","type":"boolean","uniqueKey":"retryable","typeLabel":"boolean"},"terms_url":{"description":"Link to the terms that require acceptance, when provided.","type":"string","uniqueKey":"terms_url","typeLabel":"string"},"candidate_ids":{"description":"Candidate source IDs when available for an ambiguous alias; choose an explicit source.","items":{"type":"string","uniqueKey":"candidate_ids.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"candidate_ids","typeLabel":"string[]"},"candidate_ids_truncated":{"description":"Whether more ambiguity candidates exist beyond `candidate_ids`.","type":"boolean","uniqueKey":"candidate_ids_truncated","typeLabel":"boolean"},"diagnostics":{"description":"Source/imported acquisition and page diagnostics when available; request-level failures can omit them.","items":{"description":"An explicit unresolved acquisition or optional-presentation outcome. Lookup errors can also carry page diagnostics.","properties":{"candidate_ids":{"oneOf":[{"description":"Source advisory candidates for `AMBIGUOUS_VULNERABILITY_ID` when provided; null when unavailable or inapplicable. The producer currently supplies at most 20 sorted distinct IDs. Missing guidance or future bounds never discard usable evidence. Choose an explicit candidate rather than retrying the alias.","items":{"type":"string","uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.0","typeLabel":"string[]"},{"description":"Source advisory candidates for `AMBIGUOUS_VULNERABILITY_ID` when provided; null when unavailable or inapplicable. The producer currently supplies at most 20 sorted distinct IDs. Missing guidance or future bounds never discard usable evidence. Choose an explicit candidate rather than retrying the alias.","items":{"type":"string"},"type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids","typeLabel":"string[] | null"},"candidate_ids_truncated":{"oneOf":[{"description":"Whether more ambiguity candidates were omitted, when supplied. Null means unavailable or inapplicable; missing guidance does not discard usable evidence.","type":"boolean","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated.oneOf.0","typeLabel":"boolean"},{"description":"Whether more ambiguity candidates were omitted, when supplied. Null means unavailable or inapplicable; missing guidance does not discard usable evidence.","type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated","typeLabel":"boolean | null"},"code":{"description":"Stable public error code, such as `NOT_FOUND`, `AMBIGUOUS_VULNERABILITY_ID`, `RATE_LIMITED`, TIMEOUT, `UPSTREAM_ERROR` or `VALIDATION_ERROR`. Branch on this field rather than parsing message text.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].code","typeLabel":"string"},"message":{"description":"Neutral public explanation suitable for display. It contains no raw provider body, transport exception or credential.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].message","typeLabel":"string"},"path":{"oneOf":[{"description":"Sanitized JSON pointer for an optional supporting-field failure; null for backend acquisition outcomes.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path.oneOf.0","typeLabel":"string"},{"description":"Sanitized JSON pointer for an optional supporting-field failure; null for backend acquisition outcomes.","type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path","typeLabel":"string | null"},"retryable":{"description":"Whether retrying this failed operation can be useful. Invalid input, missing sources and unresolved aliases are non-retryable; a partial response does not make every diagnostic retryable.","type":"boolean","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].retryable","typeLabel":"boolean"},"section":{"description":"Evidence section with an unresolved outcome: `advisory` or `affected_packages`. Unfamiliar producer sections remain explicit.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].section","typeLabel":"string"}},"required":["section","code","message","retryable","candidate_ids","candidate_ids_truncated","path"],"type":"object","uniqueKey":"diagnostics.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"diagnostics","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"RATE_LIMITED","detail":"The request was rate limited.","instance":"4bf92f3577b34da6a3ce929d0e0e4736","retryable":true,"status":429,"title":"Rate limited","type":"about:blank"}}},"exampleType":"examples"}},"description":"RATE_LIMITED: The request was rate limited. RATE_LIMITED can also mean your shared daily allowance is exhausted. When Retry-After is supplied, wait until that delay or HTTP date before trying again.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}},"X-RateLimit-Limit":{"description":"Maximum requests in the authenticated usage window shared across operations. Optional: supplied only when usage metadata is available.","schema":{"pattern":"^[0-9]+$","type":"string"}},"X-RateLimit-Remaining":{"description":"Requests remaining in that usage window after admission. Advisory snapshot; concurrent requests can consume quota. Optional when usage metadata is unavailable.","schema":{"pattern":"^[0-9]+$","type":"string"}},"X-RateLimit-Reset":{"description":"Usage window reset time as Unix epoch seconds (UTC), rounded up to the next whole second. This is an absolute timestamp, not a delay. Optional when usage metadata is unavailable. Honor Retry-After on 429 when present; other quotas can also reject requests.","schema":{"pattern":"^[0-9]+$","type":"string"}},"X-Request-ID":{"description":"Request trace ID for diagnostics; matches problem.instance on failures.","schema":{"type":"string"}}},"exampleType":"examples"},"7acd3bd1-ca74-4f0c-9966-13791627ce88":{"description":"A request ID could not be assigned. The response has an empty body and no X-Request-ID or problem object; try again later.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}}},"x-githits-empty-identity-failure":true,"content":{"_mintlify/placeholder":{"schema":{"type":"object","description":""}}}},"861d5f54-2630-4608-b7ec-a260fff543af":{"content":{"application/problem+json":{"example":{"code":"UPSTREAM_ERROR","detail":"The upstream service failed to provide a response.","instance":"4bf92f3577b34da6a3ce929d0e0e4736","retryable":false,"status":502,"title":"Upstream error","type":"about:blank"},"schema":{"type":"object","description":"Lookup failure with source selection guidance and evidence diagnostics.","required":["type","title","status","detail","instance","code"],"properties":{"code":{"description":"The stable uppercase API error code.","type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"description":"Human-readable explanation. Wording can change; use code and structured fields for program logic. Validation errors identify the first invalid field (including zero-based array indices) and a reason; version errors can include canonical-version guidance.","type":"string","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"description":"Request ID matching the X-Request-ID response header; include it when seeking support.","type":"string","isRequired":true,"uniqueKey":"instance","typeLabel":"string"},"status":{"description":"The HTTP status returned with this problem.","format":"int32","minimum":0,"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"title":{"description":"A short, stable title for the error.","type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"description":"The generic RFC 9457 problem type.","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string"},"acceptance_url":{"description":"Link for accepting the required terms, when provided.","type":"string","uniqueKey":"acceptance_url","typeLabel":"string"},"retryable":{"description":"Whether retrying later may help, when supplied. Follow this flag for lookup/provider outcomes and temporary daily-allowance failures; malformed evidence can be nonretryable.","type":"boolean","uniqueKey":"retryable","typeLabel":"boolean"},"terms_url":{"description":"Link to the terms that require acceptance, when provided.","type":"string","uniqueKey":"terms_url","typeLabel":"string"},"candidate_ids":{"description":"Candidate source IDs when available for an ambiguous alias; choose an explicit source.","items":{"type":"string","uniqueKey":"candidate_ids.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"candidate_ids","typeLabel":"string[]"},"candidate_ids_truncated":{"description":"Whether more ambiguity candidates exist beyond `candidate_ids`.","type":"boolean","uniqueKey":"candidate_ids_truncated","typeLabel":"boolean"},"diagnostics":{"description":"Source/imported acquisition and page diagnostics when available; request-level failures can omit them.","items":{"description":"An explicit unresolved acquisition or optional-presentation outcome. Lookup errors can also carry page diagnostics.","properties":{"candidate_ids":{"oneOf":[{"description":"Source advisory candidates for `AMBIGUOUS_VULNERABILITY_ID` when provided; null when unavailable or inapplicable. The producer currently supplies at most 20 sorted distinct IDs. Missing guidance or future bounds never discard usable evidence. Choose an explicit candidate rather than retrying the alias.","items":{"type":"string","uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.0","typeLabel":"string[]"},{"description":"Source advisory candidates for `AMBIGUOUS_VULNERABILITY_ID` when provided; null when unavailable or inapplicable. The producer currently supplies at most 20 sorted distinct IDs. Missing guidance or future bounds never discard usable evidence. Choose an explicit candidate rather than retrying the alias.","items":{"type":"string"},"type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids","typeLabel":"string[] | null"},"candidate_ids_truncated":{"oneOf":[{"description":"Whether more ambiguity candidates were omitted, when supplied. Null means unavailable or inapplicable; missing guidance does not discard usable evidence.","type":"boolean","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated.oneOf.0","typeLabel":"boolean"},{"description":"Whether more ambiguity candidates were omitted, when supplied. Null means unavailable or inapplicable; missing guidance does not discard usable evidence.","type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated","typeLabel":"boolean | null"},"code":{"description":"Stable public error code, such as `NOT_FOUND`, `AMBIGUOUS_VULNERABILITY_ID`, `RATE_LIMITED`, TIMEOUT, `UPSTREAM_ERROR` or `VALIDATION_ERROR`. Branch on this field rather than parsing message text.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].code","typeLabel":"string"},"message":{"description":"Neutral public explanation suitable for display. It contains no raw provider body, transport exception or credential.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].message","typeLabel":"string"},"path":{"oneOf":[{"description":"Sanitized JSON pointer for an optional supporting-field failure; null for backend acquisition outcomes.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path.oneOf.0","typeLabel":"string"},{"description":"Sanitized JSON pointer for an optional supporting-field failure; null for backend acquisition outcomes.","type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path","typeLabel":"string | null"},"retryable":{"description":"Whether retrying this failed operation can be useful. Invalid input, missing sources and unresolved aliases are non-retryable; a partial response does not make every diagnostic retryable.","type":"boolean","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].retryable","typeLabel":"boolean"},"section":{"description":"Evidence section with an unresolved outcome: `advisory` or `affected_packages`. Unfamiliar producer sections remain explicit.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].section","typeLabel":"string"}},"required":["section","code","message","retryable","candidate_ids","candidate_ids_truncated","path"],"type":"object","uniqueKey":"diagnostics.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"diagnostics","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"UPSTREAM_ERROR","detail":"The upstream service failed to provide a response.","instance":"4bf92f3577b34da6a3ce929d0e0e4736","retryable":false,"status":502,"title":"Upstream error","type":"about:blank"}}},"exampleType":"examples"}},"description":"UPSTREAM_ERROR: The upstream service failed to provide a response.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}},"X-Request-ID":{"description":"Request trace ID for diagnostics; matches problem.instance on failures.","schema":{"type":"string"}}},"exampleType":"examples"},"15aa3865-3875-4abc-a6f8-dd38a27aa5b7":{"content":{"application/problem+json":{"example":{"code":"QUOTA_UNAVAILABLE","detail":"Daily usage authorization is temporarily unavailable. Retry this request.","instance":"4bf92f3577b34da6a3ce929d0e0e4736","retryable":true,"status":503,"title":"Quota authorization unavailable","type":"about:blank"},"schema":{"description":"The stable problem document returned for an unsuccessful public API request.","properties":{"code":{"description":"The stable uppercase API error code.","type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"description":"Human-readable explanation. Wording can change; use code and structured fields for program logic. Validation errors identify the first invalid field (including zero-based array indices) and a reason; version errors can include canonical-version guidance.","type":"string","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"description":"Request ID matching the X-Request-ID response header; include it when seeking support.","type":"string","isRequired":true,"uniqueKey":"instance","typeLabel":"string"},"status":{"description":"The HTTP status returned with this problem.","format":"int32","minimum":0,"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"title":{"description":"A short, stable title for the error.","type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"description":"The generic RFC 9457 problem type.","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string"},"acceptance_url":{"description":"Link for accepting the required terms, when provided.","type":"string","uniqueKey":"acceptance_url","typeLabel":"string"},"retryable":{"description":"Whether retrying later may help, when supplied. Follow this flag for lookup/provider outcomes and temporary daily-allowance failures; malformed evidence can be nonretryable.","type":"boolean","uniqueKey":"retryable","typeLabel":"boolean"},"terms_url":{"description":"Link to the terms that require acceptance, when provided.","type":"string","uniqueKey":"terms_url","typeLabel":"string"}},"required":["type","title","status","detail","instance","code"],"type":"object","uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"QUOTA_UNAVAILABLE","detail":"Daily usage authorization is temporarily unavailable. Retry this request.","instance":"4bf92f3577b34da6a3ce929d0e0e4736","retryable":true,"status":503,"title":"Quota authorization unavailable","type":"about:blank"}}},"exampleType":"examples"}},"description":"Service unavailable QUOTA_UNAVAILABLE: your daily allowance could not be checked. This is temporary; retry the same request later (retryable=true).","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}},"X-Request-ID":{"description":"Request trace ID for diagnostics; matches problem.instance on failures.","schema":{"type":"string"}}},"exampleType":"examples"},"6a177730-b6f2-4032-9318-be6422cbd7e1":{"content":{"application/problem+json":{"example":{"code":"TIMEOUT","detail":"The upstream request did not complete in time.","instance":"4bf92f3577b34da6a3ce929d0e0e4736","retryable":true,"status":504,"title":"Upstream timeout","type":"about:blank"},"schema":{"type":"object","description":"Lookup failure with source selection guidance and evidence diagnostics.","required":["type","title","status","detail","instance","code"],"properties":{"code":{"description":"The stable uppercase API error code.","type":"string","isRequired":true,"uniqueKey":"code","typeLabel":"string"},"detail":{"description":"Human-readable explanation. Wording can change; use code and structured fields for program logic. Validation errors identify the first invalid field (including zero-based array indices) and a reason; version errors can include canonical-version guidance.","type":"string","isRequired":true,"uniqueKey":"detail","typeLabel":"string"},"instance":{"description":"Request ID matching the X-Request-ID response header; include it when seeking support.","type":"string","isRequired":true,"uniqueKey":"instance","typeLabel":"string"},"status":{"description":"The HTTP status returned with this problem.","format":"int32","minimum":0,"type":"integer","isRequired":true,"uniqueKey":"status","typeLabel":"integer\u003cint32>"},"title":{"description":"A short, stable title for the error.","type":"string","isRequired":true,"uniqueKey":"title","typeLabel":"string"},"type":{"description":"The generic RFC 9457 problem type.","type":"string","isRequired":true,"uniqueKey":"type","typeLabel":"string"},"acceptance_url":{"description":"Link for accepting the required terms, when provided.","type":"string","uniqueKey":"acceptance_url","typeLabel":"string"},"retryable":{"description":"Whether retrying later may help, when supplied. Follow this flag for lookup/provider outcomes and temporary daily-allowance failures; malformed evidence can be nonretryable.","type":"boolean","uniqueKey":"retryable","typeLabel":"boolean"},"terms_url":{"description":"Link to the terms that require acceptance, when provided.","type":"string","uniqueKey":"terms_url","typeLabel":"string"},"candidate_ids":{"description":"Candidate source IDs when available for an ambiguous alias; choose an explicit source.","items":{"type":"string","uniqueKey":"candidate_ids.items.[INDEX]","typeLabel":"string"},"type":"array","uniqueKey":"candidate_ids","typeLabel":"string[]"},"candidate_ids_truncated":{"description":"Whether more ambiguity candidates exist beyond `candidate_ids`.","type":"boolean","uniqueKey":"candidate_ids_truncated","typeLabel":"boolean"},"diagnostics":{"description":"Source/imported acquisition and page diagnostics when available; request-level failures can omit them.","items":{"description":"An explicit unresolved acquisition or optional-presentation outcome. Lookup errors can also carry page diagnostics.","properties":{"candidate_ids":{"oneOf":[{"description":"Source advisory candidates for `AMBIGUOUS_VULNERABILITY_ID` when provided; null when unavailable or inapplicable. The producer currently supplies at most 20 sorted distinct IDs. Missing guidance or future bounds never discard usable evidence. Choose an explicit candidate rather than retrying the alias.","items":{"type":"string","uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.0.items.[INDEX]","typeLabel":"string"},"type":"array","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.0","typeLabel":"string[]"},{"description":"Source advisory candidates for `AMBIGUOUS_VULNERABILITY_ID` when provided; null when unavailable or inapplicable. The producer currently supplies at most 20 sorted distinct IDs. Missing guidance or future bounds never discard usable evidence. Choose an explicit candidate rather than retrying the alias.","items":{"type":"string"},"type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids","typeLabel":"string[] | null"},"candidate_ids_truncated":{"oneOf":[{"description":"Whether more ambiguity candidates were omitted, when supplied. Null means unavailable or inapplicable; missing guidance does not discard usable evidence.","type":"boolean","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated.oneOf.0","typeLabel":"boolean"},{"description":"Whether more ambiguity candidates were omitted, when supplied. Null means unavailable or inapplicable; missing guidance does not discard usable evidence.","type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].candidate_ids_truncated","typeLabel":"boolean | null"},"code":{"description":"Stable public error code, such as `NOT_FOUND`, `AMBIGUOUS_VULNERABILITY_ID`, `RATE_LIMITED`, TIMEOUT, `UPSTREAM_ERROR` or `VALIDATION_ERROR`. Branch on this field rather than parsing message text.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].code","typeLabel":"string"},"message":{"description":"Neutral public explanation suitable for display. It contains no raw provider body, transport exception or credential.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].message","typeLabel":"string"},"path":{"oneOf":[{"description":"Sanitized JSON pointer for an optional supporting-field failure; null for backend acquisition outcomes.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path.oneOf.0","typeLabel":"string"},{"description":"Sanitized JSON pointer for an optional supporting-field failure; null for backend acquisition outcomes.","type":"null","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path.oneOf.1","typeLabel":"null"}],"isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].path","typeLabel":"string | null"},"retryable":{"description":"Whether retrying this failed operation can be useful. Invalid input, missing sources and unresolved aliases are non-retryable; a partial response does not make every diagnostic retryable.","type":"boolean","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].retryable","typeLabel":"boolean"},"section":{"description":"Evidence section with an unresolved outcome: `advisory` or `affected_packages`. Unfamiliar producer sections remain explicit.","type":"string","isRequired":true,"uniqueKey":"diagnostics.items.[INDEX].section","typeLabel":"string"}},"required":["section","code","message","retryable","candidate_ids","candidate_ids_truncated","path"],"type":"object","uniqueKey":"diagnostics.items.[INDEX]","typeLabel":"object"},"type":"array","uniqueKey":"diagnostics","typeLabel":"object[]"}},"uniqueKey":"","typeLabel":"object"},"examples":{"Example":{"title":"Example","value":{"code":"TIMEOUT","detail":"The upstream request did not complete in time.","instance":"4bf92f3577b34da6a3ce929d0e0e4736","retryable":true,"status":504,"title":"Upstream timeout","type":"about:blank"}}},"exampleType":"examples"}},"description":"TIMEOUT: The upstream request did not complete in time.","headers":{"Cache-Control":{"schema":{"enum":["no-store"],"type":"string"}},"X-Request-ID":{"description":"Request trace ID for diagnostics; matches problem.instance on failures.","schema":{"type":"string"}}},"exampleType":"examples"}},"security":{"137f12ca-1445-448b-a68f-425b7cdae3b1":{"bearer_auth":{"scheme":"bearer","type":"http","scopes":[],"schemeName":"bearer_auth"}}},"servers":{"bfb2a79f-febe-439c-ad58-8db4455b87a2":{"description":"Production","url":"https://api.githits.dev"}},"processedSecurityOptions":[{"schemes":[{"scheme":{"scheme":"bearer","type":"http","scopes":[],"schemeName":"bearer_auth"},"schema":{"title":"Bearer Auth","type":"string","isRequired":true,"description":"Bearer authentication header of the form `Bearer \u003ctoken>`, where `\u003ctoken>` is your auth token.","format":"bearer","typeLabel":"string\u003cbearer>","deprecated":false},"schemeName":"bearer_auth","name":"Authorization"}],"title":"bearer_auth"}]},"originalFileLocation":"https://api.githits.dev/v1/openapi.json"},"subdomain":"githits","siteName":"GitHits","title":"Look up a vulnerability and affected packages - GitHits","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{}},"lastModified":"2026-11-05T11:15:02.359Z","originalFileLocation":"api-reference/v1/vulnerabilities/look-up-a-vulnerability-and-affected-packages.mdx"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"dark\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Look up a vulnerability ID or known alias for its current source explanation and one page of grouped package evidence. Authentication and public_read authorization are required. To assess an installed release, follow up with GET /v1/packages/{registry}/{name}/vulnerabilities?version=.... | Read | Use it for | | --- | --- | | advisory | The served source\u0026#x27;s explanation, references, severity and original affected entries | | affected_packages.entries | Named packages with separate source_evidence and imported advisories | | affected_packages.coverage and diagnostics | Which evidence was acquired and what remains unresolved, including on empty pages | Keep source and imported evidence separate. The service groups canonical package identities; clients need not match aliases or infer registries. The live source and imported association rows can disagree in ranges, fixes or revision. Package-less Git evidence stays under advisory.affected; a CVE can still have useful imported GHSA package associations. Unsupported namespaces remain visible with a null registry. A null registry is not permission to guess one from a purl. requested_id preserves normalized caller intent. advisory.osv_id and each evidence branch\u0026#x27;s ID, URL and revision identify the record actually served. Lookup is exact-first; only an exact source 404 permits one uniquely recorded imported alias candidate. Imported associations use exact ID/direct aliases, with no recursive alias discovery or range merge. Each row keeps its own timestamps and withdrawal state. URLs identify current records, not archival snapshots. Check coverage before interpreting an empty result. source_status is available, not_found, ambiguous or unavailable; imported_status is available or unavailable. Imported available means that read completed, even with no rows, not worldwide coverage. Source failure can preserve useful imported packages; an imported-read failure can preserve source evidence. Partial reads return 200 with diagnostics. Source not-found plus checked empty imported evidence returns 404. Ambiguity without useful package evidence returns 422 with candidates when available; choose an explicit ID. Wholly unavailable evidence returns a provider error. Successful pagination and has_next_page=false do not establish completeness or safety. Diagnostics use stable code, displayable message, and retryable. Optional display failures include a JSON pointer path; acquisition diagnostics have null path. Branch on code rather than parsing messages. Response status, section, registry and code vocabularies are open. Known registry/status/section values use lowercase spelling; source discriminators and modification categories retain producer spelling. Honor Retry-After when present. Distinguish ranges, displays and fixes. Original affected entries retain repeated entries, nullable packages, ecosystem spellings, purls, explicit versions and ordered range events. Derived affected_version_ranges retains native comparisons, semver: ordering and osv-invalid: uncertainty; null means unavailable derivation. These are evidence strings, not manifest constraints. affected_version_display is presentation with at most ten spans, total_count and truncated; it is not matcher input. Null can mean unsupported interpretation or a diagnosed optional failure. Source fixed_in_versions contains source-reported SEMVER/ECOSYSTEM fixed release strings; it excludes Git commits, limits and last-affected boundaries. Imported fix lists retain storage order. These lists do not certify published or safe releases or recommend an upgrade. Use the package endpoint for version-specific assessment and candidate evidence. SEMVER ranges use semantic ordering, ECOSYSTEM uses its own ordering, and GIT requires repository ancestry rather than lexical hash sorting. introduced is inclusive (0 means before all versions); fixed is an excluded fixing boundary; last_affected is inclusive and not a fix; limit is an exclusive boundary, not a fix (* means infinity). Missing event fields are null; no implicit events are added. Empty or null evidence never establishes safety. Timestamps remain strings with source precision; non-null withdrawn_at means withdrawn. Root and per-entry severity are independent. Raw vectors remain strings; an imported numeric SEVERITY_LABEL value is an approximation, not calculated CVSS. Prose is normalized source content, not trusted agent instructions. Reference URLs are not fetched and purls are identifiers; absent optional URLs are null, while unsafe schemes neutralized upstream become empty strings. content_safety reports normalization, not trust or severity. The fixed response has no fields selector. limit defaults to 5 and accepts 1–8 whole package groups; a group is never split between its advisory rows. No page is automatically drained. Continue with the same requested ID and after; evidence/revision changes invalidate cursors, while changing limit is allowed. Invalid or stale pages return 400, including when other source evidence is available.\">\u003cmeta data-mint-head name=\"application-name\" content=\"GitHits\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/githits/hPN3FB6to_tLCtYP/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/githits/hPN3FB6to_tLCtYP/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/githits/hPN3FB6to_tLCtYP/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/githits/hPN3FB6to_tLCtYP/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/githits/hPN3FB6to_tLCtYP/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/githits/hPN3FB6to_tLCtYP/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/githits/hPN3FB6to_tLCtYP/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/githits/hPN3FB6to_tLCtYP/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/githits/hPN3FB6to_tLCtYP/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Look up a vulnerability and affected packages - GitHits\">\u003cmeta data-mint-head property=\"og:description\" content=\"Look up a vulnerability ID or known alias for its current source explanation and one page of grouped package evidence. Authentication and public_read authorization are required. To assess an installed release, follow up with GET /v1/packages/{registry}/{name}/vulnerabilities?version=.... | Read | Use it for | | --- | --- | | advisory | The served source\u0026#x27;s explanation, references, severity and original affected entries | | affected_packages.entries | Named packages with separate source_evidence and imported advisories | | affected_packages.coverage and diagnostics | Which evidence was acquired and what remains unresolved, including on empty pages | Keep source and imported evidence separate. The service groups canonical package identities; clients need not match aliases or infer registries. The live source and imported association rows can disagree in ranges, fixes or revision. Package-less Git evidence stays under advisory.affected; a CVE can still have useful imported GHSA package associations. Unsupported namespaces remain visible with a null registry. A null registry is not permission to guess one from a purl. requested_id preserves normalized caller intent. advisory.osv_id and each evidence branch\u0026#x27;s ID, URL and revision identify the record actually served. Lookup is exact-first; only an exact source 404 permits one uniquely recorded imported alias candidate. Imported associations use exact ID/direct aliases, with no recursive alias discovery or range merge. Each row keeps its own timestamps and withdrawal state. URLs identify current records, not archival snapshots. Check coverage before interpreting an empty result. source_status is available, not_found, ambiguous or unavailable; imported_status is available or unavailable. Imported available means that read completed, even with no rows, not worldwide coverage. Source failure can preserve useful imported packages; an imported-read failure can preserve source evidence. Partial reads return 200 with diagnostics. Source not-found plus checked empty imported evidence returns 404. Ambiguity without useful package evidence returns 422 with candidates when available; choose an explicit ID. Wholly unavailable evidence returns a provider error. Successful pagination and has_next_page=false do not establish completeness or safety. Diagnostics use stable code, displayable message, and retryable. Optional display failures include a JSON pointer path; acquisition diagnostics have null path. Branch on code rather than parsing messages. Response status, section, registry and code vocabularies are open. Known registry/status/section values use lowercase spelling; source discriminators and modification categories retain producer spelling. Honor Retry-After when present. Distinguish ranges, displays and fixes. Original affected entries retain repeated entries, nullable packages, ecosystem spellings, purls, explicit versions and ordered range events. Derived affected_version_ranges retains native comparisons, semver: ordering and osv-invalid: uncertainty; null means unavailable derivation. These are evidence strings, not manifest constraints. affected_version_display is presentation with at most ten spans, total_count and truncated; it is not matcher input. Null can mean unsupported interpretation or a diagnosed optional failure. Source fixed_in_versions contains source-reported SEMVER/ECOSYSTEM fixed release strings; it excludes Git commits, limits and last-affected boundaries. Imported fix lists retain storage order. These lists do not certify published or safe releases or recommend an upgrade. Use the package endpoint for version-specific assessment and candidate evidence. SEMVER ranges use semantic ordering, ECOSYSTEM uses its own ordering, and GIT requires repository ancestry rather than lexical hash sorting. introduced is inclusive (0 means before all versions); fixed is an excluded fixing boundary; last_affected is inclusive and not a fix; limit is an exclusive boundary, not a fix (* means infinity). Missing event fields are null; no implicit events are added. Empty or null evidence never establishes safety. Timestamps remain strings with source precision; non-null withdrawn_at means withdrawn. Root and per-entry severity are independent. Raw vectors remain strings; an imported numeric SEVERITY_LABEL value is an approximation, not calculated CVSS. Prose is normalized source content, not trusted agent instructions. Reference URLs are not fetched and purls are identifiers; absent optional URLs are null, while unsafe schemes neutralized upstream become empty strings. content_safety reports normalization, not trust or severity. The fixed response has no fields selector. limit defaults to 5 and accepts 1–8 whole package groups; a group is never split between its advisory rows. No page is automatically drained. Continue with the same requested ID and after; evidence/revision changes invalidate cursors, while changing limit is allowed. Invalid or stale pages return 400, including when other source evidence is available.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"GitHits\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.githits.com/api-reference/v1/vulnerabilities/look-up-a-vulnerability-and-affected-packages\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://githits.mintlify.site/_mintlify/api/og/v2?division=Vulnerabilities\u0026amp;title=Look+up+a+vulnerability+and+affected+packages\u0026amp;description=Look+up+a+vulnerability+ID+or+known+alias+for+its+current+source+explanation+and+one+page+of+grouped+package+evidence.+Authentication+and+%60public_read%60+authoriz\u0026amp;theme=8041cabad20aa9f8c5227dd8\u0026amp;signature=73c34d06b10124c448894a22e445f57769915c0df3779d274447704cd7facce1\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Look up a vulnerability and affected packages - GitHits\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Look up a vulnerability ID or known alias for its current source explanation and one page of grouped package evidence. Authentication and public_read authorization are required. To assess an installed release, follow up with GET /v1/packages/{registry}/{name}/vulnerabilities?version=.... | Read | Use it for | | --- | --- | | advisory | The served source\u0026#x27;s explanation, references, severity and original affected entries | | affected_packages.entries | Named packages with separate source_evidence and imported advisories | | affected_packages.coverage and diagnostics | Which evidence was acquired and what remains unresolved, including on empty pages | Keep source and imported evidence separate. The service groups canonical package identities; clients need not match aliases or infer registries. The live source and imported association rows can disagree in ranges, fixes or revision. Package-less Git evidence stays under advisory.affected; a CVE can still have useful imported GHSA package associations. Unsupported namespaces remain visible with a null registry. A null registry is not permission to guess one from a purl. requested_id preserves normalized caller intent. advisory.osv_id and each evidence branch\u0026#x27;s ID, URL and revision identify the record actually served. Lookup is exact-first; only an exact source 404 permits one uniquely recorded imported alias candidate. Imported associations use exact ID/direct aliases, with no recursive alias discovery or range merge. Each row keeps its own timestamps and withdrawal state. URLs identify current records, not archival snapshots. Check coverage before interpreting an empty result. source_status is available, not_found, ambiguous or unavailable; imported_status is available or unavailable. Imported available means that read completed, even with no rows, not worldwide coverage. Source failure can preserve useful imported packages; an imported-read failure can preserve source evidence. Partial reads return 200 with diagnostics. Source not-found plus checked empty imported evidence returns 404. Ambiguity without useful package evidence returns 422 with candidates when available; choose an explicit ID. Wholly unavailable evidence returns a provider error. Successful pagination and has_next_page=false do not establish completeness or safety. Diagnostics use stable code, displayable message, and retryable. Optional display failures include a JSON pointer path; acquisition diagnostics have null path. Branch on code rather than parsing messages. Response status, section, registry and code vocabularies are open. Known registry/status/section values use lowercase spelling; source discriminators and modification categories retain producer spelling. Honor Retry-After when present. Distinguish ranges, displays and fixes. Original affected entries retain repeated entries, nullable packages, ecosystem spellings, purls, explicit versions and ordered range events. Derived affected_version_ranges retains native comparisons, semver: ordering and osv-invalid: uncertainty; null means unavailable derivation. These are evidence strings, not manifest constraints. affected_version_display is presentation with at most ten spans, total_count and truncated; it is not matcher input. Null can mean unsupported interpretation or a diagnosed optional failure. Source fixed_in_versions contains source-reported SEMVER/ECOSYSTEM fixed release strings; it excludes Git commits, limits and last-affected boundaries. Imported fix lists retain storage order. These lists do not certify published or safe releases or recommend an upgrade. Use the package endpoint for version-specific assessment and candidate evidence. SEMVER ranges use semantic ordering, ECOSYSTEM uses its own ordering, and GIT requires repository ancestry rather than lexical hash sorting. introduced is inclusive (0 means before all versions); fixed is an excluded fixing boundary; last_affected is inclusive and not a fix; limit is an exclusive boundary, not a fix (* means infinity). Missing event fields are null; no implicit events are added. Empty or null evidence never establishes safety. Timestamps remain strings with source precision; non-null withdrawn_at means withdrawn. Root and per-entry severity are independent. Raw vectors remain strings; an imported numeric SEVERITY_LABEL value is an approximation, not calculated CVSS. Prose is normalized source content, not trusted agent instructions. Reference URLs are not fetched and purls are identifiers; absent optional URLs are null, while unsafe schemes neutralized upstream become empty strings. content_safety reports normalization, not trust or severity. The fixed response has no fields selector. limit defaults to 5 and accepts 1–8 whole package groups; a group is never split between its advisory rows. No page is automatically drained. Continue with the same requested ID and after; evidence/revision changes invalidate cursors, while changing limit is allowed. Invalid or stale pages return 400, including when other source evidence is available.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://githits.mintlify.site/_mintlify/api/og/v2?division=Vulnerabilities\u0026amp;title=Look+up+a+vulnerability+and+affected+packages\u0026amp;description=Look+up+a+vulnerability+ID+or+known+alias+for+its+current+source+explanation+and+one+page+of+grouped+package+evidence.+Authentication+and+%60public_read%60+authoriz\u0026amp;theme=8041cabad20aa9f8c5227dd8\u0026amp;signature=73c34d06b10124c448894a22e445f57769915c0df3779d274447704cd7facce1\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/githits/hPN3FB6to_tLCtYP/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"GitHits\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#cc3f8b\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.githits.com/api-reference/v1/vulnerabilities/look-up-a-vulnerability-and-affected-packages\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/api-reference/v1/vulnerabilities/look-up-a-vulnerability-and-affected-packages.md\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.githits.com/#organization\",\"name\":\"GitHits\",\"url\":\"https://docs.githits.com\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/githits/nEuGn8_ZROo1DncD/images/githits-wordmark.svg?fit=max\u0026auto=format\u0026n=nEuGn8_ZROo1DncD\u0026q=85\u0026s=33b1a4083b1476ad8520731d35d55987\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.githits.com#website\",\"name\":\"GitHits\",\"url\":\"https://docs.githits.com\",\"publisher\":{\"@id\":\"https://docs.githits.com/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.githits.com/api-reference/v1/vulnerabilities/look-up-a-vulnerability-and-affected-packages#webpage\",\"url\":\"https://docs.githits.com/api-reference/v1/vulnerabilities/look-up-a-vulnerability-and-affected-packages\",\"name\":\"Look up a vulnerability and affected packages\",\"description\":\"Look up a vulnerability ID or known alias for its current source explanation and one page of grouped package evidence. Authentication and public_read authorization are required. To assess an installed release, follow up with GET /v1/packages/{registry}/{name}/vulnerabilities?version=.... | Read | Use it for | | --- | --- | | advisory | The served source's explanation, references, severity and original affected entries | | affected_packages.entries | Named packages with separate source_evidence and imported advisories | | affected_packages.coverage and diagnostics | Which evidence was acquired and what remains unresolved, including on empty pages | Keep source and imported evidence separate. The service groups canonical package identities; clients need not match aliases or infer registries. The live source and imported association rows can disagree in ranges, fixes or revision. Package-less Git evidence stays under advisory.affected; a CVE can still have useful imported GHSA package associations. Unsupported namespaces remain visible with a null registry. A null registry is not permission to guess one from a purl. requested_id preserves normalized caller intent. advisory.osv_id and each evidence branch's ID, URL and revision identify the record actually served. Lookup is exact-first; only an exact source 404 permits one uniquely recorded imported alias candidate. Imported associations use exact ID/direct aliases, with no recursive alias discovery or range merge. Each row keeps its own timestamps and withdrawal state. URLs identify current records, not archival snapshots. Check coverage before interpreting an empty result. source_status is available, not_found, ambiguous or unavailable; imported_status is available or unavailable. Imported available means that read completed, even with no rows, not worldwide coverage. Source failure can preserve useful imported packages; an imported-read failure can preserve source evidence. Partial reads return 200 with diagnostics. Source not-found plus checked empty imported evidence returns 404. Ambiguity without useful package evidence returns 422 with candidates when available; choose an explicit ID. Wholly unavailable evidence returns a provider error. Successful pagination and has_next_page=false do not establish completeness or safety. Diagnostics use stable code, displayable message, and retryable. Optional display failures include a JSON pointer path; acquisition diagnostics have null path. Branch on code rather than parsing messages. Response status, section, registry and code vocabularies are open. Known registry/status/section values use lowercase spelling; source discriminators and modification categories retain producer spelling. Honor Retry-After when present. Distinguish ranges, displays and fixes. Original affected entries retain repeated entries, nullable packages, ecosystem spellings, purls, explicit versions and ordered range events. Derived affected_version_ranges retains native comparisons, semver: ordering and osv-invalid: uncertainty; null means unavailable derivation. These are evidence strings, not manifest constraints. affected_version_display is presentation with at most ten spans, total_count and truncated; it is not matcher input. Null can mean unsupported interpretation or a diagnosed optional failure. Source fixed_in_versions contains source-reported SEMVER/ECOSYSTEM fixed release strings; it excludes Git commits, limits and last-affected boundaries. Imported fix lists retain storage order. These lists do not certify published or safe releases or recommend an upgrade. Use the package endpoint for version-specific assessment and candidate evidence. SEMVER ranges use semantic ordering, ECOSYSTEM uses its own ordering, and GIT requires repository ancestry rather than lexical hash sorting. introduced is inclusive (0 means before all versions); fixed is an excluded fixing boundary; last_affected is inclusive and not a fix; limit is an exclusive boundary, not a fix (* means infinity). Missing event fields are null; no implicit events are added. Empty or null evidence never establishes safety. Timestamps remain strings with source precision; non-null withdrawn_at means withdrawn. Root and per-entry severity are independent. Raw vectors remain strings; an imported numeric SEVERITY_LABEL value is an approximation, not calculated CVSS. Prose is normalized source content, not trusted agent instructions. Reference URLs are not fetched and purls are identifiers; absent optional URLs are null, while unsafe schemes neutralized upstream become empty strings. content_safety reports normalization, not trust or severity. The fixed response has no fields selector. limit defaults to 5 and accepts 1–8 whole package groups; a group is never split between its advisory rows. No page is automatically drained. Continue with the same requested ID and after; evidence/revision changes invalidate cursors, while changing limit is allowed. Invalid or stale pages return 400, including when other source evidence is available.\",\"dateModified\":\"2026-11-05T11:15:02.359Z\",\"isPartOf\":{\"@id\":\"https://docs.githits.com#website\"},\"breadcrumb\":{\"@id\":\"https://docs.githits.com/api-reference/v1/vulnerabilities/look-up-a-vulnerability-and-affected-packages#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.githits.com/api-reference/v1/vulnerabilities/look-up-a-vulnerability-and-affected-packages#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"v1 reference\",\"item\":\"https://docs.githits.com/api-reference/v1/packages/get-a-package-or-repository-changelog\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Look up a vulnerability and affected packages\",\"item\":\"https://docs.githits.com/api-reference/v1/vulnerabilities/look-up-a-vulnerability-and-affected-packages\"}]},{\"@type\":[\"TechArticle\",\"APIReference\"],\"@id\":\"https://docs.githits.com/api-reference/v1/vulnerabilities/look-up-a-vulnerability-and-affected-packages#apireference\",\"headline\":\"Look up a vulnerability and affected packages\",\"name\":\"Look up a vulnerability and affected packages\",\"description\":\"Look up a vulnerability ID or known alias for its current source explanation and one page of grouped package evidence. Authentication and public_read authorization are required. To assess an installed release, follow up with GET /v1/packages/{registry}/{name}/vulnerabilities?version=.... | Read | Use it for | | --- | --- | | advisory | The served source's explanation, references, severity and original affected entries | | affected_packages.entries | Named packages with separate source_evidence and imported advisories | | affected_packages.coverage and diagnostics | Which evidence was acquired and what remains unresolved, including on empty pages | Keep source and imported evidence separate. The service groups canonical package identities; clients need not match aliases or infer registries. The live source and imported association rows can disagree in ranges, fixes or revision. Package-less Git evidence stays under advisory.affected; a CVE can still have useful imported GHSA package associations. Unsupported namespaces remain visible with a null registry. A null registry is not permission to guess one from a purl. requested_id preserves normalized caller intent. advisory.osv_id and each evidence branch's ID, URL and revision identify the record actually served. Lookup is exact-first; only an exact source 404 permits one uniquely recorded imported alias candidate. Imported associations use exact ID/direct aliases, with no recursive alias discovery or range merge. Each row keeps its own timestamps and withdrawal state. URLs identify current records, not archival snapshots. Check coverage before interpreting an empty result. source_status is available, not_found, ambiguous or unavailable; imported_status is available or unavailable. Imported available means that read completed, even with no rows, not worldwide coverage. Source failure can preserve useful imported packages; an imported-read failure can preserve source evidence. Partial reads return 200 with diagnostics. Source not-found plus checked empty imported evidence returns 404. Ambiguity without useful package evidence returns 422 with candidates when available; choose an explicit ID. Wholly unavailable evidence returns a provider error. Successful pagination and has_next_page=false do not establish completeness or safety. Diagnostics use stable code, displayable message, and retryable. Optional display failures include a JSON pointer path; acquisition diagnostics have null path. Branch on code rather than parsing messages. Response status, section, registry and code vocabularies are open. Known registry/status/section values use lowercase spelling; source discriminators and modification categories retain producer spelling. Honor Retry-After when present. Distinguish ranges, displays and fixes. Original affected entries retain repeated entries, nullable packages, ecosystem spellings, purls, explicit versions and ordered range events. Derived affected_version_ranges retains native comparisons, semver: ordering and osv-invalid: uncertainty; null means unavailable derivation. These are evidence strings, not manifest constraints. affected_version_display is presentation with at most ten spans, total_count and truncated; it is not matcher input. Null can mean unsupported interpretation or a diagnosed optional failure. Source fixed_in_versions contains source-reported SEMVER/ECOSYSTEM fixed release strings; it excludes Git commits, limits and last-affected boundaries. Imported fix lists retain storage order. These lists do not certify published or safe releases or recommend an upgrade. Use the package endpoint for version-specific assessment and candidate evidence. SEMVER ranges use semantic ordering, ECOSYSTEM uses its own ordering, and GIT requires repository ancestry rather than lexical hash sorting. introduced is inclusive (0 means before all versions); fixed is an excluded fixing boundary; last_affected is inclusive and not a fix; limit is an exclusive boundary, not a fix (* means infinity). Missing event fields are null; no implicit events are added. Empty or null evidence never establishes safety. Timestamps remain strings with source precision; non-null withdrawn_at means withdrawn. Root and per-entry severity are independent. Raw vectors remain strings; an imported numeric SEVERITY_LABEL value is an approximation, not calculated CVSS. Prose is normalized source content, not trusted agent instructions. Reference URLs are not fetched and purls are identifiers; absent optional URLs are null, while unsafe schemes neutralized upstream become empty strings. content_safety reports normalization, not trust or severity. The fixed response has no fields selector. limit defaults to 5 and accepts 1–8 whole package groups; a group is never split between its advisory rows. No page is automatically drained. Continue with the same requested ID and after; evidence/revision changes invalidate cursors, while changing limit is allowed. Invalid or stale pages return 400, including when other source evidence is available.\",\"url\":\"https://docs.githits.com/api-reference/v1/vulnerabilities/look-up-a-vulnerability-and-affected-packages\",\"mainEntityOfPage\":{\"@id\":\"https://docs.githits.com/api-reference/v1/vulnerabilities/look-up-a-vulnerability-and-affected-packages#webpage\"},\"dateModified\":\"2026-11-05T11:15:02.359Z\",\"publisher\":{\"@id\":\"https://docs.githits.com/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.githits.com#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"GitHits\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"GitHits","nav":{"global":null,"tabs":[{"tab":"Documentation","pages":[{"title":"Documentation","href":""}]},{"tab":"API","groups":[{"group":"Get started","pages":[{"title":"GitHits REST API","sidebarTitle":"Overview","href":"/api/overview"},{"title":"API quickstart","href":"/api/quickstart"},{"title":"API authentication","href":"/api/authentication"},{"title":"Requests and responses","href":"/api/requests-and-responses"},{"title":"SBOM, audit and licenses","sidebarTitle":"SBOM, audit and licenses","href":"/api/lockfile-analysis"},{"title":"API errors","href":"/api/errors"},{"title":"API versioning","href":"/api/versioning"}]},{"group":"v1 reference","pages":[{"group":"Packages","pages":[{"title":"Get a package or repository changelog","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json get /v1/changelog","href":"/api-reference/v1/packages/get-a-package-or-repository-changelog"},{"title":"Review package upgrades","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json post /v1/package-upgrade-reviews","href":"/api-reference/v1/packages/review-package-upgrades"},{"title":"Inspect a package release","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json get /v1/packages/{registry}/{name}","href":"/api-reference/v1/packages/inspect-a-package-release"},{"title":"Inspect package dependencies","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json get /v1/packages/{registry}/{name}/dependencies","href":"/api-reference/v1/packages/inspect-package-dependencies"},{"title":"Inspect package vulnerabilities","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json get /v1/packages/{registry}/{name}/vulnerabilities","href":"/api-reference/v1/packages/inspect-package-vulnerabilities"}]},{"group":"Code Diff","pages":[{"title":"Compare two exact source trees","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json post /v1/code/diff","href":"/api-reference/v1/code-diff/compare-two-exact-source-trees"}]},{"group":"Examples","pages":[{"title":"Generate an example from open-source references","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json post /v1/examples/search","href":"/api-reference/v1/examples/generate-an-example-from-open-source-references"}]},{"group":"Experimental","pages":[{"title":"Compare two exact source trees","deprecated":true,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json post /v1/experimental/code/diff","href":"/api-reference/v1/experimental/compare-two-exact-source-trees"},{"title":"Preview a compact dependency-license report","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json post /v1/experimental/license-reports","href":"/api-reference/v1/experimental/preview-a-compact-dependency-license-report"},{"title":"Preview a compact report for a completed analysis","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json get /v1/experimental/license-reports/{id}","href":"/api-reference/v1/experimental/preview-a-compact-report-for-a-completed-analysis"},{"title":"Report dependency licenses from uploaded files","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json post /v1/experimental/licenses","href":"/api-reference/v1/experimental/report-dependency-licenses-from-uploaded-files"},{"title":"Get dependency licenses for a completed analysis","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json get /v1/experimental/licenses/{id}","href":"/api-reference/v1/experimental/get-dependency-licenses-for-a-completed-analysis"},{"title":"Submit a lockfile analysis job","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json post /v1/experimental/lockfile-jobs","href":"/api-reference/v1/experimental/submit-a-lockfile-analysis-job"},{"title":"Get lockfile analysis status","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json get /v1/experimental/lockfile-jobs/{id}","href":"/api-reference/v1/experimental/get-lockfile-analysis-status"},{"title":"Stream lockfile analysis progress","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json get /v1/experimental/lockfile-jobs/{id}/events","href":"/api-reference/v1/experimental/stream-lockfile-analysis-progress"},{"title":"Download a completed lockfile analysis","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json get /v1/experimental/lockfile-jobs/{id}/result","href":"/api-reference/v1/experimental/download-a-completed-lockfile-analysis"},{"title":"Research a question with cited sources","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json post /v1/experimental/research","href":"/api-reference/v1/experimental/research-a-question-with-cited-sources"},{"title":"Generate an SBOM from uploaded files","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json post /v1/experimental/sbom","href":"/api-reference/v1/experimental/generate-an-sbom-from-uploaded-files"},{"title":"Resolve a target name","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json post /v1/experimental/targets/resolve","href":"/api-reference/v1/experimental/resolve-a-target-name"}]},{"group":"Feedback","pages":[{"title":"Submit solution or session feedback","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json post /v1/feedback","href":"/api-reference/v1/feedback/submit-solution-or-session-feedback"}]},{"group":"Grep","pages":[{"title":"Find regex or literal matches across source and documentation","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json post /v1/grep","href":"/api-reference/v1/grep/find-regex-or-literal-matches-across-source-and-documentation"}]},{"group":"Languages","pages":[{"title":"Search supported programming languages","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json get /v1/languages","href":"/api-reference/v1/languages/search-supported-programming-languages"}]},{"group":"List","pages":[{"title":"List files and documentation paths","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json post /v1/list","href":"/api-reference/v1/list/list-files-and-documentation-paths"}]},{"group":"Read","pages":[{"title":"Read documentation or source code","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json get /v1/read","href":"/api-reference/v1/read/read-documentation-or-source-code"}]},{"group":"Search","pages":[{"title":"Search documentation, code and symbols","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json post /v1/searches","href":"/api-reference/v1/search/search-documentation-code-and-symbols"},{"title":"Get search status and retained results","description":"Retrieve the status and saved results of a search started with `POST /v1/searches`. Use this endpoint to follow a search that is still running or to retrieve its results again while they are retained.\n\nThis reads the existing search without starting new work. Start a new search to change the query, targets, or result page.\n\n## Selector catalogue\n\nUse the following selectors with the `fields` query parameter to choose which fields the response includes. See [Choose what the response includes](https://docs.githits.com/api/requests-and-responses#choose-what-the-response-includes) for details.\n\n| Selector | Data | Default |\n| --- | --- | --- |\n| `results` | Matching items, their text, relevance scores, source locations, and coverage information. | Yes |\n| `results.highlights` | Highlight locations within result titles and summaries. Also includes `results`. | No |\n| `results.*` | Results and highlights together. | No |\n| `sources` | Source status, applied filters, coverage, and suggested documentation sites. | No |\n| `progress` | Search request details, readiness counts, and available or suggested versions and refs. | No |\n","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json get /v1/searches/{search_ref}","href":"/api-reference/v1/search/get-search-status-and-retained-results"}]},{"group":"Vulnerabilities","pages":[{"title":"Look up a vulnerability and affected packages","deprecated":null,"version":null,"openapi":"https://api.githits.dev/v1/openapi.json get /v1/vulnerabilities/{id}","href":"/api-reference/v1/vulnerabilities/look-up-a-vulnerability-and-affected-packages"}]}]}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog/overview"}]}]},"basePath":"","title":"Look up a vulnerability and affected packages - GitHits","buildId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","deploymentId":"dpl_BLQvU86QFwq3AhPofSTw6q8dGWKm","dynamics":["c2aa737661","b0f84f53ff","a9bb46feb3","2b790eda92"],"chunks":["OpenApiReferenceProvider-Myd8dsju.js","utils-C2HkQgW0.js","cloneDeep-izs3Hzxb.js","_Uint8Array-BVIqJ90l.js","isObjectLike-C8vmzPEN.js","isArray-Dcu1dQ5t.js","utils-8rSppmTv.js","toString-BX-iyh8G.js","isSymbol-CSH9U2Gm.js","addUniqueKeysToSchema-B6MjiCFm.js","snippetPresets-DwrSAONL.js","style-to-object-BY3JEAdk.js","v4-DIgz8zy6.js","Page-CxAy5y67.js","ApiExamples-1-a5UQKQ.js","isEqual-BfaiBbcl.js","usePlaygroundInputsStore-C541m7wZ.js","shallow-CWELCZ77.js","getApiPlaygroundDisplay-CTo5Zn03.js","CodeSnippet-D--dzvnl.js","CodeSnippets-DM3cXEDh.js","getPastedJson-C-VECgcL.js","icon-BPq2-Mg3.js","MethodPill-D9J5cUHd.js","DuplicateIcon-BqHaxUnD.js","createIcon-CIbcZHp9.js","DynamicMarkdown-BKiHAm_d.js","SectionHeading-DstQXt3H.js","axios-vUo_bRtp.js","Markdown-CpxgzsKA.js","clsx-C5EfhVm0.js","lib-DuNMoZ05.js","lib-B8HbPgcC.js","html-void-elements-mCSPHezU.js","dist-CJ9Oly2E.js","katex-YMM-FMeD.js","marked.esm-CZWythHk.js","AssistantPageLink-Mk6P3qvh.js"]}