schema/openapi.yaml
Rama main · réplica de lectura del repositorio original.
---
components:
schemas:
AgentCredentialRequest:
properties:
matchExpression:
pattern: \S
type: string
password:
pattern: \S
type: string
username:
pattern: \S
type: string
required:
- matchExpression
- username
- password
type: object
AgentRegistrationRequest:
properties:
callback:
pattern: \S
type: string
context:
additionalProperties:
type: string
type: object
credential:
$ref: '#/components/schemas/AgentCredentialRequest'
fillStrategy:
$ref: '#/components/schemas/DiscoveryFillStrategy'
nodes:
items:
$ref: '#/components/schemas/DiscoveryNodeRequest'
type: array
realm:
pattern: \S
type: string
required:
- realm
- callback
- credential
type: object
AggregateLockInfoResult:
properties:
count:
format: int64
type: integer
data:
type: string
required:
- data
- count
type: object
AggregateMethodResult:
properties:
count:
format: int64
type: integer
data:
type: string
required:
- data
- count
type: object
AggregateStackTraceResult:
properties:
count:
format: int64
type: integer
data:
items:
$ref: '#/components/schemas/StackFrame'
type: array
required:
- data
- count
type: object
AggregateThreadStateResult:
properties:
count:
format: int64
type: integer
data:
$ref: '#/components/schemas/ThreadState'
required:
- data
- count
type: object
AnalysisResult:
properties:
evaluation:
$ref: '#/components/schemas/Evaluation'
name:
type: string
score:
format: double
type: number
topic:
type: string
type: object
Annotations:
properties:
cryostat:
items:
$ref: '#/components/schemas/KeyValue'
type: array
platform:
items:
$ref: '#/components/schemas/KeyValue'
type: array
required:
- platform
- cryostat
type: object
AnnotationsRequest:
description: Annotations as accepted in request bodies
properties:
cryostat:
additionalProperties:
type: string
type: object
platform:
additionalProperties:
type: string
type: object
type: object
Annotations_Flat:
properties:
cryostat:
items:
$ref: '#/components/schemas/KeyValue_Flat'
type: array
platform:
items:
$ref: '#/components/schemas/KeyValue_Flat'
type: array
required:
- platform
- cryostat
type: object
ApplicationHealth:
properties:
build:
$ref: '#/components/schemas/BuildInfo'
cryostatVersion:
type: string
dashboardAvailable:
type: boolean
dashboardConfigured:
type: boolean
datasourceAvailable:
type: boolean
datasourceConfigured:
type: boolean
reportsAvailable:
type: boolean
reportsConfigured:
type: boolean
required:
- cryostatVersion
- build
- dashboardConfigured
- dashboardAvailable
- datasourceConfigured
- datasourceAvailable
- reportsConfigured
- reportsAvailable
type: object
ArchivedHeapDumpDirectory:
properties:
heapDumps:
items:
$ref: '#/components/schemas/HeapDump'
type: array
jvmId:
type: string
required:
- jvmId
- heapDumps
type: object
ArchivedRecording:
properties:
archivedTime:
format: int64
type: integer
downloadUrl:
type: string
jvmId:
type: string
metadata:
$ref: '#/components/schemas/Metadata'
name:
type: string
reportUrl:
type: string
size:
format: int64
type: integer
required:
- jvmId
- name
- downloadUrl
- reportUrl
- metadata
- size
- archivedTime
type: object
ArchivedRecordingDirectory:
properties:
connectUrl:
type: string
jvmId:
type: string
recordings:
items:
$ref: '#/components/schemas/ArchivedRecording'
type: array
required:
- connectUrl
- jvmId
- recordings
type: object
ArchivedThreadDumpDirectory:
properties:
jvmId:
type: string
threadDumps:
items:
$ref: '#/components/schemas/ThreadDump'
type: array
required:
- jvmId
- threadDumps
type: object
ArchivedUnifiedLogDirectory:
properties:
jvmId:
type: string
unifiedLogs:
items:
$ref: '#/components/schemas/UnifiedLog'
type: array
required:
- jvmId
- unifiedLogs
type: object
AsyncProfile:
properties:
duration:
format: int64
type: integer
id:
type: string
size:
format: int64
type: integer
startTime:
format: int64
type: integer
required:
- id
- startTime
- duration
- size
type: object
AsyncProfilerStatus:
properties:
availableEvents:
additionalProperties:
items:
type: string
type: array
type: object
currentProfile:
$ref: '#/components/schemas/StartProfileRequest'
status:
$ref: '#/components/schemas/ProfilerStatus'
required:
- status
- availableEvents
type: object
AuthResponse:
properties:
username:
type: string
required:
- username
type: object
BuildInfo:
properties:
git:
$ref: '#/components/schemas/GitInfo'
type: object
ContentType:
enum:
- NONE
- BYTES
- TIMESTAMP
- MILLIS
- NANOS
- TICKS
- ADDRESS
- OS_THREAD
- JAVA_THREAD
- STACK_TRACE
- CLASS
- PERCENTAGE
type: string
Credential:
properties:
id:
format: int64
type: integer
matchExpression:
$ref: '#/components/schemas/MatchExpression'
password:
pattern: \S
type: string
writeOnly: true
username:
pattern: \S
type: string
writeOnly: true
required:
- matchExpression
- username
- password
type: object
CredentialMatchResult:
properties:
id:
format: int64
type: integer
matchExpression:
$ref: '#/components/schemas/MatchExpression'
targets:
items:
$ref: '#/components/schemas/Target'
type: array
required:
- id
- matchExpression
- targets
type: object
CredentialTestResult:
enum:
- SUCCESS
- FAILURE
- NA
type: string
DashboardUrl:
properties:
grafanaDashboardUrl:
type: string
required:
- grafanaDashboardUrl
type: object
DatasourceUrl:
properties:
grafanaDatasourceUrl:
type: string
required:
- grafanaDatasourceUrl
type: object
Date:
examples:
- 2022-03-10
format: date
type: string
DeadlockInfo:
properties:
threads:
items:
$ref: '#/components/schemas/DeadlockedThread'
type: array
type: object
DeadlockedThread:
properties:
heldBy:
type: string
locks:
items:
$ref: '#/components/schemas/LockInfo'
type: array
stackTrace:
items:
$ref: '#/components/schemas/StackFrame'
type: array
threadName:
type: string
waitingForMonitor:
type: string
waitingForObject:
type: string
waitingForObjectType:
type: string
type: object
DiscoveryFillStrategy:
enum:
- NONE
- KUBERNETES
type: string
DiscoveryNode:
properties:
children:
items:
$ref: '#/components/schemas/DiscoveryNode'
type: array
id:
format: int64
type: integer
labels:
items:
$ref: '#/components/schemas/KeyValue'
type: array
name:
pattern: \S
type: string
nodeType:
pattern: \S
type: string
target:
$ref: '#/components/schemas/Target'
required:
- name
- nodeType
- labels
type: object
DiscoveryNodeRequest:
description: A discovery node as accepted in request bodies
properties:
children:
items:
$ref: '#/components/schemas/DiscoveryNodeRequest'
type: array
id:
format: int64
type: integer
labels:
additionalProperties:
type: string
type: object
name:
pattern: \S
type: string
nodeType:
pattern: \S
type: string
target:
$ref: '#/components/schemas/TargetRequest'
required:
- name
- nodeType
- labels
type: object
DiscoveryNode_Flat:
properties:
id:
format: int64
type: integer
labels:
items:
$ref: '#/components/schemas/KeyValue_Flat'
type: array
name:
pattern: \S
type: string
nodeType:
pattern: \S
type: string
target:
$ref: '#/components/schemas/Target_Flat'
required:
- name
- nodeType
- labels
type: object
DiscoveryPlugin:
properties:
builtin:
readOnly: true
type: boolean
callback:
format: uri
type: string
id:
$ref: '#/components/schemas/UUID'
realm:
$ref: '#/components/schemas/DiscoveryNode'
required:
- id
- realm
type: object
DiscoveryPlugin_Flat:
properties:
builtin:
readOnly: true
type: boolean
callback:
format: uri
type: string
id:
$ref: '#/components/schemas/UUID'
realm:
$ref: '#/components/schemas/DiscoveryNode_Flat'
required:
- id
- realm
type: object
DiscoveryPublicationRequest:
properties:
context:
additionalProperties:
type: string
type:
- object
- "null"
fillStrategy:
$ref: '#/components/schemas/DiscoveryFillStrategy'
enum:
- NONE
- KUBERNETES
type:
- string
- "null"
nodes:
items:
$ref: '#/components/schemas/DiscoveryNodeRequest'
type: array
type: object
Duration:
examples:
- P1D
format: duration
type: string
Evaluation:
properties:
explanation:
type: string
solution:
type: string
suggestions:
items:
$ref: '#/components/schemas/Suggestion'
type: array
summary:
type: string
type: object
Event:
properties:
clazz:
type: string
description:
type: string
fields:
items:
$ref: '#/components/schemas/Field'
type: array
id:
type: string
location:
$ref: '#/components/schemas/Location'
methodDescriptor:
type: string
methodName:
type: string
name:
type: string
parameters:
items:
$ref: '#/components/schemas/MethodParameter'
type: array
path:
type: string
recordStackTrace:
type: boolean
returnValue:
$ref: '#/components/schemas/MethodReturnValue'
useRethrow:
type: boolean
type: object
EventAvailability:
enum:
- AVAILABLE
- ENABLED
- DISABLED
- NONE
- UNKNOWN
type: string
Field:
properties:
contentType:
$ref: '#/components/schemas/ContentType'
converter:
type: string
description:
type: string
event:
$ref: '#/components/schemas/Event'
expression:
type: string
name:
type: string
relationKey:
type: string
type: object
GitInfo:
properties:
hash:
type: string
type: object
HeapDump:
properties:
downloadUrl:
type: string
heapDumpId:
type: string
jvmId:
type: string
lastModified:
format: int64
type: integer
metadata:
$ref: '#/components/schemas/Metadata'
size:
format: int64
type: integer
required:
- jvmId
- downloadUrl
- heapDumpId
- lastModified
- size
- metadata
type: object
JniInfo:
properties:
globalRefs:
format: int32
type: integer
globalRefsMemory:
format: int64
type: integer
weakRefs:
format: int32
type: integer
weakRefsMemory:
format: int64
type: integer
type: object
KeyValue:
description: |
A single entry of a string-to-string map. Cryostat emits such maps as arrays of
these objects, but accepts them in request bodies as plain JSON objects.
properties:
key:
pattern: \S
type: string
value:
type: string
required:
- key
- value
type: object
KeyValue_Flat:
description: |
A single entry of a string-to-string map. Cryostat emits such maps as arrays of
these objects, but accepts them in request bodies as plain JSON objects.
properties:
key:
pattern: \S
type: string
value:
type: string
required:
- key
- value
type: object
LinkedRecordingDescriptor:
properties:
archiveOnStop:
type: boolean
continuous:
type: boolean
downloadUrl:
type: string
duration:
format: int64
type: integer
id:
format: int64
type: integer
maxAge:
format: int64
type: integer
maxSize:
format: int64
type: integer
metadata:
$ref: '#/components/schemas/Metadata'
name:
type: string
remoteId:
format: int64
type: integer
reportUrl:
type: string
startTime:
format: int64
type: integer
state:
$ref: '#/components/schemas/RecordingState'
toDisk:
type: boolean
required:
- id
- remoteId
- state
- duration
- startTime
- archiveOnStop
- continuous
- toDisk
- maxSize
- maxAge
- name
- downloadUrl
- reportUrl
- metadata
type: object
Location:
enum:
- ENTRY
- EXIT
- WRAP
type: string
LockInfo:
properties:
className:
type: string
lockId:
type: string
operation:
$ref: '#/components/schemas/LockOperation'
ownerThreadId:
type: string
type: object
LockOperation:
enum:
- LOCKED
- WAITING_TO_LOCK
- WAITING_ON
- PARKING
- ELIMINATED
type: string
MappingResponse:
properties:
permission:
$ref: '#/components/schemas/Permission'
response:
$ref: '#/components/schemas/PermissionResponse'
required:
- permission
- response
type: object
MatchExpression:
description: |
A Common Expression Language snippet evaluated against a target JVM's properties.
examples:
- "true"
- target.alias == 'my-app'
type: string
MatchedExpression:
properties:
expression:
type: string
id:
format: int64
type: integer
targets:
items:
$ref: '#/components/schemas/Target'
type: array
required:
- expression
- targets
type: object
Metadata:
properties:
labels:
items:
$ref: '#/components/schemas/KeyValue'
type: array
required:
- labels
type: object
MetadataBody:
properties:
labels:
additionalProperties:
type: string
type: object
required:
- labels
type: object
MetadataRequest:
description: Recording metadata as accepted in request bodies
properties:
labels:
additionalProperties:
type: string
type: object
required:
- labels
type: object
MethodParameter:
properties:
contentType:
$ref: '#/components/schemas/ContentType'
converter:
type: string
description:
type: string
event:
$ref: '#/components/schemas/Event'
index:
format: int32
type: integer
name:
type: string
relationKey:
type: string
type: object
MethodReturnValue:
properties:
contentType:
$ref: '#/components/schemas/ContentType'
converter:
type: string
description:
type: string
event:
$ref: '#/components/schemas/Event'
name:
type: string
relationKey:
type: string
type: object
Permission:
properties:
action:
pattern: \S
type: string
resource:
pattern: \S
type: string
required:
- resource
- action
type: object
PermissionResponse:
properties:
authorized:
type: boolean
required:
- authorized
type: object
PluginRegistration:
properties:
env:
items:
$ref: '#/components/schemas/KeyValue'
type: array
id:
type: string
token:
type: string
required:
- id
- token
- env
type: object
PluginRegistrationRequest:
description: A discovery plugin registration or registration refresh
properties:
callback:
pattern: \S
type: string
id:
$ref: '#/components/schemas/UUID'
format: uuid
pattern: '[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}'
type: string
realm:
pattern: \S
type: string
token:
type: string
required:
- realm
- callback
type: object
ProbeResponse:
properties:
description:
type: string
name:
type: string
required:
- name
type: object
ProbeTemplate:
properties:
allowConverter:
type: boolean
allowToString:
type: boolean
classPrefix:
type: string
events:
items:
$ref: '#/components/schemas/Event'
type: array
fileName:
type: string
type: object
ProbeTemplateResponse:
properties:
name:
type: string
xml:
type: string
required:
- name
- xml
type: object
ProfilerStatus:
enum:
- STOPPED
- RUNNING
- UNKNOWN
type: string
RecordingState:
enum:
- NEW
- DELAYED
- RUNNING
- STOPPED
- CLOSED
type: string
ReportRule:
properties:
id:
type: string
name:
type: string
requiredEvents:
additionalProperties:
$ref: '#/components/schemas/EventAvailability'
type: object
topic:
type: string
required:
- id
- name
- topic
- requiredEvents
type: object
RequestData:
properties:
matchExpression:
type: string
targetIds:
items:
format: int64
type: integer
type: array
required:
- matchExpression
type: object
RevisionDetail:
properties:
entities:
additionalProperties:
items: {}
type: array
type: object
rev:
format: int64
type: integer
revtstmp:
format: int64
type: integer
username:
type: string
required:
- rev
- revtstmp
- entities
type: object
RevisionSummary:
properties:
rev:
format: int64
type: integer
revtstmp:
format: int64
type: integer
username:
type: string
required:
- rev
- revtstmp
type: object
RevisionsResponse:
properties:
revisions:
items:
$ref: '#/components/schemas/RevisionSummary'
type: array
totalCount:
format: int64
type: integer
required:
- revisions
- totalCount
type: object
Rule:
properties:
archivalPeriodSeconds:
format: int32
minimum: 0
type: integer
description:
type: string
enabled:
type: boolean
eventSpecifier:
pattern: \S
type: string
id:
format: int64
type: integer
initialDelaySeconds:
format: int32
minimum: 0
type: integer
matchExpression:
$ref: '#/components/schemas/MatchExpression'
maxAgeSeconds:
format: int32
minimum: -1
type: integer
maxSizeBytes:
format: int32
minimum: -1
type: integer
metadata:
$ref: '#/components/schemas/Metadata'
name:
pattern: \S
type: string
preservedArchives:
format: int32
minimum: 0
type: integer
required:
- name
- description
- matchExpression
- eventSpecifier
- archivalPeriodSeconds
- initialDelaySeconds
- preservedArchives
- maxAgeSeconds
- maxSizeBytes
- metadata
- enabled
type: object
RuleRequest:
description: An Automated Rule as accepted in request bodies
properties:
archivalPeriodSeconds:
format: int32
minimum: 0
type: integer
description:
type: string
enabled:
type: boolean
eventSpecifier:
pattern: \S
type: string
id:
format: int64
type: integer
initialDelaySeconds:
format: int32
minimum: 0
type: integer
matchExpression:
$ref: '#/components/schemas/MatchExpression'
maxAgeSeconds:
format: int32
minimum: -1
type: integer
maxSizeBytes:
format: int32
minimum: -1
type: integer
metadata:
$ref: '#/components/schemas/MetadataRequest'
name:
pattern: \S
type: string
preservedArchives:
format: int32
minimum: 0
type: integer
required:
- name
- description
- matchExpression
- eventSpecifier
- metadata
type: object
RuleUpdateRequest:
description: A partial update to an existing Automated Rule
properties:
archivalPeriodSeconds:
format: int32
minimum: 0
type: integer
description:
type: string
enabled:
type: boolean
eventSpecifier:
pattern: \S
type: string
initialDelaySeconds:
format: int32
minimum: 0
type: integer
matchExpression:
$ref: '#/components/schemas/MatchExpression'
maxAgeSeconds:
format: int32
minimum: -1
type: integer
maxSizeBytes:
format: int32
minimum: -1
type: integer
metadata:
$ref: '#/components/schemas/MetadataRequest'
name:
pattern: \S
type: string
preservedArchives:
format: int32
minimum: 0
type: integer
type: object
SerializableEventTypeInfo:
properties:
category:
items:
type: string
type: array
description:
type: string
name:
type: string
options:
additionalProperties:
$ref: '#/components/schemas/SerializableOptionDescriptor'
type: object
typeId:
type: string
required:
- typeId
- name
- description
- category
- options
type: object
SerializableOptionDescriptor:
properties:
defaultValue:
type: string
description:
type: string
name:
type: string
required:
- name
- description
- defaultValue
type: object
SmartTrigger:
properties:
ID:
type: string
firstMetTime:
$ref: '#/components/schemas/Date'
id:
type: string
invocationCountTarget:
format: int64
type: integer
recordingTemplateName:
type: string
simple:
type: boolean
state:
$ref: '#/components/schemas/TriggerState'
stopCondition:
type: string
stopDuration:
format: int64
type: integer
stopMetTime:
$ref: '#/components/schemas/Date'
targetDuration:
$ref: '#/components/schemas/Duration'
timeConditionFirstMet:
$ref: '#/components/schemas/Date'
timeStopConditionFirstMet:
$ref: '#/components/schemas/Date'
triggerCondition:
type: string
type: object
StackFrame:
properties:
className:
type: string
fileName:
type: string
lineNumber:
format: int32
type: integer
methodName:
type: string
nativeMethod:
type: boolean
type: object
StartProfileRequest:
properties:
duration:
format: int64
type: integer
events:
items:
type: string
type: array
id:
type: string
startTime:
format: int64
type: integer
required:
- startTime
- events
- duration
type: object
Suggestion:
properties:
name:
type: string
setting:
type: string
value:
type: string
type: object
Target:
properties:
agent:
readOnly: true
type: boolean
alias:
pattern: \S
type: string
annotations:
$ref: '#/components/schemas/Annotations'
connectUrl:
format: uri
type: string
id:
format: int64
type: integer
jvmId:
type: string
labels:
items:
$ref: '#/components/schemas/KeyValue'
type: array
required:
- connectUrl
- alias
- labels
- annotations
- agent
type: object
TargetRequest:
description: A target as accepted in request bodies
properties:
agent:
readOnly: true
type: boolean
alias:
pattern: \S
type: string
annotations:
$ref: '#/components/schemas/AnnotationsRequest'
connectUrl:
format: uri
type: string
id:
format: int64
type: integer
jvmId:
type: string
labels:
additionalProperties:
type: string
type: object
required:
- connectUrl
- alias
- labels
- annotations
type: object
TargetStub:
properties:
alias:
type: string
connectUrl:
format: uri
type: string
credential:
anyOf:
- $ref: '#/components/schemas/Credential'
- type: "null"
password:
type: string
username:
type: string
required:
- connectUrl
- alias
type: object
Target_Flat:
properties:
agent:
readOnly: true
type: boolean
alias:
pattern: \S
type: string
annotations:
$ref: '#/components/schemas/Annotations_Flat'
connectUrl:
format: uri
type: string
id:
format: int64
type: integer
jvmId:
type: string
labels:
items:
$ref: '#/components/schemas/KeyValue_Flat'
type: array
required:
- connectUrl
- alias
- labels
- annotations
- agent
type: object
Template:
properties:
description:
type: string
name:
type: string
provider:
type: string
type:
$ref: '#/components/schemas/TemplateType'
type: object
TemplateDTO:
properties:
description:
description: The template description
examples:
- A sample template
type: string
name:
description: The template name
examples:
- My_Template
pattern: \S
type: string
provider:
description: The template provider
examples:
- MyOrg
pattern: \S
type: string
type:
$ref: '#/components/schemas/TemplateType'
description: The template type
type: string
required:
- name
- description
- provider
- type
type: object
TemplateType:
enum:
- TARGET
- CUSTOM
- PRESET
type: string
ThreadDump:
properties:
downloadUrl:
type: string
jvmId:
type: string
lastModified:
format: int64
type: integer
metadata:
$ref: '#/components/schemas/Metadata'
size:
format: int64
type: integer
threadDumpId:
type: string
required:
- jvmId
- downloadUrl
- threadDumpId
- lastModified
- size
- metadata
type: object
ThreadDumpAnalysis:
properties:
aggregateLockInfo:
items:
$ref: '#/components/schemas/AggregateLockInfoResult'
type: array
aggregateStackTraces:
items:
$ref: '#/components/schemas/AggregateStackTraceResult'
type: array
aggregateThreadStates:
items:
$ref: '#/components/schemas/AggregateThreadStateResult'
type: array
deadlockInfos:
items:
$ref: '#/components/schemas/DeadlockInfo'
type: array
jniInfo:
$ref: '#/components/schemas/JniInfo'
jvmInfo:
type: string
runningMethods:
items:
$ref: '#/components/schemas/AggregateMethodResult'
type: array
specificFindings:
items:
$ref: '#/components/schemas/ThreadDumpAnalysisResult'
type: array
threads:
items:
$ref: '#/components/schemas/ThreadInfo'
type: array
required:
- aggregateThreadStates
- aggregateLockInfo
- aggregateStackTraces
- runningMethods
- threads
- specificFindings
type: object
ThreadDumpAnalysisResult:
properties:
explanation:
type: string
resultName:
type: string
score:
format: int32
type: integer
required:
- resultName
- explanation
- score
type: object
ThreadInfo:
properties:
additionalInfo:
type: string
carryingVirtualThreadId:
format: int64
type: integer
cpuTimeSec:
format: double
type: number
daemon:
type: boolean
elapsedTimeSec:
format: double
type: number
locks:
items:
$ref: '#/components/schemas/LockInfo'
type: array
name:
type: string
nativeId:
format: int64
type: integer
priority:
format: int32
type: integer
stackTrace:
items:
$ref: '#/components/schemas/StackFrame'
type: array
state:
$ref: '#/components/schemas/ThreadState'
threadId:
format: int64
type: integer
type: object
ThreadState:
enum:
- NEW
- RUNNABLE
- BLOCKED
- WAITING
- TIMED_WAITING
- TERMINATED
type: string
TriggerState:
enum:
- NEW
- WAITING_HIGH
- WAITING_LOW
- RECORDING_ACTIVE
- RECORDING_STOPPING
- COMPLETE
type: string
UUID:
format: uuid
pattern: '[a-fA-F0-9]{8}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{4}-[a-fA-F0-9]{12}'
type: string
UnifiedLog:
properties:
downloadUrl:
type: string
jvmId:
type: string
lastModified:
format: int64
type: integer
logId:
type: string
metadata:
$ref: '#/components/schemas/Metadata'
size:
format: int64
type: integer
required:
- jvmId
- lastModified
- size
- metadata
type: object
UnifiedLogStatus:
properties:
decorators:
type: string
enabled:
type: boolean
logFilePath:
type: string
what:
type: string
required:
- enabled
type: object
ViewList:
properties:
app:
items:
type: string
type: array
env:
items:
type: string
type: array
vm:
items:
type: string
type: array
required:
- vm
- env
- app
type: object
info:
contact:
email: cryostat-development@googlegroups.com
name: Cryostat Community
url: https://cryostat.io
description: Cloud-Native JDK Flight Recorder
license:
name: Apache 2.0
url: https://github.com/cryostatio/cryostat/blob/main/LICENSE
title: Cryostat API
version: 5.0.0-snapshot
openapi: 3.1.0
paths:
/api/beta/audit/export:
get:
parameters:
- in: query
name: endTime
schema:
format: int64
type: integer
- in: query
name: startTime
schema:
format: int64
type: integer
responses:
"200":
content:
application/json:
schema: {}
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Export Revisions
tags:
- Audit
/api/beta/audit/revisions:
get:
parameters:
- in: query
name: endTime
schema:
format: int64
type: integer
- in: query
name: page
schema:
default: 0
format: int32
type: integer
- in: query
name: pageSize
schema:
default: 50
format: int32
type: integer
- in: query
name: startTime
schema:
format: int64
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/RevisionsResponse'
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Get Revisions
tags:
- Audit
/api/beta/audit/revisions/{rev}:
get:
parameters:
- in: path
name: rev
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/RevisionDetail'
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Get Revision Detail
tags:
- Audit
/api/beta/audit/target_lineage/{jvmId}:
get:
parameters:
- in: path
name: jvmId
required: true
schema:
type: string
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/DiscoveryNode'
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Target Lineage By Jvm Id
tags:
- Audit
/api/beta/audit/targets/{jvmId}:
get:
parameters:
- in: path
name: jvmId
required: true
schema:
type: string
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/Target'
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Target By Jvm Id
tags:
- Audit
/api/beta/auth/check:
post:
requestBody:
content:
application/x-www-form-urlencoded:
schema:
properties:
permission:
type: string
type: object
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/PermissionResponse'
description: OK
"400":
description: Bad Request
summary: Check if the caller is authorized for the given permission.
tags:
- Permission Check
/api/beta/auth/mapping:
post:
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/MappingResponse'
type: array
description: OK
summary: Return the permission mappings for the current user
tags:
- Permission Check
/api/beta/auth/permissions:
get:
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/Permission'
type: array
description: OK
summary: Return an exhaustive list of permissions known to Cryostat
tags:
- Permission Check
/api/beta/diagnostics/fs/heapdumps:
get:
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ArchivedHeapDumpDirectory'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: List Fs Heap Dumps
tags:
- Diagnostics
/api/beta/diagnostics/fs/heapdumps/{jvmId}/{heapDumpId}:
delete:
parameters:
- in: path
name: heapDumpId
required: true
schema:
type: string
- in: path
name: jvmId
required: true
schema:
type: string
responses:
"204":
description: No Content
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Delete Heap Dump By Path
tags:
- Diagnostics
/api/beta/diagnostics/fs/threaddumps:
get:
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ArchivedThreadDumpDirectory'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: List Fs Thread Dumps
tags:
- Diagnostics
/api/beta/diagnostics/fs/threaddumps/{jvmId}/{threadDumpId}:
delete:
parameters:
- in: path
name: jvmId
required: true
schema:
type: string
- in: path
name: threadDumpId
required: true
schema:
type: string
responses:
"204":
description: No Content
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Delete Thread Dump
tags:
- Diagnostics
/api/beta/diagnostics/fs/unified-logs:
get:
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ArchivedUnifiedLogDirectory'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: List Fs Unified Logs
tags:
- Unified Logs
/api/beta/diagnostics/fs/unified-logs/{jvmId}/{logId}:
delete:
parameters:
- in: path
name: jvmId
required: true
schema:
type: string
- in: path
name: logId
required: true
schema:
type: string
responses:
"204":
description: No Content
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Delete Unified Log By Path
tags:
- Unified Logs
patch:
parameters:
- in: path
name: jvmId
required: true
schema:
type: string
- in: path
name: logId
required: true
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MetadataBody'
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/UnifiedLog'
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Patch Fs Unified Log Metadata
tags:
- Unified Logs
/api/beta/diagnostics/heapdump/download/{encodedKey}:
get:
parameters:
- in: path
name: encodedKey
required: true
schema:
type: string
- in: query
name: filename
schema:
type: string
responses:
"200":
content:
application/json:
schema: {}
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Handle Heap Dumps Storage Download
tags:
- Diagnostics
/api/beta/diagnostics/heapdump/upload/{jvmId}:
post:
parameters:
- in: path
name: jvmId
required: true
schema:
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
properties:
heapDump:
format: binary
type: string
jobId:
type: string
labels:
description: |
A JSON object of string key-value labels, sent as the raw text of
the form field.
examples:
- '{"key":"value"}'
type: string
type: object
required: true
responses:
"201":
description: Created
"400":
description: Bad Request
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Upload Heap Dump
tags:
- Diagnostics
/api/beta/diagnostics/targets/{jvmId}/heapdump/{heapDumpId}/analyze:
post:
parameters:
- in: path
name: heapDumpId
required: true
schema:
type: string
- in: path
name: jvmId
required: true
schema:
type: string
responses:
"200":
content:
application/json:
schema: {}
description: OK
"202":
content:
text/plain:
schema:
format: uuid
type: string
description: Heap dump analysis accepted; the body is the job ID
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Analyze Heap Dump
tags:
- Diagnostics
/api/beta/diagnostics/targets/{jvmId}/threaddump/{threadDumpId}/analyze:
post:
parameters:
- in: path
name: jvmId
required: true
schema:
type: string
- in: path
name: threadDumpId
required: true
schema:
type: string
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/ThreadDumpAnalysis'
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Analyze Thread Dump
tags:
- Diagnostics
/api/beta/diagnostics/targets/{targetId}/gc:
post:
description: |
Request the remote target to perform a garbage collection. The target JVM is free to ignore this
request. This is generally equivalent to a System.gc() call made within the target JVM.
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"201":
description: Created
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Initiate a garbage collection on the specified target
tags:
- Diagnostics
/api/beta/diagnostics/targets/{targetId}/heapdump:
get:
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/HeapDump'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Get Heap Dumps
tags:
- Diagnostics
post:
description: |
Request the remote target to perform a heap dump.
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
text/plain:
schema:
format: uuid
type: string
description: Heap dump requested; the body is the job ID
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Initiates a heap dump on the specified target
tags:
- Diagnostics
/api/beta/diagnostics/targets/{targetId}/heapdump/{heapDumpId}:
delete:
parameters:
- in: path
name: heapDumpId
required: true
schema:
type: string
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"204":
description: No Content
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Delete Heap Dump
tags:
- Diagnostics
/api/beta/diagnostics/targets/{targetId}/threaddump:
get:
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ThreadDump'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Get Thread Dumps
tags:
- Diagnostics
post:
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
- in: query
name: format
schema:
default: threadPrint
type: string
responses:
"200":
content:
text/plain:
schema:
format: uuid
type: string
description: Thread dump requested; the body is the job ID
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Thread Dump
tags:
- Diagnostics
/api/beta/diagnostics/targets/{targetId}/threaddump/{threadDumpId}:
delete:
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
- in: path
name: threadDumpId
required: true
schema:
type: string
responses:
"204":
description: No Content
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Delete Thread Dump
tags:
- Diagnostics
/api/beta/diagnostics/targets/{targetId}/unified-logging:
delete:
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"204":
description: No Content
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Disable Unified Logging
tags:
- Unified Logs
get:
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/UnifiedLogStatus'
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Unified Logging Status
tags:
- Unified Logs
patch:
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
- in: query
name: decorators
schema:
type: string
- in: query
name: what
schema:
type: string
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/UnifiedLog'
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Reconfigure Unified Logging
tags:
- Unified Logs
post:
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
- in: query
name: decorators
schema:
type: string
- in: query
name: what
schema:
type: string
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/UnifiedLog'
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Enable Unified Logging
tags:
- Unified Logs
/api/beta/diagnostics/targets/{targetId}/unified-logging/pull:
post:
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/UnifiedLog'
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Pull Unified Log
tags:
- Unified Logs
/api/beta/diagnostics/targets/{targetId}/unified-logs:
get:
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/UnifiedLog'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: List Unified Logs
tags:
- Unified Logs
/api/beta/diagnostics/targets/{targetId}/unified-logs/{logId}:
delete:
parameters:
- in: path
name: logId
required: true
schema:
type: string
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"204":
description: No Content
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Delete Unified Log
tags:
- Unified Logs
get:
parameters:
- in: path
name: logId
required: true
schema:
type: string
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
- in: query
name: filename
schema:
type: string
responses:
"200":
content:
application/json:
schema: {}
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Download Unified Log
tags:
- Unified Logs
patch:
parameters:
- in: path
name: logId
required: true
schema:
type: string
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/MetadataBody'
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/UnifiedLog'
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Patch Unified Log Metadata
tags:
- Unified Logs
/api/beta/diagnostics/threaddump/download/{encodedKey}:
get:
parameters:
- in: path
name: encodedKey
required: true
schema:
type: string
- in: query
name: filename
schema:
type: string
responses:
"200":
content:
application/json:
schema: {}
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Handle Thread Dumps Storage Download
tags:
- Diagnostics
/api/beta/diagnostics/unified-logs/download/{encodedKey}:
get:
parameters:
- in: path
name: encodedKey
required: true
schema:
type: string
- in: query
name: filename
schema:
type: string
responses:
"200":
content:
application/json:
schema: {}
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Handle Unified Log Storage Download
tags:
- Unified Logs
/api/beta/discovery/credential_exists:
post:
requestBody:
content:
application/x-www-form-urlencoded:
schema:
properties:
script:
type: string
type: object
multipart/form-data:
schema:
properties:
script:
type: string
type: object
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/Credential'
description: OK
"400":
description: Bad Request
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Check if a Credential already exists with an identical MatchExpression script.
tags:
- Discovery
/api/beta/fs/recordings:
get:
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ArchivedRecordingDirectory'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: List all archived recordings grouped by target
tags:
- Archived Recordings
/api/beta/fs/recordings/{jvmId}:
get:
parameters:
- in: path
name: jvmId
required: true
schema:
type: string
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ArchivedRecordingDirectory'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: List all archived recordings belonging to the specified target
tags:
- Archived Recordings
/api/beta/fs/recordings/{jvmId}/{filename}:
delete:
parameters:
- in: path
name: filename
required: true
schema:
type: string
- in: path
name: jvmId
required: true
schema:
type: string
responses:
"204":
description: No Content
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Delete an archived recording by name belonging to the specified target
tags:
- Archived Recordings
/api/beta/recording_analytics/{jvmId}/{filename}:
post:
parameters:
- in: path
name: filename
required: true
schema:
type: string
- in: path
name: jvmId
required: true
schema:
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
properties:
query:
type: string
type: object
required: true
responses:
"200":
content:
application/json:
schema:
items:
items:
type: string
type: array
type: array
description: OK
"400":
description: Bad Request
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Execute Query
tags:
- Jfr Analytics
/api/beta/recording_synthesis/{jvmId}:
post:
parameters:
- in: path
name: jvmId
required: true
schema:
type: string
- in: query
name: autoanalyze
schema:
default: false
type: boolean
- in: query
name: fromTimestamp
required: true
schema:
default: -1
format: int64
type: integer
- in: query
name: tag
schema:
type: string
- in: query
name: toTimestamp
required: true
schema:
default: -1
format: int64
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/ArchivedRecording'
description: OK
"202":
content:
text/plain:
schema:
format: uuid
type: string
description: Recording synthesis accepted; the body is the job ID
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Synthesize
tags:
- Recordings Synthesis
/api/beta/recordings/{connectUrl}/{filename}:
delete:
parameters:
- description: the connection URL associated with the target
in: path
name: connectUrl
required: true
schema:
type: string
- in: path
name: filename
required: true
schema:
type: string
responses:
"204":
description: No Content
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Delete an archived recording belonging to the specified target
tags:
- Archived Recordings
/api/beta/recordings/{jvmId}:
get:
parameters:
- in: path
name: jvmId
required: true
schema:
type: string
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ArchivedRecording'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: List archived recordings belonging to the specified target
tags:
- Archived Recordings
post:
description: |
Upload a JFR binary file into the archives, associating the archived recording with a particular
target JVM. This is primarily used by the Cryostat Agent for pushing harvested recording files.
parameters:
- in: path
name: jvmId
required: true
schema:
type: string
requestBody:
content:
application/x-www-form-urlencoded:
schema:
properties:
labels:
description: |
A JSON object of string key-value labels, sent as the raw text of
the form field.
examples:
- '{"key":"value"}'
type: string
maxFiles:
format: int32
type: integer
recording:
format: binary
type: string
type: object
required: true
responses:
"201":
description: Created
"400":
description: Bad Request
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Upload a JFR binary file to archives, associated with a particular target
tags:
- Archived Recordings
/api/beta/targets/{jvmId}/recordings/{filename}/view:
get:
parameters:
- in: path
name: filename
required: true
schema:
type: string
- in: path
name: jvmId
required: true
schema:
type: string
- in: query
name: cellHeight
required: false
schema:
format: int32
type: integer
- in: query
name: truncate
schema:
type: string
- in: query
name: verbose
schema:
default: false
type: boolean
- in: query
name: view
schema:
default: recording
type: string
- in: query
name: width
schema:
default: 120
format: int32
type: integer
responses:
"200":
content:
text/plain:
schema:
type: string
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: View
tags:
- Jfr View
/api/beta/targets/{jvmId}/recordings/{filename}/views:
get:
parameters:
- in: path
name: filename
required: true
schema:
type: string
- in: path
name: jvmId
required: true
schema:
type: string
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/ViewList'
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Views
tags:
- Jfr View
/api/beta/targets/{jvmId}/smart_triggers/sync:
post:
parameters:
- in: path
name: jvmId
required: true
schema:
type: string
requestBody:
content:
text/plain:
schema:
type: string
required: true
responses:
"201":
description: Created
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Sync Recordings
tags:
- Smart Triggers
/api/beta/targets/{targetId}/async-profiler:
get:
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/AsyncProfile'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: List existing async-profiler profiles on the specified target
tags:
- Async Profiler
post:
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/StartProfileRequest'
required: true
responses:
"200":
content:
text/plain:
schema:
type: string
description: OK
"400":
description: Bad Request
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Create a new async-profiler profile on the specified target
tags:
- Async Profiler
/api/beta/targets/{targetId}/async-profiler/status:
get:
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/AsyncProfilerStatus'
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Get specified target's async-profiler status
tags:
- Async Profiler
/api/beta/targets/{targetId}/async-profiler/{profileId}:
delete:
parameters:
- in: path
name: profileId
required: true
schema:
type: string
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"204":
description: No Content
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Delete an async-profiler profile from the specified target
tags:
- Async Profiler
get:
parameters:
- in: path
name: profileId
required: true
schema:
type: string
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
application/octet-stream:
schema:
format: binary
type: string
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Download an async-profiler binary file in JFR format
tags:
- Async Profiler
/api/beta/targets/{targetId}/smart_triggers:
get:
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/SmartTrigger'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Retrieve all currently active Smart Triggers for a target
tags:
- Smart Triggers
post:
description: |
Define a new Smart Trigger. A custom trigger definition must consist of both an expression
that defines the overall trigger condition and the name of an event template that is used
for the JFR Recording. The entire trigger expression must be enclosed in square brackets,
with the recording template name specified after a ~. For an example definition:
[ProcessCpuLoad > 0.2 ; TargetDuration > duration("30s")]~profile
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/x-www-form-urlencoded:
schema:
properties:
definition:
type: string
type: object
required: true
responses:
"201":
description: Created
"400":
description: Bad Request
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Define a new Smart Trigger for a target
tags:
- Smart Triggers
/api/beta/targets/{targetId}/smart_triggers/{uuid}:
delete:
description: |
Delete an active Smart Trigger. A custom trigger definition must consist of both an expression
that defines the overall trigger condition and the name of an event template that is used
for the JFR Recording. The entire trigger expression must be enclosed in square brackets,
with the recording template name specified after a ~. For an example definition:
[ProcessCpuLoad > 0.2 ; TargetDuration > duration("30s")]~profile
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
- in: path
name: uuid
required: true
schema:
type: string
responses:
"204":
description: No Content
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Delete a currently active Smart Trigger for a target
tags:
- Smart Triggers
/api/v4.1/metrics/reports:
get:
description: |
Retrieve the latest aggregate report data across all targets with recent automated analysis reports
scores. These are multi-dimensional metrics in Prometheus format.
parameters:
- in: query
name: minScore
schema:
default: -1.0
format: double
type: number
responses:
"200":
content:
text/plain:
schema:
items:
type: string
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Retrieve the latest aggregate report data
tags:
- Analysis Report Aggregator
/api/v4.1/metrics/reports/{jvmId}:
get:
description: |
Retrieve the latest aggregate report data for a given target's recent automated analysis reports
scores. These are multi-dimensional metrics in Prometheus format.
parameters:
- in: path
name: jvmId
required: true
schema:
type: string
responses:
"200":
content:
text/plain:
schema:
type: string
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Retrieve the latest aggregate report data for the specified target
tags:
- Analysis Report Aggregator
/api/v4.1/reports_rules:
get:
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ReportRule'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: List Report Rules
tags:
- Reports
/api/v4.1/targets/{targetId}/reports:
get:
description: |
Get the current cached automated analysis report for the specified target, if any. If no such
report currently exists for the specified target then the response will be an HTTP 404 Not Found,
and automated analysis report generation will not be triggered.
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
application/json:
schema:
additionalProperties:
$ref: '#/components/schemas/AnalysisResult'
type: object
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Retrieve current automated analysis report for a target
tags:
- Reports
post:
description: |
Composite action that 1) creates a Snapshot active recording on the specified target, 2) archives
that Snapshot immediately, 3) performs automated analysis report generation on the archived file.
The response will include a Location header pointing the client to an endpoint where the report can
be retrieved, which may require the client to wait for a Job UUID notification.
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
- in: query
name: clean
schema:
default: true
type: boolean
responses:
"202":
content:
text/plain:
schema:
format: uuid
type: string
description: Target analysis accepted; the body is the job ID
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Perform "target analysis" on the specified target
tags:
- Reports
/api/v4.2/discovery/{id}:
post:
description: |
Using its plugin ID and current token, a discovery plugin uses this endpoint to publish a JSON
request body containing a list of discovery nodes. The discovery plugin itself is a Realm node in
the overall discovery tree, so the published list of nodes here will replace the plugin Realm
node's list of children.
parameters:
- in: path
name: id
required: true
schema:
$ref: '#/components/schemas/UUID'
- in: header
name: Cryostat-Discovery-Authentication
schema:
type: string
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/DiscoveryPublicationRequest'
required: true
responses:
"201":
description: Created
"400":
description: Bad Request
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Publish updated target discovery information
tags:
- Discovery
/api/v4.3/discovery/agents:
post:
description: |
Register a Cryostat Agent as a discovery plugin, create its associated Stored Credential, and
publish its target nodes in one request. This endpoint is intentionally Agent-specific; the
general Discovery Plugin registration and publication endpoints remain available for other
Discovery Plugin implementations.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/AgentRegistrationRequest'
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/PluginRegistration'
description: OK
"400":
description: Bad Request
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Register and publish a Cryostat Agent
tags:
- Discovery
/api/v4.3/targets/{targetId}/recordings_sync:
post:
description: Reconcile Cryostat's active recording model with the recordings present on the target.
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"204":
description: Active recordings synchronized
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Resynchronize active recordings on the specified target
tags:
- Recording Sync
/api/v4/activedownload/{id}:
get:
description: |
Given a recording ID and a remote recording ID within that target, Cryostat will open a remote
connection to the target and pipe back a data stream containing the Flight Recording binary file
format for that recording. The client can feed this data to other tooling which ingests the JFR
binary file format.
parameters:
- in: path
name: id
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
application/octet-stream:
schema:
format: binary
type: string
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Download a Flight Recording binary file
tags:
- Active Recordings Download
/api/v4/auth:
post:
description: |
In modern Cryostat deployments it is customary to deploy Cryostat behind an authenticating reverse
proxy, so authentication is not actually handled by Cryostat itself. This endpoint is used by the
Cryostat Web UI client to send an authenticated client request, including some authentication
headers, to the Cryostat server so that it can extract information about the logged-in user. The
response contains the current user's username if it can be determined, or else an empty string.
This is only used for display in the Web UI. API clients do not need to use this endpoint.
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/AuthResponse'
description: OK
summary: Authenticate to the Cryostat server
tags:
- Auth
/api/v4/credentials:
get:
description: |
Returns a list of match results. A match result includes the Stored Credential's ID,
its Match Expression, and a list of currently discovered Targets which match that expression
and are therefore candidates for Cryostat to select this Credential.
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/CredentialMatchResult'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: List information about all of the available Stored Credentials.
tags:
- Credentials
post:
description: |
Define a new Stored Credential. Requires a match expression which defines which targets require
this credential, and the username and password to use to pass authentication checks on those
targets. Stored Credentials are stored in an encrypted keyring using symmetric encryption and an
encryption key configured on the Cryostat database.
requestBody:
content:
application/x-www-form-urlencoded:
schema:
properties:
matchExpression:
type: string
password:
type: string
username:
type: string
type: object
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/Credential'
description: OK
"400":
description: Bad Request
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Define a new Stored Credential
tags:
- Credentials
/api/v4/credentials/test/{targetId}:
post:
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/x-www-form-urlencoded:
schema:
properties:
password:
type: string
username:
type: string
type: object
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/CredentialTestResult'
description: OK
"400":
description: Bad Request
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Test if the supplied username/password are valid credentials for the specified target.
tags:
- Credentials
/api/v4/credentials/{id}:
delete:
parameters:
- in: path
name: id
required: true
schema:
format: int64
type: integer
responses:
"204":
description: No Content
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Delete a Stored Credential
tags:
- Credentials
get:
description: |
Get match result information about a specific Stored Credential. A match result includes the Stored
Credential's ID, its Match Expression, and a list of currently discovered Targets which match that
expression and are therefore candidates for Cryostat to select this Credential.
parameters:
- in: path
name: id
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/CredentialMatchResult'
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Get information about a Stored Credential
tags:
- Credentials
/api/v4/discovery:
get:
parameters:
- in: query
name: mergeRealms
schema:
default: false
type: boolean
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/DiscoveryNode'
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Retrieve the entire discovery tree.
tags:
- Discovery
post:
description: |
Register a new discovery plugin, or refresh an existing plugin's registration and generate a new
token. New registrations require the realm and callback fields. Registration refreshers
additionally require the id and token fields, which are supplied in the response to the original
registration.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/PluginRegistrationRequest'
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/PluginRegistration'
description: OK
"400":
description: Bad Request
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Register as a new discovery plugin or refresh existing registration
tags:
- Discovery
/api/v4/discovery/{id}:
delete:
description: |
Delete the plugin's registration along with its discovery Realm node and all of its children. This
is used when a discovery plugin is shutting down.
parameters:
- in: path
name: id
required: true
schema:
$ref: '#/components/schemas/UUID'
- in: header
name: Cryostat-Discovery-Authentication
schema:
type: string
responses:
"204":
description: No Content
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Delete the given plugin's registration
tags:
- Discovery
get:
description: |
Endpoint for discovery plugins to check their own current registration status, ie. whether their
registration ID is still known and their current token is still valid.
parameters:
- in: path
name: id
required: true
schema:
$ref: '#/components/schemas/UUID'
- in: header
name: Cryostat-Discovery-Authentication
schema:
type: string
responses:
"204":
description: No Content
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Endpoint for discovery plugins to check their own registration status
tags:
- Discovery
post:
description: |
Using its plugin ID and current token, a discovery plugin uses this endpoint to publish a JSON
request body containing a list of discovery nodes. The discovery plugin itself is a Realm node in
the overall discovery tree, so the published list of nodes here will replace the plugin Realm
node's list of children.
parameters:
- in: path
name: id
required: true
schema:
$ref: '#/components/schemas/UUID'
- in: header
name: Cryostat-Discovery-Authentication
schema:
type: string
requestBody:
content:
application/json:
schema:
items:
$ref: '#/components/schemas/DiscoveryNodeRequest'
type: array
required: true
responses:
"201":
description: Created
"400":
description: Bad Request
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Publish updated target discovery information
tags:
- Discovery
/api/v4/discovery_plugins:
get:
description: |
Retrieve a list of currently registered discovery plugins only, not including their subtrees.
parameters:
- in: query
name: realm
schema:
type: string
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/DiscoveryPlugin_Flat'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: List currently registered discovery plugins
tags:
- Discovery
/api/v4/discovery_plugins/{id}:
get:
description: |
Retrieve information about a specific discovery plugin, including its discovery Realm node and
subtree.
parameters:
- in: path
name: id
required: true
schema:
$ref: '#/components/schemas/UUID'
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/DiscoveryPlugin'
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Retrieve a specific discovery plugin
tags:
- Discovery
/api/v4/download/{encodedKey}:
get:
description: |
Get a download URL for an archived recording. The response will be an HTTP redirect with a Location
header pointing to the location where the client can download the recording JFR binary file.
parameters:
- in: path
name: encodedKey
required: true
schema:
type: string
- in: query
name: filename
schema:
type: string
responses:
"200":
content:
application/json:
schema: {}
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Get a download URL for an archived recording
tags:
- Archived Recordings
/api/v4/event_templates:
get:
description: |
Retrieve a list of templates available on this Cryostat server. These templates can be applied to
recordings started on any discovered target, but any event configurations within the template which
reference events that do not exist on the target will be ignored.
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/TemplateDTO'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: List server event templates
tags:
- Event Templates
post:
description: |
Upload a new custom event template to the server. This must be in OpenJDK .jfc (XML) format.
requestBody:
content:
application/x-www-form-urlencoded:
schema:
properties:
template:
format: binary
type: string
type: object
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/TemplateDTO'
description: OK
"400":
description: Bad Request
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Upload a custom event template
tags:
- Event Templates
/api/v4/event_templates/{templateName}:
delete:
description: |
Delete a custom event template from the server. Only previously uploaded custom event templates can
be deleted.
parameters:
- in: path
name: templateName
required: true
schema:
type: string
responses:
"204":
description: No Content
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Delete a custom event template
tags:
- Event Templates
/api/v4/event_templates/{templateType}:
get:
parameters:
- in: path
name: templateType
required: true
schema:
type: string
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/TemplateDTO'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: List server event templates of the given type
tags:
- Event Templates
/api/v4/event_templates/{templateType}/{templateName}:
get:
description: |
Get the .jfc (XML) file definition for the given server event template. This is the same type of
event configuration file that ships with OpenJDK distributions.
parameters:
- in: path
name: templateName
required: true
schema:
type: string
- in: path
name: templateType
required: true
schema:
type: string
responses:
"200":
content:
application/xml:
schema:
type: string
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Get a specific event template
tags:
- Event Templates
/api/v4/grafana/{encodedKey}:
post:
description: |
Upload an archived recording to the jfr-datasource for later online analysis in the associated
Grafana dashboard.
parameters:
- in: path
name: encodedKey
required: true
schema:
type: string
responses:
"200":
content:
text/plain:
schema:
format: uuid
type: string
description: Grafana upload requested; the body is the job ID
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Upload an archived recording to Grafana for online analysis
tags:
- Archived Recordings
/api/v4/grafana_dashboard_url:
get:
description: |
Returns the URL for the associated Grafana dashboard instance. If there is an internally-accessible
(for Cryostat) URL and an externally-accessible URL (for users) URL, the externally-accessible URL
is preferred. If neither are configured then the response is an HTTP 400 Bad Request.
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/DashboardUrl'
description: OK
summary: Return the URL which users can visit to access the associated Grafana dashboard instance.
tags:
- Health
/api/v4/grafana_datasource_url:
get:
description: |
Returns the URL for the jfr-datasource instance which Cryostat is configured to use. This datasource
accepts JFR file uploads from Cryostat and allows the Grafana dashboard to perform queries on the
data within the recording file.
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/DatasourceUrl'
description: OK
summary: Return the URL to the associated jfr-datasource instance.
tags:
- Health
/api/v4/logout:
post:
deprecated: true
responses:
"200":
content:
application/json:
schema: {}
description: OK
summary: |
OAuth2 sign out. Invalidate the current user session.
Clients should directly visit the /oauth2/sign_out endpoint rather than relying on this endpoint
and its redirect response.
tags:
- Auth
/api/v4/matchExpressions:
get:
description: |
Retrieve a list of all currently defined Match Expressions. These objects cannot be created
independently in the current API definition, so each of these expressions will be associated with
an Automated Rule or Stored Credential.
responses:
"200":
content:
application/json:
schema:
items:
additionalProperties: {}
type: object
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Retrieve a list of all currently defined Match Expressions
tags:
- Match Expressions
post:
description: |
Given a list of Target IDs, retrieve each Target instance from the database, then return the list
filtered by the Targets which satisfy the Match Expression. If a given ID does not exist in the
database then the whole request will fail. The expression must evaluate to a boolean value for each
target. The match expression will not be stored.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RequestData'
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/MatchedExpression'
description: OK
"400":
description: Bad Request
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Test a MatchExpression against a list of Targets
tags:
- Match Expressions
/api/v4/matchExpressions/{id}:
get:
parameters:
- in: path
name: id
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/MatchedExpression'
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Retrieve a single Match Expression
tags:
- Match Expressions
/api/v4/probes:
get:
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ProbeTemplateResponse'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: List defined probe templates
tags:
- JMC Agent Templates
post:
description: |2
Create a probe template. This requires a probe template file upload in XML format. See
https://github.com/openjdk/jmc/blob/master/agent/README.md and
https://github.com/openjdk/jmc/blob/master/agent/src/main/resources/org/openjdk/jmc/agent/impl/jfrprobes_schema.xsd
for more information about this file format.
requestBody:
content:
application/x-www-form-urlencoded:
schema:
properties:
name:
type: string
probeTemplate:
format: binary
type: string
type: object
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/ProbeTemplate'
description: OK
"400":
description: Bad Request
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Create a probe template
tags:
- JMC Agent Templates
/api/v4/probes/{probeTemplateName}:
delete:
parameters:
- in: path
name: probeTemplateName
required: true
schema:
type: string
responses:
"204":
description: No Content
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Delete the specified probe template
tags:
- JMC Agent Templates
get:
parameters:
- in: path
name: probeTemplateName
required: true
schema:
type: string
responses:
"200":
content:
application/xml:
schema:
type: string
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Get a specific probe template
tags:
- JMC Agent Templates
/api/v4/recordings:
get:
description: |
List all archived recordings from all targets, including (re-)uploaded files.
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ArchivedRecording'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: List all archived recordings
tags:
- Archived Recordings
post:
description: |
(Re-)upload a JFR binary file into the archives. This allows for the restoration of archived files
after they have been otherwise removed, or for portability across Cryostat instances or between
Cryostat version upgrades. This can also be used to upload JFR files which were not collected by
Cryostat, so that Cryostat can be used to perform online analysis of the file.
requestBody:
content:
application/x-www-form-urlencoded:
schema:
properties:
labels:
description: |
A JSON object of string key-value labels, sent as the raw text of
the form field.
examples:
- '{"key":"value"}'
type: string
recording:
format: binary
type: string
type: object
required: true
responses:
"200":
content:
application/json:
schema:
additionalProperties: {}
type: object
description: OK
"400":
description: Bad Request
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Upload a JFR binary file to archives
tags:
- Archived Recordings
/api/v4/recordings/{filename}:
delete:
deprecated: true
parameters:
- in: path
name: filename
required: true
schema:
type: string
responses:
"204":
description: No Content
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Delete an archived recording by filename
tags:
- Archived Recordings
/api/v4/reports/{encodedKey}:
get:
description: |
Given an encoded key from another endpoint, request an actual automated analysis report. If the
requested report already exists in one of the tiered caching layers then the report will be
directly returned as a JSON response body. If the report does not yet exist then the response will
contain a Job UUID as a plain text response body. Cryostat will emit a WebSocket notification later
using the same Job UUID to indicate that the report generation has been completed and the document
is now available. The client may then re-issue a request to this endpoint with the same encoded key
to retrieve the report document.
parameters:
- in: path
name: encodedKey
required: true
schema:
type: string
- in: query
name: filter
schema:
default: ""
type: string
responses:
"200":
content:
application/json:
schema: {}
description: OK
"202":
content:
text/plain:
schema:
format: uuid
type: string
description: Report generation accepted; the body is the job ID
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Get an automated analysis report
tags:
- Reports
/api/v4/rules:
get:
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/Rule'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: List all Automated Rules
tags:
- Rules
post:
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RuleRequest'
application/x-www-form-urlencoded:
schema:
properties:
archivalPeriodSeconds:
format: int32
type: integer
description:
type: string
enabled:
type: boolean
eventSpecifier:
type: string
initialDelaySeconds:
format: int32
type: integer
matchExpression:
type: string
maxAgeSeconds:
format: int32
type: integer
maxSizeBytes:
format: int32
type: integer
metadata:
type:
- string
- "null"
name:
type: string
preservedArchives:
format: int32
type: integer
type: object
multipart/form-data:
schema:
properties:
archivalPeriodSeconds:
format: int32
type: integer
description:
type: string
enabled:
type: boolean
eventSpecifier:
type: string
initialDelaySeconds:
format: int32
type: integer
matchExpression:
type: string
maxAgeSeconds:
format: int32
type: integer
maxSizeBytes:
format: int32
type: integer
metadata:
type:
- string
- "null"
name:
type: string
preservedArchives:
format: int32
type: integer
type: object
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/Rule'
description: OK
"400":
description: Bad Request
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Create a new Automated Rule
tags:
- Rules
/api/v4/rules/{name}:
delete:
parameters:
- in: path
name: name
required: true
schema:
type: string
- in: query
name: clean
schema:
default: false
type: boolean
responses:
"204":
description: No Content
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Delete an Automated Rule by name
tags:
- Rules
get:
parameters:
- in: path
name: name
required: true
schema:
type: string
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/Rule'
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Get an Automated Rule by name
tags:
- Rules
patch:
description: |
Update Automated Rule parameters, such as whether the rule is currently active or not.
parameters:
- in: path
name: name
required: true
schema:
type: string
- in: query
name: clean
schema:
default: false
type: boolean
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/RuleUpdateRequest'
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/Rule'
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Update an Automated Rule
tags:
- Rules
/api/v4/targets:
get:
description: |
Get a list of the currently discovered targets. These are essentialy the same as the leaf nodes of
the discovery tree. See 'GET /api/v4/discovery'.
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/Target'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: List currently discovered targets
tags:
- Targets
post:
description: |
Create a target definition given a JSON request body target stub. The target stub must contain the
connectUrl and alias, and optionally contain a username and password to create a Stored Credential
associated with this target. The dryrun parameter can be used to perform this operation as a check,
to verify if such a target could be created (no connectUrl conflict and acceptable credentials).
parameters:
- in: query
name: dryrun
schema:
type: boolean
- in: query
name: storeCredentials
schema:
type: boolean
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/TargetStub'
application/x-www-form-urlencoded:
schema:
properties:
alias:
type: string
connectUrl:
format: uri
type: string
password:
type: string
username:
type: string
type: object
multipart/form-data:
schema:
properties:
alias:
type: string
connectUrl:
format: uri
type: string
password:
type: string
username:
type: string
type: object
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/Target'
description: OK
"400":
description: Bad Request
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Create a target definition
tags:
- Custom Discovery
/api/v4/targets/{id}:
delete:
description: |
Delete the specified target by ID. Only allows deletion of targets that were defined by the same
Custom Target discovery API. Other targets must be removed by the discovery mechanisms which
discovered them.
parameters:
- in: path
name: id
required: true
schema:
format: int64
type: integer
responses:
"204":
description: No Content
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Delete the specified target
tags:
- Custom Discovery
get:
description: |
Get details about a particular target given its ID.
parameters:
- in: path
name: id
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/Target'
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Get a target by ID
tags:
- Targets
/api/v4/targets/{id}/event_templates:
get:
description: |
Retrieve a list of event templates available on the given target when starting recordings on the
same target. This includes all of the server's available templates, plus the templates available
specifically from the target (ex. within /usr/lib/jvm/java/lib/jfr).
parameters:
- in: path
name: id
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/Template'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Retrieve a list of event templates available on the given target
tags:
- Target Event Templates
/api/v4/targets/{id}/event_templates/{templateType}/{templateName}:
get:
description: |
Get the .jfc (XML) file definition for the given target event template.
parameters:
- in: path
name: id
required: true
schema:
format: int64
type: integer
- in: path
name: templateName
required: true
schema:
type: string
- in: path
name: templateType
required: true
schema:
$ref: '#/components/schemas/TemplateType'
responses:
"200":
content:
application/xml:
schema:
type: string
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Get a specific event template
tags:
- Target Event Templates
/api/v4/targets/{id}/events:
get:
description: |
Retrieve a list of JFR event types registered within the given target. This will include all
built-in JFR types emitted by the target JVM, as well as custom event types specific to that
target JVM if they are correctly registered. Custom event types, or event types emitted by plugins
and extensions, may not always appear in this list.
parameters:
- in: path
name: id
required: true
schema:
format: int64
type: integer
- in: query
name: q
schema:
type: string
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/SerializableEventTypeInfo'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: List JFR event types registered within the given target
tags:
- Events
/api/v4/targets/{id}/probes:
delete:
parameters:
- in: path
name: id
required: true
schema:
format: int64
type: integer
responses:
"204":
description: No Content
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Remove all loaded probes from the specified target
tags:
- JMC Agent Probes
get:
parameters:
- in: path
name: id
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/ProbeResponse'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: List loaded probes on the specified target
tags:
- JMC Agent Probes
/api/v4/targets/{id}/probes/{probeTemplateName}:
post:
description: |
Activate a probe template (specified by template name) on the specified target (specified by ID).
parameters:
- in: path
name: id
required: true
schema:
format: int64
type: integer
- in: path
name: probeTemplateName
required: true
schema:
type: string
responses:
"201":
description: Created
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Activate a probe template on the specified target
tags:
- JMC Agent Probes
/api/v4/targets/{targetId}/recordingOptions:
get:
description: |
Retrieve a map of the current options for the specified target.
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
application/json:
schema:
additionalProperties: {}
type: object
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Get the current set of options for the specified target
tags:
- Recording Options
patch:
description: |
Set default recording options for the specified target. These options will be applied to any
recordings started on this target if no override values are specified when the recording is
created.
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/x-www-form-urlencoded:
schema:
properties:
maxAge:
type: string
maxSize:
type: string
toDisk:
type: string
type: object
required: true
responses:
"200":
content:
application/json:
schema:
additionalProperties: {}
type: object
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Update the recording options for the specified target
tags:
- Recording Options
/api/v4/targets/{targetId}/recordings:
get:
description: |
Retrieve a list of active recordings currently present on the specified target. This may initiate
a new remote connection to the target to update Cryostat's model of available recordings.
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
application/json:
schema:
items:
$ref: '#/components/schemas/LinkedRecordingDescriptor'
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: List active recordings on the specified target
tags:
- Active Recordings
post:
description: |
Create a new Flight Recording on the specified target. The recording will be immediately started
and begin capturing Flight Recording data.
The recording must be given a name (unique within the
target). An event specifier string must be included, which follows the format
"template={name},(type={type})". The type parameter is optional and the template name is required.
See the Event Templates API for more information about the values that can be used here.
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
requestBody:
content:
application/x-www-form-urlencoded:
schema:
properties:
archiveOnStop:
type:
- boolean
- "null"
asprofEvents:
items:
type: string
type:
- array
- "null"
duration:
format: int64
type:
- integer
- "null"
events:
type: string
maxAge:
format: int64
type:
- integer
- "null"
maxSize:
format: int64
type:
- integer
- "null"
metadata:
type:
- string
- "null"
recordingName:
type: string
replace:
type:
- string
- "null"
restart:
deprecated: true
type:
- boolean
- "null"
toDisk:
type:
- boolean
- "null"
type: object
required: true
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/LinkedRecordingDescriptor'
description: OK
"400":
description: Bad Request
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Start a new recording on the specified target
tags:
- Active Recordings
/api/v4/targets/{targetId}/recordings/{remoteId}:
delete:
description: |
Delete a recording from the specified target. This will remove it both from Cryostat's database
as well as remove the recording and release all resources in the remote target JVM.
parameters:
- in: path
name: remoteId
required: true
schema:
format: int64
type: integer
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"204":
description: No Content
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Delete a recording from the specified target
tags:
- Active Recordings
get:
description: |
Given a recording ID and a remote recording ID within that target, Cryostat will open a remote
connection to the target and pipe back a data stream containing the Flight Recording binary file
format for that recording. The client can feed this data to other tooling which ingests the JFR
binary file format.
parameters:
- in: path
name: remoteId
required: true
schema:
format: int64
type: integer
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
application/octet-stream:
schema:
format: binary
type: string
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Download a Flight Recording binary file
tags:
- Active Recordings
patch:
description: |
Remote recordings can be stopped by sending the request body "stop", or copied to archives by
sending the request body "save". The body is case-insensitive.
parameters:
- in: path
name: remoteId
required: true
schema:
format: int64
type: integer
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
requestBody:
content:
text/plain:
schema:
type: string
required: true
responses:
"200":
content:
text/plain:
schema:
format: uuid
type: string
description: Recording archival requested; the body is the job ID for save
"204":
description: Recording stopped; the response has no body
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Update a remote recording on the specified target
tags:
- Active Recordings
/api/v4/targets/{targetId}/recordings/{remoteId}/upload:
post:
description: |
Upload the current data stream of the specified recording to the jfr-datasource for online analysis
in the associated Grafana dashboard.
parameters:
- in: path
name: remoteId
required: true
schema:
format: int64
type: integer
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
text/plain:
schema:
format: uuid
type: string
description: Grafana upload requested; the body is the job ID
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Upload a recording for analysis in Grafana dashboard
tags:
- Active Recordings
/api/v4/targets/{targetId}/reports/{recordingId}:
get:
description: |
Request an automated analysis report for a particular active recording on the specified target. If
such a report already exists it will be returned directly as a JSON response body. If the report
does not yet exist then an asynchronous task for it will be started, and a Job UUID will be
sent as the plaintext response body.
parameters:
- in: path
name: recordingId
required: true
schema:
format: int64
type: integer
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
- in: query
name: filter
schema:
default: ""
type: string
responses:
"200":
content:
application/json:
schema: {}
description: OK
"202":
content:
text/plain:
schema:
format: uuid
type: string
description: Report generation accepted; the body is the job ID
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Get an automated analysis report for a particular recording on the specified target
tags:
- Reports
/api/v4/targets/{targetId}/snapshot:
post:
parameters:
- in: path
name: targetId
required: true
schema:
format: int64
type: integer
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/LinkedRecordingDescriptor'
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: Create a JFR Snapshot on the specified target
tags:
- Snapshots
/api/v4/tls/certs:
get:
description: |
In addition to the standard system/OpenJDK certificate trust store, Cryostat can be configured to
trust additional certificates which may be presented by target JVM JMX servers or by Cryostat Agent
HTTPS servers. This endpoint returns a list of local file paths to additional certificate files,
which Cryostat will have loaded into an additional trust store at startup.
responses:
"200":
content:
application/json:
schema:
items:
type: string
type: array
description: OK
"401":
description: Not Authorized
"403":
description: Not Allowed
security:
- SecurityScheme: []
summary: List additional trusted SSL/TLS certificates
tags:
- Trust Store
/health:
get:
description: |
Returns a map indicating whether various external components (ex.
jfr-datasource, grafana-dashboard) are configured and whether those
components can be reached by the Cryostat application. Also includes
application semantic version and build information.
responses:
"200":
content:
application/json:
schema:
$ref: '#/components/schemas/ApplicationHealth'
description: OK
summary: Check the overall status of the application
tags:
- Health
/health/liveness:
get:
description: |
Performs a simple target connection request on a worker thread.
This is a simply check to determine if the application has available threads
to service requests. HTTP 204 No Content is the only expected response.
If the application is not live and no worker threads are available,
then the client will never receive a response.
responses:
"204":
description: No Content
summary: Check if the application is able to accept and respond to requests.
tags:
- Liveness
tags:
- description: |
Endpoints for Discovery Plugins to register with a Cryostat instance, refresh their registration
token, publish information about known targets, and unregister themselves.
The reference implementation of a Discovery Plugin is the Cryostat Agent.
name: Discovery