Work with this as data
Every API here is available over the APIs.io API and to AI agents over MCP.
MCP server
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
Tools for apis
7 MCP tools reach this
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.
Call it yourself
curl for this page
This API
curl "https://apis.io/api/v1/apis/nuon-policy-reports-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
OpenAPI Specification
openapi: 3.2.0
info:
contact:
email: support@nuon.co
name: Nuon Support
description: API for managing nuon apps, components, installs, and actions.
title: Nuon accounts Policy Reports API
version: 0.19.1074
servers:
- url: https://api.nuon.co/
tags:
- description: policy-reports
name: policy-reports
paths:
/v1/apps/{app_id}/policy-analytics/breakdown:
get:
description: 'Returns policy evaluation counts broken down by a single dimension (policy_id, install_id, or owner_type), sorted by violation count (denies first, then warns). Use this to identify which policies, installs, or lifecycle stages produce the most violations.
'
operationId: GetPolicyAnalyticsBreakdown
parameters:
- description: app ID
in: path
name: app_id
required: true
schema:
type: string
- description: 'dimension to break down by: policy_id, install_id, owner_type'
in: query
name: dimension
required: true
schema:
type: string
- description: start time (RFC3339)
in: query
name: start
schema:
type: string
- description: end time (RFC3339)
in: query
name: end
schema:
type: string
- description: filter by install ID
in: query
name: install_id
schema:
type: string
- description: filter by policy ID
in: query
name: policy_id
schema:
type: string
- description: max entries to return (default 10)
in: query
name: limit
schema:
type: integer
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/service.PolicyAnalyticsBreakdown'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
security:
- APIKey: []
- OrgID: []
summary: get policy analytics breakdown by dimension
tags:
- policy-reports
/v1/apps/{app_id}/policy-analytics/summary:
get:
description: 'Returns aggregate policy evaluation counts for an app over a time range, with optional drill-down by install or policy.
'
operationId: GetPolicyAnalyticsSummary
parameters:
- description: app ID
in: path
name: app_id
required: true
schema:
type: string
- description: start time (RFC3339)
in: query
name: start
schema:
type: string
- description: end time (RFC3339)
in: query
name: end
schema:
type: string
- description: filter by install ID
in: query
name: install_id
schema:
type: string
- description: filter by policy ID
in: query
name: policy_id
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/service.PolicyAnalyticsSummary'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
security:
- APIKey: []
- OrgID: []
summary: get policy analytics summary
tags:
- policy-reports
/v1/apps/{app_id}/policy-analytics/timeseries:
get:
description: 'Returns policy evaluation counts bucketed over time for charting, with optional grouping by policy, install, or component.
'
operationId: GetPolicyAnalyticsTimeseries
parameters:
- description: app ID
in: path
name: app_id
required: true
schema:
type: string
- description: start time (RFC3339)
in: query
name: start
schema:
type: string
- description: end time (RFC3339)
in: query
name: end
schema:
type: string
- description: 'comma-separated dimensions: policy_id, install_id, component_id, owner_type'
in: query
name: group_by
schema:
type: string
- description: filter by install ID
in: query
name: install_id
schema:
type: string
- description: filter by policy ID
in: query
name: policy_id
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/service.PolicyAnalyticsTimeseries'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
security:
- APIKey: []
- OrgID: []
summary: get policy analytics timeseries
tags:
- policy-reports
/v1/policy-reports:
get:
description: 'Returns policy reports for the current organization.
'
operationId: GetPolicyReports
parameters:
- description: offset of results to return
in: query
name: offset
schema:
type: integer
default: 0
- description: limit of results to return
in: query
name: limit
schema:
type: integer
default: 10
- description: page number of results to return
in: query
name: page
schema:
type: integer
default: 0
- description: owner type (install_deploys, install_sandbox_runs, component_builds)
in: query
name: owner_type
schema:
type: string
- description: owner id
in: query
name: owner_id
schema:
type: string
- description: app id
in: query
name: app_id
schema:
type: string
- description: install id
in: query
name: install_id
schema:
type: string
- description: report status
in: query
name: status
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
items:
$ref: '#/components/schemas/app.PolicyReport'
type: array
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
security:
- APIKey: []
- OrgID: []
summary: get policy reports
tags:
- policy-reports
/v1/policy-reports/{report_id}:
get:
description: 'Returns a single policy report by ID.
'
operationId: GetPolicyReport
parameters:
- description: policy report ID
in: path
name: report_id
required: true
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/app.PolicyReport'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
security:
- APIKey: []
- OrgID: []
summary: get policy report
tags:
- policy-reports
/v1/policy-reports/{report_id}/export:
get:
description: 'Exports a policy report as JSON, SARIF, or PDF.
'
operationId: ExportPolicyReport
parameters:
- description: policy report ID
in: path
name: report_id
required: true
schema:
type: string
- description: 'export format: json, sarif, pdf (default: json)'
in: query
name: format
schema:
type: string
responses:
'200':
description: OK
content:
application/json:
schema: {}
application/pdf:
schema: {}
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
application/pdf:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
'401':
description: Unauthorized
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
application/pdf:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
application/pdf:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
'404':
description: Not Found
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
application/pdf:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
application/pdf:
schema:
$ref: '#/components/schemas/stderr.ErrResponse'
security:
- APIKey: []
- OrgID: []
summary: export policy report
tags:
- policy-reports
components:
schemas:
service.TimeseriesBucket:
properties:
denies:
type: integer
evaluations:
type: integer
passes:
type: integer
series:
items:
$ref: '#/components/schemas/service.SeriesPoint'
type: array
time:
type: string
warns:
type: integer
type: object
app.PolicyReportOwnerType:
enum:
- install_deploys
- install_sandbox_runs
- component_builds
type: string
x-enum-varnames:
- PolicyReportOwnerTypeInstallDeploy
- PolicyReportOwnerTypeInstallSandboxRun
- PolicyReportOwnerTypeComponentBuild
app.PolicyViolation:
properties:
input_identity:
description: Human-readable input reference (e.g., "Deployment/default/nginx")
type: string
input_index:
type: integer
message:
type: string
policy_id:
type: string
policy_name:
type: string
severity:
description: '"deny" or "warn"'
type: string
type: object
app.PolicyInputRef:
properties:
id:
type: string
name:
type: string
type:
type: string
type: object
app.PolicyResult:
properties:
deny_count:
type: integer
input_count:
type: integer
pass_count:
type: integer
policy_id:
type: string
policy_name:
type: string
status:
description: '"deny", "warn", or "pass"'
type: string
warn_count:
type: integer
type: object
service.BreakdownEntry:
properties:
denies:
type: integer
evaluations:
type: integer
key:
type: string
passes:
type: integer
warns:
type: integer
type: object
stderr.ErrResponse:
properties:
description:
type: string
error:
type: string
user_error:
type: boolean
type: object
service.PolicyAnalyticsBreakdown:
properties:
dimension:
type: string
end:
type: string
entries:
items:
$ref: '#/components/schemas/service.BreakdownEntry'
type: array
start:
type: string
type: object
service.PolicyAnalyticsTimeseries:
properties:
buckets:
items:
$ref: '#/components/schemas/service.TimeseriesBucket'
type: array
end:
type: string
group_by:
items:
type: string
type: array
interval:
type: string
start:
type: string
type: object
app.Status:
enum:
- error
- pending
- in-progress
- checking-plan
- success
- not-attempted
- cancelled
- retrying
- discarded
- user-skipped
- auto-skipped
- planning
- applying
- queued
- warning
- failed-pending-retry
- generating
- awaiting-user-run
- provisioning
- active
- outdated
- expired
- approved
- drifted
- no-drift
- approval-expired
- approval-denied
- approval-retry
- building
- deleting
- noop
- approval-awaiting
type: string
x-enum-varnames:
- StatusError
- StatusPending
- StatusInProgress
- StatusCheckPlan
- StatusSuccess
- StatusNotAttempted
- StatusCancelled
- StatusRetrying
- StatusDiscarded
- StatusUserSkipped
- StatusAutoSkipped
- StatusPlanning
- StatusApplying
- StatusQueued
- StatusWarning
- StatusFailedPendingRetry
- InstallStackVersionStatusGenerating
- InstallStackVersionStatusPendingUser
- InstallStackVersionStatusProvisioning
- InstallStackVersionStatusActive
- InstallStackVersionStatusOutdated
- InstallStackVersionStatusExpired
- WorkflowStepApprovalStatusApproved
- WorkflowStepDrifted
- WorkflowStepNoDrift
- WorkflowStepApprovalStatusApprovalExpired
- WorkflowStepApprovalStatusApprovalDenied
- WorkflowStepApprovalStatusApprovalRetryPlan
- StatusBuilding
- StatusDeleting
- InstallDeployStatusV2Noop
- AwaitingApproval
app.CompositeStatus:
properties:
created_at_ts:
type: integer
created_by_id:
type: string
history:
items:
$ref: '#/components/schemas/app.CompositeStatus'
type: array
metadata:
additionalProperties: {}
type: object
status:
$ref: '#/components/schemas/app.Status'
status_human_description:
type: string
type: object
service.SeriesPoint:
properties:
denies:
type: integer
evaluations:
type: integer
labels:
additionalProperties:
type: string
type: object
passes:
type: integer
warns:
type: integer
type: object
app.PolicyReport:
properties:
app_id:
description: Denormalized context for filtering
type: string
app_name:
type: string
component_id:
type: string
component_name:
type: string
created_at:
type: string
created_by_id:
type: string
deny_count:
description: Summary counts for list views
type: integer
evaluated_at:
description: Canonical policy evaluation data
type: string
id:
type: string
inputs:
items:
$ref: '#/components/schemas/app.PolicyInputRef'
type: array
install_id:
type: string
install_name:
type: string
org_name:
description: Denormalized display names for human-readable reports
type: string
owner_id:
description: Polymorphic relationship to the impacted Nuon resource (indexes defined in Indexes())
type: string
owner_type:
$ref: '#/components/schemas/app.PolicyReportOwnerType'
pass_count:
type: integer
policies:
items:
$ref: '#/components/schemas/app.PolicyResult'
type: array
policy_ids:
items:
type: string
type: array
runner_job_id:
type: string
status:
$ref: '#/components/schemas/app.CompositeStatus'
updated_at:
type: string
violations:
items:
$ref: '#/components/schemas/app.PolicyViolation'
type: array
warn_count:
type: integer
workflow_step_policy_validation_id:
description: Optional context references (indexes defined in Indexes())
type: string
type: object
service.PolicyAnalyticsSummary:
properties:
end:
type: string
start:
type: string
total_denies:
type: integer
total_evaluations:
type: integer
total_passes:
type: integer
total_warns:
type: integer
unique_policies:
type: integer
unique_reports:
type: integer
type: object
securitySchemes:
APIKey:
description: Type "Bearer" followed by a space and token.
in: header
name: Authorization
type: apiKey
OrgID:
description: Nuon org ID
in: header
name: X-Nuon-Org-ID
type: apiKey