OutSystems Assets Quality Metrics API
The Assets Quality Metrics API from OutSystems — 1 operation(s) for assets quality metrics.
The Assets Quality Metrics API from OutSystems — 1 operation(s) for assets quality metrics.
openapi: 3.2.0
info:
title: Code Quality Assets Quality Metrics API
description: Provides APIs to submit code analysis requests and retrieve information about code quality findings, application scores, and analysis results.
version: v1
servers:
- url: https://ODC_PORTAL_DOMAIN/api/code-quality/v1
description: Replace ODC_PORTAL_DOMAIN with the domain of your organization.
- url: https://{odc-portal-domain}/api/code-quality/v1
description: Replace {odc-portal-domain} with the domain of your organization.
variables:
odc-portal-domain:
default: ODC_PORTAL_DOMAIN
description: The domain of your organization
tags:
- name: Assets Quality Metrics
paths:
/assets-quality-metrics:
get:
tags:
- Assets Quality Metrics
summary: Retrieves quality metrics for assets.
description: 'Retrieves quality metrics and findings distribution for assets, including quality scores and findings grouped by severity and status, with comparison to previous analysis.
Example: GET /code-quality/v1/assets-quality-metrics?assetType=Application&limit=50&sort=-score
API Client needs the **Analyze > View Code Quality findings** permission.'
operationId: FindingsOverviewControllerV_GetAppsOverview
parameters:
- name: AssetKeys
in: query
description: Filter by asset keys (unique identifiers).
schema:
type: array
items:
type: string
- name: Sort
in: query
description: Sort results by specified fields.
schema:
type: array
items:
type: string
- name: Status
in: query
description: Filter by finding status.
schema:
type: array
items:
$ref: '#/components/schemas/FindingStatus'
- name: AssetType
in: query
description: Filter by asset type.
schema:
type: string
example: WebApplication
example: WebApplication
- name: Categories
in: query
description: Filter by finding categories.
schema:
type: array
items:
$ref: '#/components/schemas/Categories'
- name: Severities
in: query
description: Filter by finding severity levels.
schema:
type: array
items:
$ref: '#/components/schemas/FindingSeverity'
- name: Since
in: query
description: 'Start date for filtering findings by discovery time. Default: if omitted, 14 days before `To` (or 14 days before now, if `To` is also omitted).'
schema:
type: string
example: '2022-06-01T00:00:00'
example: '2022-06-01T00:00:00'
- name: To
in: query
description: 'End date for filtering findings by discovery time. Default: if omitted, now (current UTC time).'
schema:
type: string
example: '2022-12-31T23:59:59'
example: '2022-12-31T23:59:59'
- name: ScoreRanges
in: query
description: 'Filter by quality score ranges. Default: includes all scores.'
schema:
type: string
example: 0-49,50-84,85-100
example: '"0-49,50-84,85-100"'
- name: Limit
in: query
description: Number of records to return per page.
schema:
maximum: 1000
minimum: 1
type: integer
format: int32
example: 50
example: 50
- name: Offset
in: query
description: Number of records to skip for pagination.
schema:
maximum: 2147483647
minimum: 0
type: integer
format: int32
example: 100
example: 100
- name: PortfolioKey
in: query
description: Filter by portfolio key.
schema:
type: string
format: uuid
example: 12345678-1234-1234-1234-123456789abc
example: 12345678-1234-1234-1234-123456789abc
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/AppsOverviewResponseV1PagedListResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ProblemDetails'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/ProblemDetails'
default:
description: Error
content:
application/json:
schema:
$ref: '#/components/schemas/AppsOverviewResponseV1PagedListResponse'
security:
- bearerAuth: []
x-os-permissions: API Client needs the **Analyze > View Code Quality findings** permission.
components:
schemas:
ScoreChangeV1:
title: ScoreChange
type: object
properties:
latestScore:
type:
- integer
- 'null'
description: Quality score from the current/latest analysis (0-100).
format: int32
differenceScore:
type:
- integer
- 'null'
description: Change in quality score compared to previous analysis.
format: int32
additionalProperties: false
description: Quality score with change information.
FindingStatus:
enum:
- Open
- Resolved
- Dismissed
- Snoozed
- Closed
type: string
FindingsChangeV1:
title: FindingsChange
type: object
properties:
latestFindingsCount:
type:
- integer
- 'null'
description: Number of findings in the current/latest analysis.
format: int32
findingsDifferenceCount:
type:
- integer
- 'null'
description: Change in findings count compared to previous analysis.
format: int32
additionalProperties: false
description: Findings count with change information.
AppsOverviewResponseV1:
title: AppsOverviewResponse
type: object
properties:
assetName:
type:
- string
- 'null'
assetKey:
type:
- string
- 'null'
description: Unique identifier of the asset.
assetRevision:
type: integer
description: Revision number of the asset.
format: int32
score:
title: ScoreChange
allOf:
- $ref: '#/components/schemas/ScoreChangeV1'
description: Quality score with change compared to previous analysis.
severity:
type:
- object
- 'null'
additionalProperties:
$ref: '#/components/schemas/FindingsChangeV1'
description: Findings count grouped by severity level (Low, Medium, High, Critical).
status:
type:
- object
- 'null'
additionalProperties:
$ref: '#/components/schemas/FindingsChangeV1'
description: Findings count grouped by status (Open, Resolved, Dismissed, Snoozed, Closed).
additionalProperties: false
description: Overview response for an asset, including quality scores and findings distribution by severity and status.
example:
assetKey: a1b2c3d4-e5f6-7890-abcd-ef1234567890
assetRevision: 42
score:
latestScore: 78
differenceScore: 5
severity:
Low:
latestFindingsCount: 15
findingsDifferenceCount: 3
Medium:
latestFindingsCount: 8
findingsDifferenceCount: 2
High:
latestFindingsCount: 5
findingsDifferenceCount: 0
Critical:
latestFindingsCount: 2
findingsDifferenceCount: 1
status:
Open:
latestFindingsCount: 18
findingsDifferenceCount: 3
Resolved:
latestFindingsCount: 10
findingsDifferenceCount: 5
Dismissed:
latestFindingsCount: 2
findingsDifferenceCount: 0
assetName: MyWebApplication
AppsOverviewResponseV1PagedListResponse:
type: object
properties:
page:
allOf:
- $ref: '#/components/schemas/PageInfoWithTotals'
description: Page information.
readOnly: true
results:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/AppsOverviewResponseV1'
description: List of results.
readOnly: true
additionalProperties: false
description: Represents a response containing a paged set of results.
ProblemDetails:
type: object
properties:
type:
type:
- string
- 'null'
description: A URI reference that identifies the problem type.
title:
type:
- string
- 'null'
description: A short, human-readable summary of the problem.
status:
type:
- integer
- 'null'
description: The HTTP status code applicable to the problem.
format: int32
detail:
type:
- string
- 'null'
description: A human-readable explanation of the error.
instance:
type:
- string
- 'null'
description: A URI that identifies the specific occurrence of the problem.
traceId:
type: string
description: This field helps OutSystems support track and investigate specific error occurrences. Providing this identifier when reporting an issue allows for more precise and faster troubleshooting.
errorCode:
type: string
description: This error code serves the purpose to communicate with OutSystems Support and help diagnose errors.
description: A standardized error response as per RFC 7807 (Problem Details for HTTP APIs).
FindingSeverity:
enum:
- Low
- Medium
- High
- Critical
type: string
Categories:
enum:
- performance
- security
- architecture
- maintainability
type: string
PageInfoWithTotals:
type: object
properties:
count:
type: integer
description: Number of results in the current page.
format: int32
limit:
type: integer
description: Limit of results per page.
format: int32
offset:
type: integer
description: Offset of the current page of results.
format: int32
nextPageOffset:
type:
- integer
- 'null'
description: Offset of the next page of results. Null when there is no next page.
format: int32
totalResults:
type: integer
description: Total of results.
format: int32
totalPages:
type: integer
description: Total of result pages.
format: int32
readOnly: true
additionalProperties: false
description: Contains response page information including totals.
securitySchemes:
bearerAuth:
type: http
description: Enter your bearer token in the format 'Bearer {token}'
scheme: bearer
bearerFormat: JWT