StackRox DetectionService API
The DetectionService API from StackRox — 3 operation(s) for detectionservice.
The DetectionService API from StackRox — 3 operation(s) for detectionservice.
openapi: 3.0.0
info:
title: API Reference AlertService DetectionService API
version: '1'
description: API reference for the StackRox Kubernetes Security Platform (upstream of Red Hat Advanced Cluster Security). Provides risk analysis, visibility, runtime alerts, policy management, compliance checking, and vulnerability management for containerized workloads. Authentication uses API tokens generated via /v1/apitokens/generate and passed as Bearer tokens.
contact:
email: support@stackrox.com
url: https://www.stackrox.io/
license:
name: All Rights Reserved
url: https://www.stackrox.com/
servers:
- url: https://{central-host}
description: StackRox Central API server
variables:
central-host:
default: stackrox.localhost
description: StackRox Central hostname or IP
security:
- ApiToken: []
tags:
- name: DetectionService
paths:
/v1/detect/build:
post:
summary: DetectBuildTime checks if any images violate build time policies.
operationId: DetectBuildTime
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1BuildDetectionResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1BuildDetectionRequest'
required: true
tags:
- DetectionService
/v1/detect/deploy:
post:
summary: DetectDeployTime checks if any deployments violate deploy time policies.
operationId: DetectDeployTime
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1DeployDetectionResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1DeployDetectionRequest'
required: true
tags:
- DetectionService
/v1/detect/deploy/yaml:
post:
summary: DetectDeployTimeFromYAML checks if the given deployment yaml violates any deploy time policies.
operationId: DetectDeployTimeFromYAML
responses:
'200':
description: A successful response.
content:
application/json:
schema:
$ref: '#/components/schemas/v1DeployDetectionResponse'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/v1DeployYAMLDetectionRequest'
required: true
tags:
- DetectionService
components:
schemas:
AlertProcessViolation:
type: object
properties:
message:
type: string
processes:
type: array
items:
$ref: '#/components/schemas/storageProcessIndicator'
SecurityContextSELinux:
type: object
properties:
user:
type: string
role:
type: string
type:
type: string
level:
type: string
storagePortPolicy:
type: object
properties:
port:
type: integer
format: int32
protocol:
type: string
v1DeployYAMLDetectionRequest:
type: object
properties:
yaml:
type: string
noExternalMetadata:
type: boolean
format: boolean
enforcementOnly:
type: boolean
format: boolean
storageComponent:
type: object
properties:
name:
type: string
version:
type: string
storageImageName:
type: object
properties:
registry:
type: string
remote:
type: string
tag:
type: string
fullName:
type: string
storageProcessPolicy:
type: object
properties:
name:
type: string
args:
type: string
ancestor:
type: string
uid:
type: string
storageScopeLabel:
type: object
properties:
key:
type: string
value:
type: string
v1BuildDetectionResponse:
type: object
properties:
alerts:
type: array
items:
$ref: '#/components/schemas/storageAlert'
v1DeployDetectionRequest:
type: object
properties:
deployment:
$ref: '#/components/schemas/storageDeployment'
noExternalMetadata:
type: boolean
format: boolean
enforcementOnly:
type: boolean
format: boolean
clusterId:
type: string
storageNumericalPolicy:
type: object
properties:
op:
$ref: '#/components/schemas/storageComparator'
value:
type: number
format: float
storageEmbeddedSecret:
type: object
properties:
name:
type: string
path:
type: string
storageContainerInstance:
type: object
properties:
instanceId:
$ref: '#/components/schemas/storageContainerInstanceID'
containingPodId:
type: string
description: The pod containing this container instance (kubernetes only).
containerIps:
type: array
items:
type: string
description: The IP addresses of this container.
started:
type: string
format: date-time
title: The start time of the container
description: ContainerInstanceID allows to uniquely identify a container within a cluster.
storagePortConfig:
type: object
properties:
name:
type: string
containerPort:
type: integer
format: int32
protocol:
type: string
exposure:
$ref: '#/components/schemas/PortConfigExposureLevel'
exposedPort:
type: integer
format: int32
exposureInfos:
type: array
items:
$ref: '#/components/schemas/PortConfigExposureInfo'
title: 'Next Available Tag: 6'
EnvironmentConfigEnvVarSource:
type: string
enum:
- UNSET
- RAW
- SECRET_KEY
- CONFIG_MAP_KEY
- FIELD
- RESOURCE_FIELD
- UNKNOWN
default: UNSET
title: For any update to EnvVarSource, please also update 'ui/src/messages/common.js'
storagePortExposurePolicy:
type: object
properties:
exposureLevels:
type: array
items:
$ref: '#/components/schemas/PortConfigExposureLevel'
storageKeyValuePolicy:
type: object
properties:
key:
type: string
value:
type: string
envVarSource:
$ref: '#/components/schemas/EnvironmentConfigEnvVarSource'
storageViolationState:
type: string
enum:
- ACTIVE
- SNOOZED
- RESOLVED
default: ACTIVE
storageHostMountPolicy:
type: object
properties:
readOnly:
type: boolean
format: boolean
storageTolerationOperator:
type: string
enum:
- TOLERATION_OPERATION_UNKNOWN
- TOLERATION_OPERATOR_EXISTS
- TOLERATION_OPERATOR_EQUAL
default: TOLERATION_OPERATION_UNKNOWN
storageVolumePolicy:
type: object
properties:
name:
type: string
source:
type: string
destination:
type: string
readOnly:
type: boolean
format: boolean
type:
type: string
storagePermissionLevel:
type: string
enum:
- UNSET
- NONE
- DEFAULT
- ELEVATED_IN_NAMESPACE
- ELEVATED_CLUSTER_WIDE
- CLUSTER_ADMIN
default: UNSET
title: 'For any update to PermissionLevel, also update:
- central/searchbasedpolicies/builders/k8s_rbac.go
- ui/src/messages/common.js'
storageLifecycleStage:
type: string
enum:
- DEPLOY
- BUILD
- RUNTIME
default: DEPLOY
storageProcessSignal:
type: object
properties:
id:
type: string
description: 'A unique UUID for identifying the message
We have this here instead of at the top level
because we want to have each message to be
self contained.'
containerId:
type: string
title: ID of container associated with this process
time:
type: string
format: date-time
title: Process creation time
name:
type: string
title: Process name
args:
type: string
title: Process arguments
execFilePath:
type: string
title: Process executable file path
pid:
type: integer
format: int64
title: Host process ID
uid:
type: integer
format: int64
title: Real user ID
gid:
type: integer
format: int64
title: Real group ID
lineage:
type: array
items:
type: string
title: Process Lineage
storageContainerInstanceID:
type: object
properties:
containerRuntime:
$ref: '#/components/schemas/storageContainerRuntime'
id:
type: string
description: The ID of the container, specific to the given runtime.
node:
type: string
description: The node on which this container runs.
storageWhitelistImage:
type: object
properties:
name:
type: string
storageDockerfileLineRuleField:
type: object
properties:
instruction:
type: string
value:
type: string
storageProcessIndicator:
type: object
properties:
id:
type: string
title: A unique uuid for the Indicator message
deploymentId:
type: string
deploymentStateTs:
type: string
format: int64
containerName:
type: string
podId:
type: string
signal:
$ref: '#/components/schemas/storageProcessSignal'
clusterId:
type: string
namespace:
type: string
containerStartTime:
type: string
format: date-time
title: 'Next available tag: 11'
v1DeployDetectionResponse:
type: object
properties:
runs:
type: array
items:
$ref: '#/components/schemas/DeployDetectionResponseRun'
storagePolicyFields:
type: object
properties:
imageName:
$ref: '#/components/schemas/storageImageNamePolicy'
imageAgeDays:
type: string
format: int64
lineRule:
$ref: '#/components/schemas/storageDockerfileLineRuleField'
cvss:
$ref: '#/components/schemas/storageNumericalPolicy'
cve:
type: string
component:
$ref: '#/components/schemas/storageComponent'
scanAgeDays:
type: string
format: int64
noScanExists:
type: boolean
format: boolean
env:
$ref: '#/components/schemas/storageKeyValuePolicy'
command:
type: string
args:
type: string
directory:
type: string
user:
type: string
volumePolicy:
$ref: '#/components/schemas/storageVolumePolicy'
portPolicy:
$ref: '#/components/schemas/storagePortPolicy'
requiredLabel:
$ref: '#/components/schemas/storageKeyValuePolicy'
requiredAnnotation:
$ref: '#/components/schemas/storageKeyValuePolicy'
disallowedAnnotation:
$ref: '#/components/schemas/storageKeyValuePolicy'
privileged:
type: boolean
format: boolean
dropCapabilities:
type: array
items:
type: string
addCapabilities:
type: array
items:
type: string
containerResourcePolicy:
$ref: '#/components/schemas/storageResourcePolicy'
processPolicy:
$ref: '#/components/schemas/storageProcessPolicy'
readOnlyRootFs:
type: boolean
format: boolean
fixedBy:
type: string
portExposurePolicy:
$ref: '#/components/schemas/storagePortExposurePolicy'
permissionPolicy:
$ref: '#/components/schemas/storagePermissionPolicy'
hostMountPolicy:
$ref: '#/components/schemas/storageHostMountPolicy'
whitelistEnabled:
type: boolean
format: boolean
title: 'Next Available Tag: 29'
storageContainer:
type: object
properties:
id:
type: string
config:
$ref: '#/components/schemas/storageContainerConfig'
image:
$ref: '#/components/schemas/storageContainerImage'
securityContext:
$ref: '#/components/schemas/storageSecurityContext'
volumes:
type: array
items:
$ref: '#/components/schemas/storageVolume'
ports:
type: array
items:
$ref: '#/components/schemas/storagePortConfig'
secrets:
type: array
items:
$ref: '#/components/schemas/storageEmbeddedSecret'
resources:
$ref: '#/components/schemas/storageResources'
instances:
type: array
items:
$ref: '#/components/schemas/storageContainerInstance'
name:
type: string
PortConfigExposureInfo:
type: object
properties:
level:
$ref: '#/components/schemas/PortConfigExposureLevel'
serviceName:
type: string
title: only set if level is not HOST
serviceId:
type: string
serviceClusterIp:
type: string
servicePort:
type: integer
format: int32
nodePort:
type: integer
format: int32
title: only set if level is HOST, NODE, or EXTERNAL
externalIps:
type: array
items:
type: string
title: only set if level is EXTERNAL
externalHostnames:
type: array
items:
type: string
storageResources:
type: object
properties:
cpuCoresRequest:
type: number
format: float
cpuCoresLimit:
type: number
format: float
memoryMbRequest:
type: number
format: float
memoryMbLimit:
type: number
format: float
LabelSelectorRequirement:
type: object
properties:
key:
type: string
op:
$ref: '#/components/schemas/storageLabelSelectorOperator'
values:
type: array
items:
type: string
title: 'Next available tag: 4'
storageWhitelist:
type: object
properties:
name:
type: string
deployment:
$ref: '#/components/schemas/storageWhitelistDeployment'
image:
$ref: '#/components/schemas/storageWhitelistImage'
expiration:
type: string
format: date-time
storageEnforcementAction:
type: string
enum:
- UNSET_ENFORCEMENT
- SCALE_TO_ZERO_ENFORCEMENT
- UNSATISFIABLE_NODE_CONSTRAINT_ENFORCEMENT
- KILL_POD_ENFORCEMENT
- FAIL_BUILD_ENFORCEMENT
default: UNSET_ENFORCEMENT
storageVolume:
type: object
properties:
name:
type: string
source:
type: string
destination:
type: string
readOnly:
type: boolean
format: boolean
type:
type: string
storageSecurityContext:
type: object
properties:
privileged:
type: boolean
format: boolean
selinux:
$ref: '#/components/schemas/SecurityContextSELinux'
dropCapabilities:
type: array
items:
type: string
addCapabilities:
type: array
items:
type: string
readOnlyRootFilesystem:
type: boolean
format: boolean
storageAlertDeployment:
type: object
properties:
id:
type: string
name:
type: string
type:
type: string
namespace:
type: string
labels:
type: object
additionalProperties:
type: string
clusterId:
type: string
clusterName:
type: string
containers:
type: array
items:
$ref: '#/components/schemas/AlertDeploymentContainer'
annotations:
type: object
additionalProperties:
type: string
inactive:
type: boolean
format: boolean
DeployDetectionResponseRun:
type: object
properties:
name:
type: string
type:
type: string
alerts:
type: array
items:
$ref: '#/components/schemas/storageAlert'
storageScope:
type: object
properties:
cluster:
type: string
namespace:
type: string
label:
$ref: '#/components/schemas/storageScopeLabel'
storageAlert:
type: object
properties:
id:
type: string
policy:
$ref: '#/components/schemas/storagePolicy'
lifecycleStage:
$ref: '#/components/schemas/storageLifecycleStage'
deployment:
$ref: '#/components/schemas/storageAlertDeployment'
violations:
type: array
items:
$ref: '#/components/schemas/AlertViolation'
processViolation:
$ref: '#/components/schemas/AlertProcessViolation'
enforcement:
$ref: '#/components/schemas/AlertEnforcement'
time:
type: string
format: date-time
firstOccurred:
type: string
format: date-time
state:
$ref: '#/components/schemas/storageViolationState'
snoozeTill:
type: string
format: date-time
PortConfigExposureLevel:
type: string
enum:
- UNSET
- EXTERNAL
- NODE
- INTERNAL
- HOST
default: UNSET
storageContainerRuntime:
type: string
enum:
- UNKNOWN_CONTAINER_RUNTIME
- DOCKER_CONTAINER_RUNTIME
- CRIO_CONTAINER_RUNTIME
default: UNKNOWN_CONTAINER_RUNTIME
AlertEnforcement:
type: object
properties:
action:
$ref: '#/components/schemas/storageEnforcementAction'
message:
type: string
AlertDeploymentContainer:
type: object
properties:
image:
$ref: '#/components/schemas/storageContainerImage'
name:
type: string
storageSeverity:
type: string
enum:
- UNSET_SEVERITY
- LOW_SEVERITY
- MEDIUM_SEVERITY
- HIGH_SEVERITY
- CRITICAL_SEVERITY
default: UNSET_SEVERITY
storageComparator:
type: string
enum:
- LESS_THAN
- LESS_THAN_OR_EQUALS
- EQUALS
- GREATER_THAN_OR_EQUALS
- GREATER_THAN
default: LESS_THAN
storageWhitelistDeployment:
type: object
properties:
name:
type: string
scope:
$ref: '#/components/schemas/storageScope'
ContainerConfigEnvironmentConfig:
type: object
properties:
key:
type: string
value:
type: string
envVarSource:
$ref: '#/components/schemas/EnvironmentConfigEnvVarSource'
storagePermissionPolicy:
type: object
properties:
permissionLevel:
$ref: '#/components/schemas/storagePermissionLevel'
description: K8S RBAC Permission level configuration.
storageContainerConfig:
type: object
properties:
env:
type: array
items:
$ref: '#/components/schemas/ContainerConfigEnvironmentConfig'
command:
type: array
items:
type: string
args:
type: array
items:
type: string
directory:
type: string
user:
type: string
uid:
type: string
format: int64
storageToleration:
type: object
properties:
key:
type: string
operator:
$ref: '#/components/schemas/storageTolerationOperator'
value:
type: string
taintEffect:
$ref: '#/components/schemas/storageTaintEffect'
storageLabelSelectorOperator:
type: string
enum:
- UNKNOWN
- IN
- NOT_IN
- EXISTS
- NOT_EXISTS
default: UNKNOWN
v1BuildDetectionRequest:
type: object
properties:
image:
$ref: '#/components/schemas/storageContainerImage'
imageName:
type: string
noExternalMetadata:
type: boolean
format: boolean
storageTaintEffect:
type: string
enum:
- UNKNOWN_TAINT_EFFECT
- NO_SCHEDULE_TAINT_EFFECT
- PREFER_NO_SCHEDULE_TAINT_EFFECT
- NO_EXECUTE_TAINT_EFFECT
default: UNKNOWN_TAINT_EFFECT
storageLabelSelector:
type: object
properties:
matchLabels:
type: object
additionalProperties:
type: string
description: This is actually a oneof, but we can't make it one due to backwards compatibility constraints.
requirements:
type: array
items:
$ref: '#/components/schemas/LabelSelectorRequirement'
title: 'Next available tag: 3'
storagePolicy:
type: object
properties:
id:
type: string
name:
type: string
description:
type: string
rationale:
type: string
remediation:
type: string
disabled:
type: boolean
format: boolean
categories:
type: array
items:
type: string
fields:
$ref: '#/components/schemas/storagePolicyFields'
lifecycleStages:
type: array
items:
$ref: '#/components/schemas/storageLifecycleStage'
whitelists:
type: array
items:
$ref: '#/components/schemas/storageWhitelist'
scope:
type: array
items:
$ref: '#/components/schemas/storageScope'
severity:
$ref: '#/components/schemas/storageSeverity'
enforcementActions:
type: array
items:
$ref: '#/components/schemas/storageEnforcementAction'
notifiers:
type: array
items:
type: string
lastUpdated:
type: string
format: date-time
storageImageNamePolicy:
type: object
properties:
registry:
type: string
remote:
type: string
tag:
type: string
storageContainerImage:
type: object
properties:
id:
type: string
title: These tags maintain backwards compatibiltiy with the previously embedded storage.Image
name:
$ref: '#/components/schemas/storageImageName'
notPullable:
type: boolean
format: boolean
storageResourcePolicy:
type: object
properties:
cpuResourceRequest:
$ref: '#/components/schemas/storageNumericalPolicy'
cpuResourceLimit:
$ref: '#/components/schemas/storageNumericalPolicy'
memoryResourceRequest:
$ref: '#/components/schemas/storageNumericalPolicy'
memoryResourceLimit:
$ref: '#/components/schemas/storageNumericalPolicy'
storageDeployment:
type: object
properties:
id:
type: string
name:
type: string
hash:
type: string
format: uint64
type:
type: string
namespace:
type: string
namespaceId:
type: string
replicas:
type: string
format: int64
labels:
type: object
additionalProperties:
type: string
podLabels:
type: object
additionalProperties:
type: string
labelSelector:
$ref: '#/components/schemas/storageLabelSelector'
created:
type: string
format: date-time
clusterId:
type: string
clusterName:
type: string
containers:
type: array
items:
$ref: '#/components/schemas/storageContainer'
annotations:
type: object
additionalProperties:
type: string
priority:
type: string
format: int64
inactive:
type: boolean
format: boolean
imagePullSecrets:
type: array
items:
type: string
serviceAccount:
type: string
automountServiceAccountToken:
type: boolean
format: boolean
hostNetwork:
type: boolean
format: boolean
tolerations:
type: array
items:
$ref: '#/components/schemas/storageToleration'
ports:
type: array
items:
$ref: '#/components/schemas/storagePortConfig'
stateTimestamp:
type: string
format: int64
title: 'Next available tag: 28'
AlertViolation:
type: object
properties:
message:
type: string
DEPRECATEDProcesses:
type: array
items:
$ref: '#/components/schemas/storageProcessIndicator'
securitySchemes:
ApiToken:
type: apiKey
in: header
name: Authorization
description: 'StackRox API token. Format: Bearer {token}'