{"openapi":"3.1.0","info":{"title":"Sonatype Guide API","description":"REST API for searching component and security vulnerability data."},"servers":[{"url":"https://api.guide.sonatype.com","description":"API Server"}],"security":[{"bearer-jwt":[]}],"tags":[{"name":"Usage","description":"Credit usage and billing period APIs"},{"name":"Vulnerabilities","description":"Vulnerability search and filtering API"},{"name":"Current User Tokens","description":"Personal Access Token management APIs"},{"name":"Components","description":"Component search and filtering API"},{"name":"OSS Index Compatibility","description":"Legacy OSSI API providing backward compatibility. Allows existing OSSI users to continue using their OSSI API tokens without creating a new Sonatype Guide account. Authentication requires HTTP Basic Auth with OSSI username and API token."},{"name":"Billing","description":"Billing and subscription management API"},{"name":"Current User Organization","description":"Current user organization management APIs"},{"name":"Recommendations","description":"Version upgrade recommendation API"}],"paths":{"/users/me/organization":{"get":{"tags":["Current User Organization"],"summary":"Get current user's organization","description":"Retrieves organization information without billing/usage details","operationId":"getCurrentUserOrganization","responses":{"200":{"description":"Organization found","content":{"application/json":{}}},"401":{"description":"Invalid JWT token","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OrganizationDTO"}}}},"404":{"description":"Organization not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OrganizationDTO"}}}}},"security":[{"bearer-jwt":[]}]},"put":{"tags":["Current User Organization"],"summary":"Update current user's organization","description":"Updates the organization's name, logo URL and URL","operationId":"updateOrganization","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/UpdateOrganizationRequest"}}},"required":true},"responses":{"200":{"description":"Organization updated successfully","content":{"application/json":{}}},"401":{"description":"Invalid JWT token","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OrganizationDTO"}}}},"404":{"description":"Organization not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OrganizationDTO"}}}}},"security":[{"bearer-jwt":[]}]}},"/users/me/tokens":{"get":{"tags":["Current User Tokens"],"summary":"List all Personal Access Tokens","description":"Retrieves all tokens for the authenticated user, including active and revoked tokens. Plaintext token values are not included.","operationId":"listTokens","responses":{"200":{"description":"Tokens retrieved successfully","content":{"application/json":{}}},"401":{"description":"Invalid JWT token","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/UserTokenDTO"}}}}}},"security":[{"bearer-jwt":[]}]},"post":{"tags":["Current User Tokens"],"summary":"Create a new Personal Access Token","description":"Creates a new token for API authentication. The plaintext token is ONLY returned in this response and cannot be retrieved again.","operationId":"createToken","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CreateTokenRequest"}}},"required":true},"responses":{"200":{"description":"Token created successfully","content":{"application/json":{}}},"400":{"description":"Invalid request (e.g., empty name)","content":{"*/*":{"schema":{"$ref":"#/components/schemas/UserTokenWithPlaintextDTO"}}}},"401":{"description":"Invalid JWT token","content":{"*/*":{"schema":{"$ref":"#/components/schemas/UserTokenWithPlaintextDTO"}}}}},"security":[{"bearer-jwt":[]}]}},"/users/me/organization/members/invite":{"post":{"tags":["Current User Organization"],"summary":"Invite users to current user's an organization","description":"Sends an invitation to an email list to join the organization","operationId":"inviteUsers","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/InviteUsersRequest"}}},"required":true},"responses":{"200":{"description":"Invitations sent successfully","content":{"application/json":{}}},"400":{"description":"Invalid request or user already invited","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationMembersResponse"}}}}},"401":{"description":"Invalid JWT token","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationMembersResponse"}}}}},"404":{"description":"Organization not found or user is not owner","content":{"*/*":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/OrganizationMembersResponse"}}}}}},"security":[{"bearer-jwt":[]}]}},"/users/me/organization/invitations/{invitationToken}/accept":{"post":{"tags":["Current User Organization"],"summary":"Accept organization invitation","description":"Accept an invitation to join an organization using the invitation token from the email link","operationId":"acceptInvitation","parameters":[{"name":"invitationToken","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Invitation accepted successfully"},"401":{"description":"Invalid JWT token"},"400":{"description":"Invalid or expired invitation token, email mismatch, or user already in organization"}},"security":[{"bearer-jwt":[]}]}},"/recommendations":{"post":{"tags":["Recommendations"],"summary":"Get version upgrade recommendations","description":"Retrieves version upgrade recommendations for a component specified by PURL. Analyzes security vulnerabilities, stability metrics, and policy compliance to suggest optimal upgrade paths. Only policy-compliant versions are returned. If policy evaluation fails, the response is BLOCKED_BY_POLICY (fail-closed).","operationId":"getRecommendations","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/RecommendationRequest"}}},"required":true},"responses":{"200":{"description":"Success. Returns fromVersion and toVersions array (empty if component is already optimal or all candidates violate policy)","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RecommendationResponse"}}}},"404":{"description":"Component not found or no recommendations available","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RecommendationResponse"}}}},"400":{"description":"Invalid request - malformed PURL or missing required parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/RecommendationResponse"}}}}}}},"/components/latest-version":{"post":{"tags":["Components"],"summary":"Get latest version of a component","description":"Retrieves the latest version of a component specified by PURL. The PURL should not include a version, or the version will be ignored.","operationId":"getLatestVersion","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/LatestVersionRequest"}}},"required":true},"responses":{"200":{"description":"Latest version found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComponentDetailDocument"}}}},"404":{"description":"Component not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComponentDetailDocument"}}}},"400":{"description":"Invalid request - PURL is required","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComponentDetailDocument"}}}}}}},"/api/v3/component-report":{"post":{"tags":["OSS Index Compatibility"],"summary":"Get component reports for multiple PURLs","description":"Retrieves component reports for multiple Package URLs (PURLs) in a single request.\n\nAuthentication:\n- HTTP Basic Authentication required\n- Authorization header: Basic <base64(username:apiToken)>\n\nRequest Body:\n- Array of PURLs (max 128 components)\n- Each PURL must include a version\n\nResponse Headers:\n- X-Batch-Size: Total number of components requested\n- X-Batch-Found: Number of components found\n- X-Credits-Used: Credits consumed for this request\n- X-Credits-Remaining: Available credit balance\n- X-Credits-Warning: Alert when approaching credit limit (JSON)\n\nNote: Credits are only charged for components found. Requests for the same\ncomponents on the same day are not charged multiple times.\n","operationId":"getComponentReports","parameters":[{"name":"User-Agent","in":"header","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/vnd.ossindex.component-report-request.v1+json":{"schema":{"$ref":"#/components/schemas/PurlRequest_Post"}},"application/json":{"schema":{"$ref":"#/components/schemas/PurlRequest_Post"}}},"required":true},"responses":{"200":{"description":"Component reports retrieved successfully","content":{"application/vnd.ossindex.component-report.v1+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComponentReport_Post"}}}}},"400":{"description":"Invalid request - missing coordinates or invalid PURL format","content":{"application/vnd.ossindex.component-report.v1+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComponentReport_Post"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComponentReport_Post"}}}}},"401":{"description":"Unauthorized - invalid credentials","content":{"application/vnd.ossindex.component-report.v1+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComponentReport_Post"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComponentReport_Post"}}}}},"402":{"description":"Payment required - insufficient credits","content":{"application/vnd.ossindex.component-report.v1+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComponentReport_Post"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComponentReport_Post"}}}}},"500":{"description":"Internal server error - OSSI service unavailable or other system error","content":{"application/vnd.ossindex.component-report.v1+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComponentReport_Post"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComponentReport_Post"}}}}}},"security":[{"ossi-basic-auth":[]}]}},"/api/v3/authorized/component-report":{"post":{"tags":["OSS Index Compatibility"],"summary":"Get component reports for multiple PURLs","description":"Retrieves component reports for multiple Package URLs (PURLs) in a single request.\n\nAuthentication:\n- HTTP Basic Authentication required\n- Authorization header: Basic <base64(username:apiToken)>\n\nRequest Body:\n- Array of PURLs (max 128 components)\n- Each PURL must include a version\n\nResponse Headers:\n- X-Batch-Size: Total number of components requested\n- X-Batch-Found: Number of components found\n- X-Credits-Used: Credits consumed for this request\n- X-Credits-Remaining: Available credit balance\n- X-Credits-Warning: Alert when approaching credit limit (JSON)\n\nNote: Credits are only charged for components found. Requests for the same\ncomponents on the same day are not charged multiple times.\n","operationId":"getComponentReports_1","parameters":[{"name":"User-Agent","in":"header","required":false,"schema":{"type":"string"}}],"requestBody":{"content":{"application/vnd.ossindex.component-report-request.v1+json":{"schema":{"$ref":"#/components/schemas/PurlRequest_Post"}},"application/json":{"schema":{"$ref":"#/components/schemas/PurlRequest_Post"}}},"required":true},"responses":{"200":{"description":"Component reports retrieved successfully","content":{"application/vnd.ossindex.component-report.v1+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComponentReport_Post"}}}}},"400":{"description":"Invalid request - missing coordinates or invalid PURL format","content":{"application/vnd.ossindex.component-report.v1+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComponentReport_Post"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComponentReport_Post"}}}}},"401":{"description":"Unauthorized - invalid credentials","content":{"application/vnd.ossindex.component-report.v1+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComponentReport_Post"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComponentReport_Post"}}}}},"402":{"description":"Payment required - insufficient credits","content":{"application/vnd.ossindex.component-report.v1+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComponentReport_Post"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComponentReport_Post"}}}}},"500":{"description":"Internal server error - OSSI service unavailable or other system error","content":{"application/vnd.ossindex.component-report.v1+json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComponentReport_Post"}}},"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/ComponentReport_Post"}}}}}},"security":[{"ossi-basic-auth":[]}]}},"/vulnerabilities/{id}":{"get":{"tags":["Vulnerabilities"],"summary":"Get vulnerability by ID","description":"Retrieves detailed information about a specific vulnerability including explanation, detection methods, recommendations, and references. Note: Large arrays (affectedComponentVersions, vulnerableMethods) are excluded for performance - use /{id}/components endpoint for paginated affected components.","operationId":"getVulnerabilityByRefId","parameters":[{"name":"id","in":"path","description":"Vulnerability ID (e.g., CVE-2021-44228, GHSA-xxxx-yyyy-zzzz)","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Vulnerability found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VulnerabilityDetailDocument"}}}},"404":{"description":"Vulnerability not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/VulnerabilityDetailDocument"}}}}}}},"/vulnerabilities/{id}/components":{"get":{"tags":["Vulnerabilities"],"summary":"Get affected components for a vulnerability","description":"Retrieves paginated list of affected component versions for a specific vulnerability with optional text filtering and sorting. Returns parsed component structures with ecosystem, namespace, packageName, version, and fullPackageName fields.","operationId":"getVulnerabilityAffectedComponents","parameters":[{"name":"id","in":"path","description":"Vulnerability ID (e.g., CVE-2021-44228, GHSA-xxxx-yyyy-zzzz)","required":true,"schema":{"type":"string"}},{"name":"query","in":"query","description":"Text search query (filters ecosystem, namespace, package, version fields)","required":false,"schema":{"type":"string"}},{"name":"offset","in":"query","description":"Pagination offset (default: 0)","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"limit","in":"query","description":"Pagination limit (default: 50)","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"sortField","in":"query","description":"Field to sort by: ecosystem, package (fullPackageName), version (default: package)","required":false,"schema":{"type":"string"}},{"name":"sortOrder","in":"query","description":"Sort order: asc or desc (default: asc)","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Components retrieved successfully","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiSearchResponse"}}}},"404":{"description":"Vulnerability not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiSearchResponseAffectedComponentVersion"}}}}}}},"/users/me/tokens/{tokenId}":{"get":{"tags":["Current User Tokens"],"summary":"Get a Personal Access Token by ID","description":"Retrieves a specific token for the authenticated user by ID. Plaintext token value is not included.","operationId":"getTokenById","parameters":[{"name":"tokenId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"200":{"description":"Token retrieved successfully","content":{"application/json":{}}},"401":{"description":"Invalid JWT token","content":{"*/*":{"schema":{"$ref":"#/components/schemas/UserTokenDTO"}}}},"404":{"description":"Token not found or does not belong to user","content":{"*/*":{"schema":{"$ref":"#/components/schemas/UserTokenDTO"}}}}},"security":[{"bearer-jwt":[]}]},"delete":{"tags":["Current User Tokens"],"summary":"Revoke a Personal Access Token","description":"Revokes a token, preventing it from being used for authentication.","operationId":"revokeToken","parameters":[{"name":"tokenId","in":"path","required":true,"schema":{"type":"integer","format":"int64"}}],"responses":{"204":{"description":"Token revoked successfully"},"401":{"description":"Invalid JWT token"},"404":{"description":"Token not found or already revoked, or token does not belong to user"}},"security":[{"bearer-jwt":[]}]}},"/users/me/organization/onboarding-banner":{"get":{"tags":["Current User Organization"],"summary":"Get onboarding banner status","description":"Retrieves the onboarding banner visibility status based on organization plan, member count, and dismiss state. Returns showBanner=false when user has no organization.","operationId":"getOnboardingBannerStatus","responses":{"200":{"description":"Banner status retrieved successfully","content":{"application/json":{}}},"401":{"description":"Invalid JWT token","content":{"*/*":{"schema":{"$ref":"#/components/schemas/OnboardingBannerStatusDTO"}}}}},"security":[{"bearer-jwt":[]}]},"delete":{"tags":["Current User Organization"],"summary":"Dismiss onboarding banner","description":"Marks the onboarding banner as dismissed for the organization. The banner will not reappear for any member of the organization across sessions or devices.","operationId":"dismissOnboardingBanner","responses":{"204":{"description":"Banner dismissed successfully"},"401":{"description":"Invalid JWT token"},"404":{"description":"Organization not found"}},"security":[{"bearer-jwt":[]}]}},"/users/me/organization/members":{"get":{"tags":["Current User Organization"],"summary":"Retrieve current user's organization members and invitees","description":"Retrieves members and invitees of the authenticated user's organization","operationId":"retrieveOrganizationMembersAsCsv","responses":{"200":{"description":"Organization members retrieved successfully","content":{"text/csv":{}}},"401":{"description":"Invalid JWT token","content":{"text/csv":{"schema":{"type":"string","format":"byte"}}}}},"security":[{"bearer-jwt":[]}]},"delete":{"tags":["Current User Organization"],"summary":"Bulk remove members or invitations from organization","description":"Removes multiple members or pending invitations from the authenticated user's organization. All removals happen in a single transaction - if any removal fails, all are rolled back.","operationId":"bulkRemoveMembersOrInvitations","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BulkRemoveMembersRequest"}}},"required":true},"responses":{"204":{"description":"All members and invitations removed successfully"},"400":{"description":"Invalid request or email list is empty"},"401":{"description":"Invalid JWT token"},"404":{"description":"Organization not found, user is not owner, or one or more members/invitations not found"}},"security":[{"bearer-jwt":[]}]}},"/usage":{"get":{"tags":["Usage"],"summary":"Get usage information","description":"Retrieves current credit usage and period information","operationId":"getUsage","responses":{"200":{"description":"Usage info retrieved","content":{"*/*":{"schema":{"$ref":"#/components/schemas/UsageDTO"}}}},"404":{"description":"Subscription not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/UsageDTO"}}}}},"security":[{"bearer-jwt":[]}]}},"/usage/ossi-history":{"get":{"tags":["Usage"],"summary":"Get historical OSSI usage","description":"Retrieves pre-migration OSSI API usage data aggregated by month. Shows estimated Guide credits based on historical unique component queries. Only available for OSSI-origin users.","operationId":"getOssiUsageHistory","responses":{"200":{"description":"OSSI usage history retrieved successfully","content":{"application/json":{"example":{"months":[{"month":"2025-12","totalComponents":15234,"estimatedCredits":1523.4}],"summary":{"totalCredits":18280.8,"monthlyAverage":1523.4,"dataRange":{"start":"2025-01","end":"2025-12"}},"isEstimate":true}}}},"404":{"description":"User not found or not an OSSI-origin user","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OssiUsageHistoryDTO"}}}}},"security":[{"bearer-jwt":[]}]}},"/usage/cumulative":{"get":{"tags":["Usage"],"summary":"Get cumulative credit usage for a billing period","description":"Retrieves daily credit usage with cumulative totals and statistics for the specified billing period. Includes total credits used, daily average, peak day, and credit limit. Supports both FREE and PAID users.","operationId":"getCumulativeUsage","parameters":[{"name":"startDate","in":"query","description":"Start date (YYYY-MM-DD)","required":true,"schema":{"type":"string","format":"date"},"example":"2025-10-10"},{"name":"endDate","in":"query","description":"End date (YYYY-MM-DD)","required":true,"schema":{"type":"string","format":"date"},"example":"2025-11-09"}],"responses":{"200":{"description":"Credit usage retrieved successfully","content":{"application/json":{"example":{"billingPeriod":{"startDate":"2025-10-10","endDate":"2025-11-09"},"dailyUsage":[{"date":"2025-10-10","dailyUsage":178,"cumulativeUsage":178},{"date":"2025-10-11","dailyUsage":203,"cumulativeUsage":381}],"totalCreditsUsed":6004,"dailyAverage":194,"peakDay":248,"creditLimit":5000}}}},"400":{"description":"Invalid date format","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CumulativeCreditUsage"}}}},"404":{"description":"Subscription not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CumulativeCreditUsage"}}}}},"security":[{"bearer-jwt":[]}]}},"/usage/credit-periods":{"get":{"tags":["Usage"],"summary":"Get credit periods","description":"Retrieves all monthly credit periods from subscription start","operationId":"getCreditPeriods","responses":{"200":{"description":"Credit periods retrieved","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PeriodDTO"}}}}},"404":{"description":"Subscription not found","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PeriodDTO"}}}}}},"security":[{"bearer-jwt":[]}]}},"/components/vulnerabilities":{"get":{"tags":["Components"],"summary":"Get vulnerabilities for a component by coordinates (query parameters)","description":"Retrieves all vulnerabilities affecting a specific component using explicit coordinate parameters (format, namespace, name, version). Supports comprehensive filtering by severity, CVSS score, CWE, and more. Namespace is optional for some formats","operationId":"getComponentVulnerabilitiesByPurlQueryParam","parameters":[{"name":"purl","in":"query","description":"URL-encoded PURL (e.g., pkg%3Amaven%2F...)","required":true,"schema":{"type":"string"}},{"name":"offset","in":"query","description":"Pagination offset (default: 0)","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"limit","in":"query","description":"Pagination limit (default: 20)","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"sortField","in":"query","description":"Field to sort by (default: cvssSeverity)","required":false,"schema":{"type":"string"}},{"name":"sortOrder","in":"query","description":"Sort order: asc or desc (default: desc)","required":false,"schema":{"type":"string"}},{"name":"severities","in":"query","description":"Severity filter (e.g., critical, high) - repeatable","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"minCvss","in":"query","description":"Minimum CVSS score (0.0 to 10.0)","required":false,"schema":{"type":"number","format":"double"}},{"name":"maxCvss","in":"query","description":"Maximum CVSS score (0.0 to 10.0)","required":false,"schema":{"type":"number","format":"double"}},{"name":"minEpss","in":"query","description":"Minimum EPSS score (0.0 to 1.0)","required":false,"schema":{"type":"number","format":"double"}},{"name":"maxEpss","in":"query","description":"Maximum EPSS score (0.0 to 1.0)","required":false,"schema":{"type":"number","format":"double"}},{"name":"hasMalware","in":"query","description":"Malware flag filter (true=has malware, false=no malware)","required":false,"schema":{"type":"boolean"}},{"name":"patchAvailable","in":"query","description":"Patch availability filter (true=available, false=not available)","required":false,"schema":{"type":"boolean"}},{"name":"policyCompliant","in":"query","description":"Policy compliance filter (true=compliant, false=non-compliant)","required":false,"schema":{"type":"boolean"}},{"name":"cwes","in":"query","description":"CWE filter (e.g., CWE-79, CWE-89) - repeatable","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"exploitationKnown","in":"query","description":"KEV filter - known exploited vulnerability","required":false,"schema":{"type":"boolean"}},{"name":"publishedWindow","in":"query","description":"Time window for published date (e.g., 30d, 1y)","required":false,"schema":{"type":"string"}},{"name":"format","in":"query","description":"Package format (e.g., maven, npm, pypi)","required":true,"schema":{"type":"string"}},{"name":"namespace","in":"query","description":"Package namespace/groupId (optional)","required":false,"schema":{"type":"string"}},{"name":"name","in":"query","description":"Package name","required":true,"schema":{"type":"string"}},{"name":"version","in":"query","description":"Package version","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Vulnerabilities found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiSearchResponse"}}}},"404":{"description":"Component not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiSearchResponseVulnerabilityDocument"}}}},"400":{"description":"Invalid parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiSearchResponseVulnerabilityDocument"}}}}}}},"/components/versions":{"get":{"tags":["Components"],"summary":"Get all component versions by coordinates (query parameters)","description":"Retrieves all versions of a component using explicit coordinate parameters (format, namespace, name, version). Returns all versions EXCEPT the version specified. Namespace is optional for some formats","operationId":"getComponentVersionsByPurlQueryParam","parameters":[{"name":"purl","in":"query","description":"URL-encoded PURL (e.g., pkg%3Amaven%2F...)","required":true,"schema":{"type":"string"}},{"name":"offset","in":"query","description":"Pagination offset (default: 0)","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"limit","in":"query","description":"Pagination limit (default: 20)","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"sortField","in":"query","description":"Field to sort by (default: version)","required":false,"schema":{"type":"string"}},{"name":"sortOrder","in":"query","description":"Sort order: asc or desc (default: desc)","required":false,"schema":{"type":"string"}},{"name":"severities","in":"query","description":"CVSS severity filter (e.g., critical, high) - repeatable","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"minCvss","in":"query","description":"Minimum CVSS score (0.0 to 10.0)","required":false,"schema":{"type":"number","format":"double"}},{"name":"maxCvss","in":"query","description":"Maximum CVSS score (0.0 to 10.0)","required":false,"schema":{"type":"number","format":"double"}},{"name":"minVersionScore","in":"query","description":"Minimum version score (0 to 100)","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"maxVersionScore","in":"query","description":"Maximum version score (0 to 100)","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"versionQuery","in":"query","description":"Filter versions by version prefix (e.g., '2.10' matches '2.10.0', '2.10.1', '2.10-RC1')","required":false,"schema":{"type":"string"}},{"name":"publishedWindow","in":"query","description":"Time window for published date (e.g., 7d, 30d, 60d, 90d, 6m, 1y, 2y)","required":false,"schema":{"type":"string"}},{"name":"hasMalware","in":"query","description":"Malware filter (true=has malware, false=no malware)","required":false,"schema":{"type":"boolean"}},{"name":"isStable","in":"query","description":"Stable version filter (true=stable only, false=pre-release only, null=all)","required":false,"schema":{"type":"boolean"}},{"name":"format","in":"query","description":"Package format (e.g., maven, npm, pypi)","required":true,"schema":{"type":"string"}},{"name":"namespace","in":"query","description":"Package namespace/groupId (optional)","required":false,"schema":{"type":"string"}},{"name":"name","in":"query","description":"Package name","required":true,"schema":{"type":"string"}},{"name":"version","in":"query","description":"Package version to exclude from results","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Component versions found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiSearchResponse"}}}},"400":{"description":"Invalid parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiSearchResponseComponentDetailDocument"}}}}}}},"/components/detail":{"get":{"tags":["Components"],"summary":"Get component detail by coordinates (query parameters)","description":"Retrieves detailed information about a specific component using explicit coordinate parameters (format, namespace, name, version). Namespace is optional for some formats","operationId":"getComponentDetailByPurlQueryParam","parameters":[{"name":"purl","in":"query","description":"URL-encoded PURL (e.g., pkg%3Amaven%2F...)","required":true,"schema":{"type":"string"}},{"name":"format","in":"query","description":"Package format (e.g., maven, npm, pypi)","required":true,"schema":{"type":"string"}},{"name":"namespace","in":"query","description":"Package namespace/groupId (optional)","required":false,"schema":{"type":"string"}},{"name":"name","in":"query","description":"Package name","required":true,"schema":{"type":"string"}},{"name":"version","in":"query","description":"Package version","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Component found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComponentDetailDocument"}}}},"404":{"description":"Component not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComponentDetailDocument"}}}},"400":{"description":"Invalid parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ComponentDetailDocument"}}}}}}},"/components/dependencies":{"get":{"tags":["Components"],"summary":"Get dependencies for a component by coordinates (query parameters)","description":"Retrieves all direct dependencies of a specific component using explicit coordinate parameters (format, namespace, name, version). Returns full component details for each dependency with comprehensive filtering by format, category, CVSS severity, and license. Namespace is optional for some formats","operationId":"getComponentDependenciesByPurlQueryParam","parameters":[{"name":"purl","in":"query","description":"URL-encoded PURL (e.g., pkg%3Amaven%2F...)","required":true,"schema":{"type":"string"}},{"name":"query","in":"query","description":"Text search query (searches name, namespace, refid)","required":false,"schema":{"type":"string"}},{"name":"offset","in":"query","description":"Pagination offset (default: 0)","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"limit","in":"query","description":"Pagination limit (default: 20)","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"sortField","in":"query","description":"Field to sort by (default: name)","required":false,"schema":{"type":"string"}},{"name":"sortOrder","in":"query","description":"Sort order: asc or desc (default: asc)","required":false,"schema":{"type":"string"}},{"name":"formats","in":"query","description":"Format filter (e.g., maven, npm, pypi) - repeatable","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"categories","in":"query","description":"Category filter (e.g., Logging, Framework) - repeatable","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"severities","in":"query","description":"CVSS severity filter (e.g., critical, high) - repeatable","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"minCvss","in":"query","description":"Minimum CVSS score (0.0 to 10.0)","required":false,"schema":{"type":"number","format":"double"}},{"name":"maxCvss","in":"query","description":"Maximum CVSS score (0.0 to 10.0)","required":false,"schema":{"type":"number","format":"double"}},{"name":"minVersionScore","in":"query","description":"Minimum version score (0 to 100)","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"maxVersionScore","in":"query","description":"Maximum version score (0 to 100)","required":false,"schema":{"type":"integer","format":"int32"}},{"name":"licenseFamilies","in":"query","description":"Licence family filter (e.g., Banned, Copyleft) - repeatable","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"licenses","in":"query","description":"Licence name filter (e.g., MIT, Apache-2.0, GPL-3.0+) - repeatable","required":false,"schema":{"type":"array","items":{"type":"string"}}},{"name":"latestStable","in":"query","description":"Filter by latest stable versions: 'true' for stable only, 'false' for non-stable only, 'all' for no filter","required":false,"schema":{"type":"string"}},{"name":"format","in":"query","description":"Package format (e.g., maven, npm, pypi)","required":true,"schema":{"type":"string"}},{"name":"namespace","in":"query","description":"Package namespace/groupId (optional)","required":false,"schema":{"type":"string"}},{"name":"name","in":"query","description":"Package name","required":true,"schema":{"type":"string"}},{"name":"version","in":"query","description":"Package version","required":true,"schema":{"type":"string"}}],"responses":{"200":{"description":"Dependencies found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiSearchResponse"}}}},"404":{"description":"Component not found","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiSearchResponseComponentDocument"}}}},"400":{"description":"Invalid parameters","content":{"*/*":{"schema":{"$ref":"#/components/schemas/ApiSearchResponseComponentDocument"}}}}}}},"/billing":{"get":{"tags":["Billing"],"summary":"Get billing information","description":"Retrieves billing details including cost, period, and payment method","operationId":"getBilling","responses":{"200":{"description":"Billing info retrieved","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingDTO"}}}},"403":{"description":"User is not an organization owner","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingDTO"}}}},"404":{"description":"Subscription not found","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingDTO"}}}}}}},"/billing/plans":{"get":{"tags":["Billing"],"summary":"Get all available plans","description":"Retrieves all active subscription plans with dynamic Chargebee pricing. Supports both authenticated and unauthenticated requests. When authenticated, the user's current plan is marked.","operationId":"getPlans","responses":{"200":{"description":"Plans retrieved","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/PlanDTO"}}}}}}}},"/billing/invoices":{"get":{"tags":["Billing"],"summary":"Get user invoice history","description":"Retrieves the complete invoice history for the current user. Returns a list of all invoices with details including invoice ID, date, description, amount, payment status, PDF link, and credit usage for each billing period.","operationId":"getUserInvoiceHistory","responses":{"200":{"description":"Invoice history retrieved successfully","content":{"application/json":{"schema":{"type":"string","example":{"invoices":[{"id":"inv_2024_001","date":"2024-10-31","description":"Teams Plan (Annual)","amount":1200.0,"status":"paid","pdfUrl":"/invoices/inv_2024_001.pdf","creditsUsed":3000,"creditsTotal":5000}]}}}}},"403":{"description":"User is not an organization owner and cannot access billing information","content":{"application/json":{"schema":{"type":"array","items":{"$ref":"#/components/schemas/Invoice"}}}}}}}},"/billing/invoices/{invoiceId}/pdf":{"get":{"tags":["Billing"],"summary":"Download invoice PDF","description":"Redirects to a temporary Chargebee download URL for the invoice PDF. The URL is short-lived and should be consumed immediately.","operationId":"getInvoicePdf","parameters":[{"name":"invoiceId","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"302":{"description":"Redirect to PDF download URL"},"403":{"description":"User is not an organization owner"},"404":{"description":"Invoice not found or PDF unavailable"}}}},"/api/v3/version":{"get":{"tags":["OSS Index Compatibility"],"summary":"Get API version","description":"Returns the API version information. This endpoint is public and does not require authentication.","operationId":"getVersion","responses":{"200":{"description":"OK","content":{"application/json":{"schema":{"type":"string"}}}}},"deprecated":true,"security":[{"ossi-basic-auth":[]}]}},"/api/v3/authorized/component-report/**":{"get":{"tags":["OSS Index Compatibility"],"summary":"Get component report by PURL","description":"Retrieves a component report for a single Package URL (PURL).\n\nAuthentication:\n- HTTP Basic Authentication required\n- Authorization header: Basic <base64(username:apiToken)>\n\nResponse Headers:\n- X-Credits-Used: Credits consumed for this request\n- X-Credits-Remaining: Available credit balance\n- X-Credits-Warning: Alert when approaching credit limit (JSON)\n\nNote: Credits are only charged when a component is found. Requests for the same\ncomponent on the same day are not charged multiple times.\n","operationId":"getComponentReport","parameters":[{"name":"User-Agent","in":"header","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Component report retrieved successfully","content":{"application/vnd.ossindex.component-report.v1+json":{"schema":{"$ref":"#/components/schemas/ComponentReport_Get"}}}},"400":{"description":"Invalid request - missing coordinates or invalid PURL format","content":{"application/vnd.ossindex.component-report.v1+json":{"schema":{"$ref":"#/components/schemas/ComponentReport_Get"}},"application/json":{"schema":{"$ref":"#/components/schemas/ComponentReport_Get"}}}},"401":{"description":"Unauthorized - invalid credentials","content":{"application/vnd.ossindex.component-report.v1+json":{"schema":{"$ref":"#/components/schemas/ComponentReport_Get"}},"application/json":{"schema":{"$ref":"#/components/schemas/ComponentReport_Get"}}}},"402":{"description":"Payment required - insufficient credits","content":{"application/vnd.ossindex.component-report.v1+json":{"schema":{"$ref":"#/components/schemas/ComponentReport_Get"}},"application/json":{"schema":{"$ref":"#/components/schemas/ComponentReport_Get"}}}},"500":{"description":"Internal server error - OSSI service unavailable or other system error","content":{"application/vnd.ossindex.component-report.v1+json":{"schema":{"$ref":"#/components/schemas/ComponentReport_Get"}},"application/json":{"schema":{"$ref":"#/components/schemas/ComponentReport_Get"}}}}},"security":[{"ossi-basic-auth":[]}]}},"/api/v3/component-report/**":{"get":{"tags":["OSS Index Compatibility"],"summary":"Get component report by PURL","description":"Retrieves a component report for a single Package URL (PURL).\n\nAuthentication:\n- HTTP Basic Authentication required\n- Authorization header: Basic <base64(username:apiToken)>\n\nResponse Headers:\n- X-Credits-Used: Credits consumed for this request\n- X-Credits-Remaining: Available credit balance\n- X-Credits-Warning: Alert when approaching credit limit (JSON)\n\nNote: Credits are only charged when a component is found. Requests for the same\ncomponent on the same day are not charged multiple times.\n","operationId":"getComponentReport_1","parameters":[{"name":"User-Agent","in":"header","required":false,"schema":{"type":"string"}}],"responses":{"200":{"description":"Component report retrieved successfully","content":{"application/vnd.ossindex.component-report.v1+json":{"schema":{"$ref":"#/components/schemas/ComponentReport_Get"}}}},"400":{"description":"Invalid request - missing coordinates or invalid PURL format","content":{"application/vnd.ossindex.component-report.v1+json":{"schema":{"$ref":"#/components/schemas/ComponentReport_Get"}},"application/json":{"schema":{"$ref":"#/components/schemas/ComponentReport_Get"}}}},"401":{"description":"Unauthorized - invalid credentials","content":{"application/vnd.ossindex.component-report.v1+json":{"schema":{"$ref":"#/components/schemas/ComponentReport_Get"}},"application/json":{"schema":{"$ref":"#/components/schemas/ComponentReport_Get"}}}},"402":{"description":"Payment required - insufficient credits","content":{"application/vnd.ossindex.component-report.v1+json":{"schema":{"$ref":"#/components/schemas/ComponentReport_Get"}},"application/json":{"schema":{"$ref":"#/components/schemas/ComponentReport_Get"}}}},"500":{"description":"Internal server error - OSSI service unavailable or other system error","content":{"application/vnd.ossindex.component-report.v1+json":{"schema":{"$ref":"#/components/schemas/ComponentReport_Get"}},"application/json":{"schema":{"$ref":"#/components/schemas/ComponentReport_Get"}}}}},"security":[{"ossi-basic-auth":[]}]}},"/users/me/organization/membership":{"delete":{"tags":["Current User Organization"],"summary":"Leave organization","description":"Allows a member to leave their organization","operationId":"leaveOrganization","responses":{"204":{"description":"Successfully left"},"400":{"description":"Owner, billing subscriber, or enterprise org"},"401":{"description":"Invalid JWT token"},"404":{"description":"No organization"}},"security":[{"bearer-jwt":[]}]}},"/users/me/organization/members/{email}":{"delete":{"tags":["Current User Organization"],"summary":"Remove member or invitation from organization","description":"Removes a member or pending invitation from the authenticated user's organization","operationId":"removeMemberOrInvitation","parameters":[{"name":"email","in":"path","required":true,"schema":{"type":"string"}}],"responses":{"204":{"description":"Member or invitation removed successfully"},"401":{"description":"Invalid JWT token"},"404":{"description":"Organization not found, user is not owner, or invitation not found"}},"security":[{"bearer-jwt":[]}]}}},"components":{"schemas":{"UpdateOrganizationRequest":{"type":"object","properties":{"name":{"type":"string"},"logoUrl":{"type":"string"},"url":{"type":"string"}}},"OrganizationDTO":{"type":"object","properties":{"name":{"type":"string"},"slug":{"type":"string"},"logo":{"type":"string"},"url":{"type":"string"},"people":{"type":"integer","format":"int32"},"isOwner":{"type":"boolean"},"isBillingSubscriber":{"type":"boolean"},"auth0OrgId":{"type":"string"}}},"CreateTokenRequest":{"type":"object","properties":{"name":{"type":"string","minLength":1},"daysUntilExpiration":{"type":"integer","format":"int32"}},"required":["daysUntilExpiration","name"]},"UserTokenDTO":{"type":"object","properties":{"id":{"type":"integer","format":"int64"},"userId":{"type":"integer","format":"int64"},"name":{"type":"string"},"createdAt":{"type":"string","format":"date-time"},"lastUsedAt":{"type":"string","format":"date-time"},"expiresAt":{"type":"string","format":"date-time"}}},"UserTokenWithPlaintextDTO":{"type":"object","properties":{"tokenDTO":{"$ref":"#/components/schemas/UserTokenDTO"},"plaintextToken":{"type":"string"}}},"InviteUsersRequest":{"type":"object","properties":{"emails":{"type":"array","items":{"type":"string"},"minItems":1}},"required":["emails"]},"OrganizationMembersResponse":{"type":"object","properties":{"name":{"type":"string"},"email":{"type":"string"},"role":{"type":"string"},"status":{"type":"string","enum":["ACTIVE","INVITED","EXPIRED"]},"avatar":{"type":"string"},"lastActive":{"type":"string","format":"date-time"},"joinedAt":{"type":"string","format":"date-time"},"invitedHistory":{"type":"array","items":{"type":"string","format":"date-time"}}}},"RecommendationRequest":{"type":"object","description":"Request body containing the component PURL","properties":{"purl":{"type":"string"}}},"DtsDimensions":{"type":"object","properties":{"overall":{"type":"integer","format":"int32"},"age":{"type":"integer","format":"int32"},"license":{"type":"integer","format":"int32"},"popularity":{"type":"integer","format":"int32"},"releaseStability":{"type":"integer","format":"int32"},"security":{"type":"integer","format":"int32"}}},"FromVersion":{"type":"object","properties":{"version":{"type":"string"},"breakingChangesCount":{"type":"string"},"directVulnerabilities":{"type":"object","additionalProperties":{"type":"number","format":"double"}},"transitiveVulnerabilities":{"type":"object","additionalProperties":{"type":"number","format":"double"}},"licenseThreatLevels":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}},"vulnerableMethods":{"type":"array","items":{"$ref":"#/components/schemas/RecommendationVulnerableMethod"}},"developerTrustScore":{"type":"integer","format":"int32"},"maxSeverity":{"type":"number","format":"double"},"dtsDimensions":{"$ref":"#/components/schemas/DtsDimensions"},"policyCompliance":{"$ref":"#/components/schemas/PolicyCompliance"}}},"MethodSignature":{"type":"object","properties":{"type":{"type":"string"},"signature":{"type":"string"},"vulnerableParameters":{"type":"array","items":{"type":"integer","format":"int32"}}}},"PolicyCompliance":{"type":"object","properties":{"compliant":{"type":"boolean"},"conditions":{"type":"array","items":{"$ref":"#/components/schemas/PolicyConditionResult"}}}},"PolicyConditionResult":{"type":"object","properties":{"conditionId":{"type":"string"},"conditionName":{"type":"string"},"passing":{"type":"boolean"},"reason":{"type":"string"}}},"RecommendationResponse":{"type":"object","properties":{"outcome":{"type":"string","enum":["FOUND_RECOMMENDATIONS","NO_UPGRADE_NEEDED","NO_DATA_FOR_VERSION","BLOCKED_BY_POLICY"]},"fromVersion":{"$ref":"#/components/schemas/FromVersion"},"toVersions":{"type":"array","items":{"$ref":"#/components/schemas/RecommendedVersion"}}}},"RecommendationVulnerableMethod":{"type":"object","properties":{"refid":{"type":"string"},"methodSignatures":{"type":"array","items":{"$ref":"#/components/schemas/MethodSignature"}}}},"RecommendedVersion":{"type":"object","properties":{"version":{"type":"string"},"breakingChangesCount":{"type":"string"},"directVulnerabilities":{"type":"object","additionalProperties":{"type":"number","format":"double"}},"transitiveVulnerabilities":{"type":"object","additionalProperties":{"type":"number","format":"double"}},"licenseThreatLevels":{"type":"object","additionalProperties":{"type":"integer","format":"int32"}},"vulnerableMethods":{"type":"array","items":{"$ref":"#/components/schemas/RecommendationVulnerableMethod"}},"developerTrustScore":{"type":"integer","format":"int32"},"maxSeverity":{"type":"number","format":"double"},"dtsDimensions":{"$ref":"#/components/schemas/DtsDimensions"},"policyCompliance":{"$ref":"#/components/schemas/PolicyCompliance"}}},"LatestVersionRequest":{"type":"object","description":"Request body containing the component PURL","properties":{"purl":{"type":"string"}}},"ComponentDetailDocument":{"type":"object","properties":{"malware":{"type":"boolean"}}},"PurlRequest_Post":{"type":"object","properties":{"coordinates":{"type":"array","items":{"type":"string"}}},"required":["coordinates"]},"ComponentReport_Post":{"type":"object","properties":{"coordinates":{"type":"string"},"description":{"type":"string"},"reference":{"type":"string"},"vulnerabilities":{"type":"array","items":{"$ref":"#/components/schemas/OssiVulnerability_Post"}}}},"OssiVulnerability_Post":{"type":"object","properties":{"id":{"type":"string"},"displayName":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"cvssScore":{"type":"number","format":"double"},"cvssVector":{"type":"string"},"cwe":{"type":"string"},"cve":{"type":"string"},"reference":{"type":"string"},"externalReferences":{"type":"array","items":{"type":"string"}}}},"Reference":{"type":"object","properties":{"link":{"type":"string"},"type":{"type":"string"}}},"VulnerabilityDetailDocument":{"type":"object","properties":{"vulnId":{"type":"string"},"aliases":{"type":"array","items":{"type":"string"}},"summary":{"type":"string"},"cvssSeverity":{"type":"number","format":"double"},"sonatypeCvssSeverity":{"type":"number","format":"double"},"cwes":{"type":"array","items":{"type":"string"}},"sonatypeCwes":{"type":"array","items":{"type":"string"}},"affectedEcosystems":{"type":"array","items":{"type":"string"}},"isMalware":{"type":"boolean"},"kev":{"type":"boolean"},"epss":{"type":"number","format":"double"},"source":{"type":"string"},"publishedAt":{"type":"string","format":"date-time"},"researchType":{"type":"string"},"cvssVector":{"type":"string"},"explanation":{"type":"string"},"detection":{"type":"string"},"recommendation":{"type":"string"},"vulnerableMethods":{"type":"array","items":{"$ref":"#/components/schemas/VulnerableMethod"}},"references":{"type":"array","items":{"$ref":"#/components/schemas/Reference"}},"affectedComponentVersionsCount":{"type":"integer","format":"int32"}}},"VulnerableMethod":{"type":"object","properties":{"signature":{"type":"string"},"vulnerableParameters":{"type":"array","items":{"type":"integer","format":"int32"}},"type":{"type":"string"}}},"ApiSearchResponse":{"type":"object","properties":{"hits":{"type":"array","items":{}},"total":{"type":"integer","format":"int64"},"offset":{"type":"integer","format":"int32"},"limit":{"type":"integer","format":"int32"},"aggregations":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}}}}},"AffectedComponentVersion":{},"ApiSearchResponseAffectedComponentVersion":{"type":"object","properties":{"hits":{"type":"array","items":{"$ref":"#/components/schemas/AffectedComponentVersion"}},"total":{"type":"integer","format":"int64"},"offset":{"type":"integer","format":"int32"},"limit":{"type":"integer","format":"int32"},"aggregations":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}}}}},"OnboardingBannerStatusDTO":{"type":"object","properties":{"showBanner":{"type":"boolean"},"reason":{"type":"string"}}},"PeriodDTO":{"type":"object","properties":{"start":{"type":"string","format":"date"},"end":{"type":"string","format":"date"}}},"UsageDTO":{"type":"object","properties":{"creditsUsed":{"type":"number"},"creditsTotal":{"type":"number"},"currentPeriod":{"$ref":"#/components/schemas/PeriodDTO"},"isOssiOrigin":{"type":"boolean"}}},"OssiMonthlyUsage":{"type":"object","properties":{"month":{"type":"string"},"totalComponents":{"type":"integer","format":"int32"},"estimatedCredits":{"type":"number"}}},"OssiUsageDataRange":{"type":"object","properties":{"start":{"type":"string"},"end":{"type":"string"}}},"OssiUsageHistoryDTO":{"type":"object","properties":{"months":{"type":"array","items":{"$ref":"#/components/schemas/OssiMonthlyUsage"}},"summary":{"$ref":"#/components/schemas/OssiUsageSummary"},"isEstimate":{"type":"boolean"}}},"OssiUsageSummary":{"type":"object","properties":{"totalCredits":{"type":"number"},"monthlyAverage":{"type":"number"},"maxCredits":{"type":"number"},"dataRange":{"$ref":"#/components/schemas/OssiUsageDataRange"}}},"CumulativeCreditUsage":{"type":"object","properties":{"dailyUsage":{"type":"array","items":{"$ref":"#/components/schemas/DailyCreditUsage"}},"totalCreditsUsed":{"type":"number"},"dailyAverage":{"type":"number"},"peakDay":{"type":"number"},"creditLimit":{"type":"number"}}},"DailyCreditUsage":{"type":"object","properties":{"date":{"type":"string","format":"date"},"dailyUsage":{"type":"number"},"cumulativeUsage":{"type":"number"}}},"ApiSearchResponseVulnerabilityDocument":{"type":"object","properties":{"hits":{"type":"array","items":{"$ref":"#/components/schemas/VulnerabilityDocument"}},"total":{"type":"integer","format":"int64"},"offset":{"type":"integer","format":"int32"},"limit":{"type":"integer","format":"int32"},"aggregations":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}}}}},"VulnerabilityDocument":{"type":"object","properties":{"malware":{"type":"boolean"}}},"ApiSearchResponseComponentDetailDocument":{"type":"object","properties":{"hits":{"type":"array","items":{"$ref":"#/components/schemas/ComponentDetailDocument"}},"total":{"type":"integer","format":"int64"},"offset":{"type":"integer","format":"int32"},"limit":{"type":"integer","format":"int32"},"aggregations":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}}}}},"ApiSearchResponseComponentDocument":{"type":"object","properties":{"hits":{"type":"array","items":{"$ref":"#/components/schemas/ComponentDocument"}},"total":{"type":"integer","format":"int64"},"offset":{"type":"integer","format":"int32"},"limit":{"type":"integer","format":"int32"},"aggregations":{"type":"object","additionalProperties":{"type":"object","additionalProperties":{"type":"integer","format":"int64"}}}}},"ComponentDocument":{"type":"object","properties":{"malware":{"type":"boolean"}}},"BillingDTO":{"type":"object","properties":{"monthlyCost":{"type":"number","format":"double"},"billingPeriodStart":{"type":"string","format":"date"},"billingPeriodEnd":{"type":"string","format":"date"},"paymentMethod":{"type":"string"},"status":{"type":"string","enum":["FUTURE","IN_TRIAL","ACTIVE","NON_RENEWING","PAUSED","CANCELLED","TRANSFERRED"]}}},"PlanDTO":{"type":"object","properties":{"planTier":{"type":"string","enum":["FREE","PRO","ENTERPRISE","TEAM"]},"displayName":{"type":"string"},"price":{"type":"number","format":"double"},"billingPeriod":{"type":"string","enum":["PER_MONTH","PER_YEAR","CUSTOM"]},"monthlyCredits":{"type":"number"},"chargebeeItemId":{"type":"string"},"isCurrentPlan":{"type":"boolean"}}},"Invoice":{"type":"object","properties":{"id":{"type":"string"},"subscriptionId":{"type":"string"},"date":{"type":"string","format":"date"},"description":{"type":"string"},"amount":{"type":"number","format":"double"},"status":{"type":"string"},"pdfUrl":{"type":"string"},"usedCredits":{"type":"number","format":"double"},"totalCredits":{"type":"number","format":"double"}}},"ComponentReport_Get":{"type":"object","properties":{"coordinates":{"type":"string"},"description":{"type":"string"},"reference":{"type":"string"},"vulnerabilities":{"type":"array","items":{"$ref":"#/components/schemas/OssiVulnerability_Get"}},"sonatypeOssiScore":{"type":"number","format":"double"}}},"OssiVulnerability_Get":{"type":"object","properties":{"id":{"type":"string"},"displayName":{"type":"string"},"title":{"type":"string"},"description":{"type":"string"},"cvssScore":{"type":"number","format":"double"},"cvssVector":{"type":"string"},"cwe":{"type":"string"},"cve":{"type":"string"},"reference":{"type":"string"},"externalReferences":{"type":"array","items":{"type":"string"}}}},"BulkRemoveMembersRequest":{"type":"object","properties":{"emails":{"type":"array","items":{"type":"string","format":"email"},"minItems":1}},"required":["emails"]}},"securitySchemes":{"bearer-jwt":{"type":"http","description":"JWT Bearer Token Authentication","scheme":"bearer","bearerFormat":"JWT"},"ossi-basic-auth":{"type":"http","description":"HTTP Basic Authentication for OSSI API. Username: OSSI username. Password: OSSI API token. This authentication method is intended for legacy OSSI users, allowing them to continue using their existing OSSI API tokens without creating a new Sonatype Guide account. The Authorization header value is generated by Base64-encoding 'username:apiToken'. Example: Authorization: Basic dXNlcm5hbWU6YXBpVG9rZW4=","scheme":"basic"},"user-token":{"type":"http","description":"Long-lived User Token Authentication. Create tokens via Settings > API Tokens in the UI.","scheme":"bearer"}}}}