mirror of
https://github.com/ClusterCockpit/cc-backend
synced 2026-01-15 09:11:45 +01:00
1939 lines
51 KiB
YAML
1939 lines
51 KiB
YAML
definitions:
|
|
api.APIReturnedUser:
|
|
properties:
|
|
email:
|
|
type: string
|
|
name:
|
|
type: string
|
|
projects:
|
|
items:
|
|
type: string
|
|
type: array
|
|
roles:
|
|
items:
|
|
type: string
|
|
type: array
|
|
username:
|
|
type: string
|
|
type: object
|
|
api.APITag:
|
|
properties:
|
|
name:
|
|
description: Tag Name
|
|
example: Testjob
|
|
type: string
|
|
scope:
|
|
description: Tag Scope for Frontend Display
|
|
example: global
|
|
type: string
|
|
type:
|
|
description: Tag Type
|
|
example: Debug
|
|
type: string
|
|
type: object
|
|
api.DefaultAPIResponse:
|
|
properties:
|
|
msg:
|
|
type: string
|
|
type: object
|
|
api.DeleteJobAPIRequest:
|
|
properties:
|
|
cluster:
|
|
description: Cluster of job
|
|
example: fritz
|
|
type: string
|
|
jobId:
|
|
description: Cluster Job ID of job
|
|
example: 123000
|
|
type: integer
|
|
startTime:
|
|
description: Start Time of job as epoch
|
|
example: 1649723812
|
|
type: integer
|
|
required:
|
|
- jobId
|
|
type: object
|
|
api.EditMetaRequest:
|
|
properties:
|
|
key:
|
|
example: jobScript
|
|
type: string
|
|
value:
|
|
example: bash script
|
|
type: string
|
|
type: object
|
|
api.ErrorResponse:
|
|
properties:
|
|
error:
|
|
description: Error Message
|
|
type: string
|
|
status:
|
|
description: Statustext of Errorcode
|
|
type: string
|
|
type: object
|
|
api.GetClustersAPIResponse:
|
|
properties:
|
|
clusters:
|
|
description: Array of clusters
|
|
items:
|
|
$ref: '#/definitions/schema.Cluster'
|
|
type: array
|
|
type: object
|
|
api.GetJobAPIResponse:
|
|
properties:
|
|
data:
|
|
items:
|
|
$ref: '#/definitions/api.JobMetricWithName'
|
|
type: array
|
|
meta:
|
|
$ref: '#/definitions/schema.Job'
|
|
type: object
|
|
api.GetJobsAPIResponse:
|
|
properties:
|
|
items:
|
|
description: Number of jobs returned
|
|
type: integer
|
|
jobs:
|
|
description: Array of jobs
|
|
items:
|
|
$ref: '#/definitions/schema.Job'
|
|
type: array
|
|
page:
|
|
description: Page id returned
|
|
type: integer
|
|
type: object
|
|
api.JobMetricWithName:
|
|
properties:
|
|
metric:
|
|
$ref: '#/definitions/schema.JobMetric'
|
|
name:
|
|
type: string
|
|
scope:
|
|
$ref: '#/definitions/schema.MetricScope'
|
|
type: object
|
|
api.StopJobAPIRequest:
|
|
properties:
|
|
cluster:
|
|
example: fritz
|
|
type: string
|
|
jobId:
|
|
example: 123000
|
|
type: integer
|
|
jobState:
|
|
allOf:
|
|
- $ref: '#/definitions/schema.JobState'
|
|
example: completed
|
|
startTime:
|
|
example: 1649723812
|
|
type: integer
|
|
stopTime:
|
|
example: 1649763839
|
|
type: integer
|
|
required:
|
|
- jobState
|
|
- stopTime
|
|
type: object
|
|
api.UpdateNodeStatesRequest:
|
|
properties:
|
|
cluster:
|
|
example: fritz
|
|
type: string
|
|
nodes:
|
|
items:
|
|
$ref: '#/definitions/schema.NodePayload'
|
|
type: array
|
|
type: object
|
|
schema.Accelerator:
|
|
properties:
|
|
id:
|
|
description: Unique identifier for the accelerator (e.g., "0", "1", "GPU-0")
|
|
type: string
|
|
model:
|
|
description: Specific model name (e.g., "A100", "MI100")
|
|
type: string
|
|
type:
|
|
description: Type of accelerator (e.g., "Nvidia GPU", "AMD GPU")
|
|
type: string
|
|
type: object
|
|
schema.Cluster:
|
|
properties:
|
|
metricConfig:
|
|
description: Cluster-wide metric configurations
|
|
items:
|
|
$ref: '#/definitions/schema.MetricConfig'
|
|
type: array
|
|
name:
|
|
description: Unique cluster name (e.g., "fritz", "alex")
|
|
type: string
|
|
subClusters:
|
|
description: Homogeneous partitions within the cluster
|
|
items:
|
|
$ref: '#/definitions/schema.SubCluster'
|
|
type: array
|
|
type: object
|
|
schema.Job:
|
|
description: Information of a HPC job.
|
|
properties:
|
|
arrayJobId:
|
|
example: 123000
|
|
type: integer
|
|
cluster:
|
|
example: fritz
|
|
type: string
|
|
concurrentJobs:
|
|
$ref: '#/definitions/schema.JobLinkResultList'
|
|
duration:
|
|
example: 43200
|
|
minimum: 1
|
|
type: integer
|
|
energy:
|
|
type: number
|
|
energyFootprint:
|
|
additionalProperties:
|
|
format: float64
|
|
type: number
|
|
type: object
|
|
exclusive:
|
|
description: for backwards compatibility
|
|
example: 1
|
|
maximum: 2
|
|
minimum: 0
|
|
type: integer
|
|
footprint:
|
|
additionalProperties:
|
|
format: float64
|
|
type: number
|
|
type: object
|
|
id:
|
|
type: integer
|
|
jobId:
|
|
example: 123000
|
|
type: integer
|
|
jobState:
|
|
allOf:
|
|
- $ref: '#/definitions/schema.JobState'
|
|
enum:
|
|
- boot_fail
|
|
- cancelled
|
|
- completed
|
|
- deadline
|
|
- failed
|
|
- node_fail
|
|
- out-of-memory
|
|
- pending
|
|
- preempted
|
|
- running
|
|
- suspended
|
|
- timeout
|
|
example: completed
|
|
metaData:
|
|
additionalProperties:
|
|
type: string
|
|
type: object
|
|
monitoringStatus:
|
|
example: 1
|
|
maximum: 3
|
|
minimum: 0
|
|
type: integer
|
|
numAcc:
|
|
example: 2
|
|
minimum: 1
|
|
type: integer
|
|
numHwthreads:
|
|
example: 20
|
|
minimum: 1
|
|
type: integer
|
|
numNodes:
|
|
example: 2
|
|
minimum: 1
|
|
type: integer
|
|
partition:
|
|
example: main
|
|
type: string
|
|
project:
|
|
example: abcd200
|
|
type: string
|
|
requestedMemory:
|
|
description: in MB
|
|
example: 128000
|
|
minimum: 1
|
|
type: integer
|
|
resources:
|
|
items:
|
|
$ref: '#/definitions/schema.Resource'
|
|
type: array
|
|
shared:
|
|
enum:
|
|
- none
|
|
- single_user
|
|
- multi_user
|
|
type: string
|
|
smt:
|
|
example: 4
|
|
type: integer
|
|
startTime:
|
|
example: 1649723812
|
|
type: integer
|
|
statistics:
|
|
additionalProperties:
|
|
$ref: '#/definitions/schema.JobStatistics'
|
|
type: object
|
|
subCluster:
|
|
example: main
|
|
type: string
|
|
submitTime:
|
|
example: 1649723812
|
|
type: integer
|
|
tags:
|
|
items:
|
|
$ref: '#/definitions/schema.Tag'
|
|
type: array
|
|
user:
|
|
example: abcd100h
|
|
type: string
|
|
walltime:
|
|
example: 86400
|
|
minimum: 1
|
|
type: integer
|
|
type: object
|
|
schema.JobLink:
|
|
properties:
|
|
id:
|
|
description: Internal database ID
|
|
type: integer
|
|
jobId:
|
|
description: The job's external job ID
|
|
type: integer
|
|
type: object
|
|
schema.JobLinkResultList:
|
|
properties:
|
|
count:
|
|
description: Total count of available items
|
|
type: integer
|
|
items:
|
|
description: List of job links
|
|
items:
|
|
$ref: '#/definitions/schema.JobLink'
|
|
type: array
|
|
type: object
|
|
schema.JobMetric:
|
|
properties:
|
|
series:
|
|
description: Individual time series data
|
|
items:
|
|
$ref: '#/definitions/schema.Series'
|
|
type: array
|
|
statisticsSeries:
|
|
allOf:
|
|
- $ref: '#/definitions/schema.StatsSeries'
|
|
description: Aggregated statistics over time
|
|
timestep:
|
|
description: Sampling interval in seconds
|
|
type: integer
|
|
unit:
|
|
allOf:
|
|
- $ref: '#/definitions/schema.Unit'
|
|
description: Unit of measurement
|
|
type: object
|
|
schema.JobState:
|
|
enum:
|
|
- boot_fail
|
|
- cancelled
|
|
- completed
|
|
- deadline
|
|
- failed
|
|
- node_fail
|
|
- out_of_memory
|
|
- pending
|
|
- preempted
|
|
- running
|
|
- suspended
|
|
- timeout
|
|
type: string
|
|
x-enum-varnames:
|
|
- JobStateBootFail
|
|
- JobStateCancelled
|
|
- JobStateCompleted
|
|
- JobStateDeadline
|
|
- JobStateFailed
|
|
- JobStateNodeFail
|
|
- JobStateOutOfMemory
|
|
- JobStatePending
|
|
- JobStatePreempted
|
|
- JobStateRunning
|
|
- JobStateSuspended
|
|
- JobStateTimeout
|
|
schema.JobStatistics:
|
|
description: Specification for job metric statistics.
|
|
properties:
|
|
avg:
|
|
description: Job metric average
|
|
example: 2500
|
|
minimum: 0
|
|
type: number
|
|
max:
|
|
description: Job metric maximum
|
|
example: 3000
|
|
minimum: 0
|
|
type: number
|
|
min:
|
|
description: Job metric minimum
|
|
example: 2000
|
|
minimum: 0
|
|
type: number
|
|
unit:
|
|
$ref: '#/definitions/schema.Unit'
|
|
type: object
|
|
schema.MetricConfig:
|
|
properties:
|
|
aggregation:
|
|
description: Aggregation function (avg, sum, min, max)
|
|
type: string
|
|
alert:
|
|
description: Alert threshold (requires attention)
|
|
type: number
|
|
caution:
|
|
description: Caution threshold (concerning but not critical)
|
|
type: number
|
|
energy:
|
|
description: Energy measurement method
|
|
type: string
|
|
footprint:
|
|
description: Footprint category
|
|
type: string
|
|
lowerIsBetter:
|
|
description: Whether lower values are better
|
|
type: boolean
|
|
name:
|
|
description: Metric name (e.g., "cpu_load", "mem_used")
|
|
type: string
|
|
normal:
|
|
description: Normal/typical value (good performance)
|
|
type: number
|
|
peak:
|
|
description: Peak/maximum expected value (best performance)
|
|
type: number
|
|
restrict:
|
|
description: Restrict visibility to non user roles
|
|
type: boolean
|
|
scope:
|
|
allOf:
|
|
- $ref: '#/definitions/schema.MetricScope'
|
|
description: Metric scope (node, socket, core, etc.)
|
|
subClusters:
|
|
description: Subcluster-specific overrides
|
|
items:
|
|
$ref: '#/definitions/schema.SubClusterConfig'
|
|
type: array
|
|
timestep:
|
|
description: Measurement interval in seconds
|
|
type: integer
|
|
unit:
|
|
allOf:
|
|
- $ref: '#/definitions/schema.Unit'
|
|
description: Unit of measurement
|
|
type: object
|
|
schema.MetricScope:
|
|
enum:
|
|
- invalid_scope
|
|
- node
|
|
- socket
|
|
- memoryDomain
|
|
- core
|
|
- hwthread
|
|
- accelerator
|
|
type: string
|
|
x-enum-varnames:
|
|
- MetricScopeInvalid
|
|
- MetricScopeNode
|
|
- MetricScopeSocket
|
|
- MetricScopeMemoryDomain
|
|
- MetricScopeCore
|
|
- MetricScopeHWThread
|
|
- MetricScopeAccelerator
|
|
schema.MetricStatistics:
|
|
properties:
|
|
avg:
|
|
description: Average/mean value
|
|
type: number
|
|
max:
|
|
description: Maximum value
|
|
type: number
|
|
min:
|
|
description: Minimum value
|
|
type: number
|
|
type: object
|
|
schema.MetricValue:
|
|
properties:
|
|
unit:
|
|
allOf:
|
|
- $ref: '#/definitions/schema.Unit'
|
|
description: Unit of measurement (e.g., FLOP/s, GB/s)
|
|
value:
|
|
description: Numeric value of the measurement
|
|
type: number
|
|
type: object
|
|
schema.NodePayload:
|
|
properties:
|
|
cpusAllocated:
|
|
description: Number of allocated CPUs
|
|
type: integer
|
|
gpusAllocated:
|
|
description: Number of allocated GPUs
|
|
type: integer
|
|
hostname:
|
|
description: Node hostname
|
|
type: string
|
|
jobsRunning:
|
|
description: Number of running jobs
|
|
type: integer
|
|
memoryAllocated:
|
|
description: Allocated memory in MB
|
|
type: integer
|
|
states:
|
|
description: State strings (flexible format)
|
|
items:
|
|
type: string
|
|
type: array
|
|
type: object
|
|
schema.Resource:
|
|
description: A resource used by a job
|
|
properties:
|
|
accelerators:
|
|
description: Allocated accelerator IDs (e.g., GPU IDs)
|
|
items:
|
|
type: string
|
|
type: array
|
|
configuration:
|
|
description: Optional configuration identifier
|
|
type: string
|
|
hostname:
|
|
description: Node hostname
|
|
type: string
|
|
hwthreads:
|
|
description: Allocated hardware thread IDs
|
|
items:
|
|
type: integer
|
|
type: array
|
|
type: object
|
|
schema.Series:
|
|
properties:
|
|
data:
|
|
description: Time series measurements
|
|
items:
|
|
type: number
|
|
type: array
|
|
hostname:
|
|
description: Source hostname
|
|
type: string
|
|
id:
|
|
description: Optional ID (e.g., core ID, GPU ID)
|
|
type: string
|
|
statistics:
|
|
allOf:
|
|
- $ref: '#/definitions/schema.MetricStatistics'
|
|
description: Statistical summary (min/avg/max)
|
|
type: object
|
|
schema.StatsSeries:
|
|
properties:
|
|
max:
|
|
description: Maximum values over time
|
|
items:
|
|
type: number
|
|
type: array
|
|
mean:
|
|
description: Mean values over time
|
|
items:
|
|
type: number
|
|
type: array
|
|
median:
|
|
description: Median values over time
|
|
items:
|
|
type: number
|
|
type: array
|
|
min:
|
|
description: Minimum values over time
|
|
items:
|
|
type: number
|
|
type: array
|
|
percentiles:
|
|
additionalProperties:
|
|
items:
|
|
format: float64
|
|
type: number
|
|
type: array
|
|
description: Percentile values over time (e.g., 10th, 50th, 90th)
|
|
type: object
|
|
type: object
|
|
schema.SubCluster:
|
|
properties:
|
|
coresPerSocket:
|
|
description: Number of cores per CPU socket
|
|
type: integer
|
|
energyFootprint:
|
|
description: Energy-related footprint metrics
|
|
items:
|
|
type: string
|
|
type: array
|
|
flopRateScalar:
|
|
allOf:
|
|
- $ref: '#/definitions/schema.MetricValue'
|
|
description: Theoretical scalar FLOP rate per node
|
|
flopRateSimd:
|
|
allOf:
|
|
- $ref: '#/definitions/schema.MetricValue'
|
|
description: Theoretical SIMD FLOP rate per node
|
|
footprint:
|
|
description: Default footprint metrics for jobs
|
|
items:
|
|
type: string
|
|
type: array
|
|
memoryBandwidth:
|
|
allOf:
|
|
- $ref: '#/definitions/schema.MetricValue'
|
|
description: Theoretical memory bandwidth per node
|
|
metricConfig:
|
|
description: Subcluster-specific metric configurations
|
|
items:
|
|
$ref: '#/definitions/schema.MetricConfig'
|
|
type: array
|
|
name:
|
|
description: Name of the subcluster (e.g., "main", "gpu", "bigmem")
|
|
type: string
|
|
nodes:
|
|
description: Node list in condensed format (e.g., "node[001-100]")
|
|
type: string
|
|
processorType:
|
|
description: CPU model (e.g., "Intel Xeon Gold 6148")
|
|
type: string
|
|
socketsPerNode:
|
|
description: Number of CPU sockets per node
|
|
type: integer
|
|
threadsPerCore:
|
|
description: Number of hardware threads per core (SMT level)
|
|
type: integer
|
|
topology:
|
|
allOf:
|
|
- $ref: '#/definitions/schema.Topology'
|
|
description: Hardware topology of nodes in this subcluster
|
|
type: object
|
|
schema.SubClusterConfig:
|
|
properties:
|
|
alert:
|
|
description: Alert threshold (requires attention)
|
|
type: number
|
|
caution:
|
|
description: Caution threshold (concerning but not critical)
|
|
type: number
|
|
energy:
|
|
description: Energy measurement configuration
|
|
type: string
|
|
footprint:
|
|
description: Footprint category for this metric
|
|
type: string
|
|
lowerIsBetter:
|
|
description: Whether lower values indicate better performance
|
|
type: boolean
|
|
name:
|
|
description: Metric name (e.g., "cpu_load", "mem_used")
|
|
type: string
|
|
normal:
|
|
description: Normal/typical value (good performance)
|
|
type: number
|
|
peak:
|
|
description: Peak/maximum expected value (best performance)
|
|
type: number
|
|
remove:
|
|
description: Whether to exclude this metric for this subcluster
|
|
type: boolean
|
|
restrict:
|
|
description: Restrict visibility to non user roles
|
|
type: boolean
|
|
unit:
|
|
allOf:
|
|
- $ref: '#/definitions/schema.Unit'
|
|
description: Unit of measurement
|
|
type: object
|
|
schema.Tag:
|
|
description: Defines a tag using name and type.
|
|
properties:
|
|
id:
|
|
type: integer
|
|
name:
|
|
example: Testjob
|
|
type: string
|
|
scope:
|
|
example: global
|
|
type: string
|
|
type:
|
|
example: Debug
|
|
type: string
|
|
type: object
|
|
schema.Topology:
|
|
properties:
|
|
accelerators:
|
|
description: Attached accelerators (GPUs, etc.)
|
|
items:
|
|
$ref: '#/definitions/schema.Accelerator'
|
|
type: array
|
|
core:
|
|
description: Hardware threads grouped by core
|
|
items:
|
|
items:
|
|
type: integer
|
|
type: array
|
|
type: array
|
|
die:
|
|
description: Hardware threads grouped by die (optional)
|
|
items:
|
|
items:
|
|
type: integer
|
|
type: array
|
|
type: array
|
|
memoryDomain:
|
|
description: Hardware threads grouped by NUMA domain
|
|
items:
|
|
items:
|
|
type: integer
|
|
type: array
|
|
type: array
|
|
node:
|
|
description: All hardware thread IDs on this node
|
|
items:
|
|
type: integer
|
|
type: array
|
|
socket:
|
|
description: Hardware threads grouped by socket
|
|
items:
|
|
items:
|
|
type: integer
|
|
type: array
|
|
type: array
|
|
type: object
|
|
schema.Unit:
|
|
properties:
|
|
base:
|
|
description: Base unit (e.g., "B/s", "F/s", "W")
|
|
type: string
|
|
prefix:
|
|
description: SI prefix (e.g., "G", "M", "K", "T")
|
|
type: string
|
|
type: object
|
|
host: localhost:8080
|
|
info:
|
|
contact:
|
|
email: support@clustercockpit.org
|
|
name: ClusterCockpit Project
|
|
url: https://github.com/ClusterCockpit
|
|
description: API for batch job control.
|
|
license:
|
|
name: MIT License
|
|
url: https://opensource.org/licenses/MIT
|
|
title: ClusterCockpit REST API
|
|
version: 1.0.0
|
|
paths:
|
|
/api/clusters/:
|
|
get:
|
|
description: Get a list of all cluster configs. Specific cluster can be requested
|
|
using query parameter.
|
|
parameters:
|
|
- description: Job Cluster
|
|
in: query
|
|
name: cluster
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Array of clusters
|
|
schema:
|
|
$ref: '#/definitions/api.GetClustersAPIResponse'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Lists all cluster configs
|
|
tags:
|
|
- Cluster query
|
|
/api/jobs/:
|
|
get:
|
|
description: |-
|
|
Get a list of all jobs. Filters can be applied using query parameters.
|
|
Number of results can be limited by page. Results are sorted by descending startTime.
|
|
parameters:
|
|
- description: Job State
|
|
enum:
|
|
- running
|
|
- completed
|
|
- failed
|
|
- cancelled
|
|
- stopped
|
|
- timeout
|
|
in: query
|
|
name: state
|
|
type: string
|
|
- description: Job Cluster
|
|
in: query
|
|
name: cluster
|
|
type: string
|
|
- description: 'Syntax: ''$from-$to'', as unix epoch timestamps in seconds'
|
|
in: query
|
|
name: start-time
|
|
type: string
|
|
- description: 'Items per page (Default: 25)'
|
|
in: query
|
|
name: items-per-page
|
|
type: integer
|
|
- description: 'Page Number (Default: 1)'
|
|
in: query
|
|
name: page
|
|
type: integer
|
|
- description: Include metadata (e.g. jobScript) in response
|
|
in: query
|
|
name: with-metadata
|
|
type: boolean
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Job array and page info
|
|
schema:
|
|
$ref: '#/definitions/api.GetJobsAPIResponse'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Lists all jobs
|
|
tags:
|
|
- Job query
|
|
/api/jobs/{id}:
|
|
get:
|
|
description: |-
|
|
Job to get is specified by database ID
|
|
Returns full job resource information according to 'Job' scheme and all metrics according to 'JobData'.
|
|
parameters:
|
|
- description: Database ID of Job
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: integer
|
|
- description: Include all available metrics
|
|
in: query
|
|
name: all-metrics
|
|
type: boolean
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Job resource
|
|
schema:
|
|
$ref: '#/definitions/api.GetJobAPIResponse'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"404":
|
|
description: Resource not found
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"422":
|
|
description: 'Unprocessable Entity: finding job failed: sql: no rows in
|
|
result set'
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Get job meta and optional all metric data
|
|
tags:
|
|
- Job query
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: |-
|
|
Job to get is specified by database ID
|
|
Returns full job resource information according to 'Job' scheme and all metrics according to 'JobData'.
|
|
parameters:
|
|
- description: Database ID of Job
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: integer
|
|
- description: Array of metric names
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
items:
|
|
type: string
|
|
type: array
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Job resource
|
|
schema:
|
|
$ref: '#/definitions/api.GetJobAPIResponse'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"404":
|
|
description: Resource not found
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"422":
|
|
description: 'Unprocessable Entity: finding job failed: sql: no rows in
|
|
result set'
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Get job meta and configurable metric data
|
|
tags:
|
|
- Job query
|
|
/api/jobs/delete_job/:
|
|
delete:
|
|
consumes:
|
|
- application/json
|
|
description: Job to delete is specified by request body. All fields are required
|
|
in this case.
|
|
parameters:
|
|
- description: All fields required
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/api.DeleteJobAPIRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Success message
|
|
schema:
|
|
$ref: '#/definitions/api.DefaultAPIResponse'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"404":
|
|
description: Resource not found
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"422":
|
|
description: 'Unprocessable Entity: finding job failed: sql: no rows in
|
|
result set'
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Remove a job from the sql database
|
|
tags:
|
|
- Job remove
|
|
/api/jobs/delete_job/{id}:
|
|
delete:
|
|
description: Job to remove is specified by database ID. This will not remove
|
|
the job from the job archive.
|
|
parameters:
|
|
- description: Database ID of Job
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: integer
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Success message
|
|
schema:
|
|
$ref: '#/definitions/api.DefaultAPIResponse'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"404":
|
|
description: Resource not found
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"422":
|
|
description: 'Unprocessable Entity: finding job failed: sql: no rows in
|
|
result set'
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Remove a job from the sql database
|
|
tags:
|
|
- Job remove
|
|
/api/jobs/delete_job_before/{ts}:
|
|
delete:
|
|
description: Remove all jobs with start time before timestamp. The jobs will
|
|
not be removed from the job archive.
|
|
parameters:
|
|
- description: Unix epoch timestamp
|
|
in: path
|
|
name: ts
|
|
required: true
|
|
type: integer
|
|
- description: Omit jobs with tags from deletion
|
|
in: query
|
|
name: omit-tagged
|
|
type: boolean
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Success message
|
|
schema:
|
|
$ref: '#/definitions/api.DefaultAPIResponse'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"404":
|
|
description: Resource not found
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"422":
|
|
description: 'Unprocessable Entity: finding job failed: sql: no rows in
|
|
result set'
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Remove a job from the sql database
|
|
tags:
|
|
- Job remove
|
|
/api/jobs/edit_meta/{id}:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: |-
|
|
Edit key value pairs in job metadata json
|
|
If a key already exists its content will be overwritten
|
|
parameters:
|
|
- description: Job Database ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: integer
|
|
- description: Kay value pair to add
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/api.EditMetaRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Updated job resource
|
|
schema:
|
|
$ref: '#/definitions/schema.Job'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"404":
|
|
description: Job does not exist
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Edit meta-data json
|
|
tags:
|
|
- Job add and modify
|
|
/api/jobs/start_job/:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: |-
|
|
Job specified in request body will be saved to database as "running" with new DB ID.
|
|
Job specifications follow the 'Job' scheme, API will fail to execute if requirements are not met.
|
|
parameters:
|
|
- description: Job to add
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/schema.Job'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"201":
|
|
description: Job added successfully
|
|
schema:
|
|
$ref: '#/definitions/api.DefaultAPIResponse'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"422":
|
|
description: 'Unprocessable Entity: The combination of jobId, clusterId
|
|
and startTime does already exist'
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Adds a new job as "running"
|
|
tags:
|
|
- Job add and modify
|
|
/api/jobs/stop_job/:
|
|
post:
|
|
description: |-
|
|
Job to stop is specified by request body. All fields are required in this case.
|
|
Returns full job resource information according to 'Job' scheme.
|
|
parameters:
|
|
- description: All fields required
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/api.StopJobAPIRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Success message
|
|
schema:
|
|
$ref: '#/definitions/schema.Job'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"404":
|
|
description: Resource not found
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"422":
|
|
description: 'Unprocessable Entity: job has already been stopped'
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Marks job as completed and triggers archiving
|
|
tags:
|
|
- Job add and modify
|
|
/api/jobs/tag_job/{id}:
|
|
post:
|
|
consumes:
|
|
- application/json
|
|
description: |-
|
|
Adds tag(s) to a job specified by DB ID. Name and Type of Tag(s) can be chosen freely.
|
|
Tag Scope for frontend visibility will default to "global" if none entered, other options: "admin" or specific username.
|
|
If tagged job is already finished: Tag will be written directly to respective archive files.
|
|
parameters:
|
|
- description: Job Database ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: integer
|
|
- description: Array of tag-objects to add
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/api.APITag'
|
|
type: array
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Updated job resource
|
|
schema:
|
|
$ref: '#/definitions/schema.Job'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"404":
|
|
description: Job or tag does not exist
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Adds one or more tags to a job
|
|
tags:
|
|
- Job add and modify
|
|
/api/nodestats/:
|
|
post:
|
|
description: |-
|
|
Returns a JSON-encoded list of users.
|
|
Required query-parameter defines if all users or only users with additional special roles are returned.
|
|
parameters:
|
|
- description: Request body containing nodes and their states
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
$ref: '#/definitions/api.UpdateNodeStatesRequest'
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Success message
|
|
schema:
|
|
$ref: '#/definitions/api.DefaultAPIResponse'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Deliver updated Slurm node states
|
|
tags:
|
|
- Nodestates
|
|
/api/user/{id}:
|
|
post:
|
|
description: Allows admins to add/remove roles and projects for a user
|
|
parameters:
|
|
- description: Username
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: string
|
|
- description: Role to add
|
|
in: formData
|
|
name: add-role
|
|
type: string
|
|
- description: Role to remove
|
|
in: formData
|
|
name: remove-role
|
|
type: string
|
|
- description: Project to add
|
|
in: formData
|
|
name: add-project
|
|
type: string
|
|
- description: Project to remove
|
|
in: formData
|
|
name: remove-project
|
|
type: string
|
|
produces:
|
|
- text/plain
|
|
responses:
|
|
"200":
|
|
description: Success message
|
|
schema:
|
|
type: string
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"422":
|
|
description: Unprocessable Entity
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Update user roles and projects
|
|
tags:
|
|
- User
|
|
/api/users/:
|
|
delete:
|
|
description: Deletes a user from the system
|
|
parameters:
|
|
- description: Username to delete
|
|
in: formData
|
|
name: username
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- text/plain
|
|
responses:
|
|
"200":
|
|
description: Success
|
|
schema:
|
|
type: string
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"422":
|
|
description: Unprocessable Entity
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Delete a user
|
|
tags:
|
|
- User
|
|
get:
|
|
description: |-
|
|
Returns a JSON-encoded list of users.
|
|
Required query-parameter defines if all users or only users with additional special roles are returned.
|
|
parameters:
|
|
- description: If returned list should contain all users or only users with
|
|
additional special roles
|
|
in: query
|
|
name: not-just-user
|
|
required: true
|
|
type: boolean
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: List of users returned successfully
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/api.APIReturnedUser'
|
|
type: array
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
type: string
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
type: string
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
type: string
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
type: string
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Returns a list of users
|
|
tags:
|
|
- User
|
|
post:
|
|
description: Creates a new user with specified credentials and role
|
|
parameters:
|
|
- description: Username
|
|
in: formData
|
|
name: username
|
|
required: true
|
|
type: string
|
|
- description: Password (not required for API users)
|
|
in: formData
|
|
name: password
|
|
type: string
|
|
- description: User role
|
|
in: formData
|
|
name: role
|
|
required: true
|
|
type: string
|
|
- description: Full name
|
|
in: formData
|
|
name: name
|
|
type: string
|
|
- description: Email address
|
|
in: formData
|
|
name: email
|
|
type: string
|
|
- description: Project (required for managers)
|
|
in: formData
|
|
name: project
|
|
type: string
|
|
produces:
|
|
- text/plain
|
|
responses:
|
|
"200":
|
|
description: Success message
|
|
schema:
|
|
type: string
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"422":
|
|
description: Unprocessable Entity
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Create a new user
|
|
tags:
|
|
- User
|
|
/configuration/:
|
|
post:
|
|
consumes:
|
|
- multipart/form-data
|
|
description: Updates a user's configuration key-value pair.
|
|
parameters:
|
|
- description: Configuration key
|
|
in: formData
|
|
name: key
|
|
required: true
|
|
type: string
|
|
- description: Configuration value
|
|
in: formData
|
|
name: value
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- text/plain
|
|
responses:
|
|
"200":
|
|
description: success
|
|
schema:
|
|
type: string
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Update user configuration
|
|
tags:
|
|
- Frontend
|
|
/debug/:
|
|
post:
|
|
description: This endpoint allows the users to print the content of
|
|
parameters:
|
|
- description: Selector
|
|
in: query
|
|
name: selector
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Debug dump
|
|
schema:
|
|
type: string
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Debug endpoint
|
|
tags:
|
|
- debug
|
|
/free/:
|
|
post:
|
|
description: This endpoint allows the users to free the Buffers from the
|
|
parameters:
|
|
- description: up to timestamp
|
|
in: query
|
|
name: to
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: ok
|
|
schema:
|
|
type: string
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
tags:
|
|
- free
|
|
/healthcheck/:
|
|
get:
|
|
description: This endpoint allows the users to check if a node is healthy
|
|
parameters:
|
|
- description: Selector
|
|
in: query
|
|
name: selector
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Debug dump
|
|
schema:
|
|
type: string
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: HealthCheck endpoint
|
|
tags:
|
|
- healthcheck
|
|
/jobs/tag_job/{id}:
|
|
delete:
|
|
consumes:
|
|
- application/json
|
|
description: |-
|
|
Removes tag(s) from a job specified by DB ID. Name and Type of Tag(s) must match.
|
|
Tag Scope is required for matching, options: "global", "admin". Private tags can not be deleted via API.
|
|
If tagged job is already finished: Tag will be removed from respective archive files.
|
|
parameters:
|
|
- description: Job Database ID
|
|
in: path
|
|
name: id
|
|
required: true
|
|
type: integer
|
|
- description: Array of tag-objects to remove
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/api.APITag'
|
|
type: array
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Updated job resource
|
|
schema:
|
|
$ref: '#/definitions/schema.Job'
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"404":
|
|
description: Job or tag does not exist
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Removes one or more tags from a job
|
|
tags:
|
|
- Job add and modify
|
|
/jwt/:
|
|
get:
|
|
consumes:
|
|
- multipart/form-data
|
|
description: Generates a JWT token for a user. Admins can generate tokens for
|
|
any user, regular users only for themselves.
|
|
parameters:
|
|
- description: Username to generate JWT for
|
|
in: formData
|
|
name: username
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- text/plain
|
|
responses:
|
|
"200":
|
|
description: JWT token
|
|
schema:
|
|
type: string
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"404":
|
|
description: User Not Found
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Generate JWT token
|
|
tags:
|
|
- Frontend
|
|
/machine_state/{cluster}/{host}:
|
|
get:
|
|
description: Retrieves stored machine state data for a specific cluster node.
|
|
Validates cluster and host names to prevent path traversal.
|
|
parameters:
|
|
- description: Cluster name
|
|
in: path
|
|
name: cluster
|
|
required: true
|
|
type: string
|
|
- description: Host name
|
|
in: path
|
|
name: host
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: Machine state JSON data
|
|
schema:
|
|
type: object
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"404":
|
|
description: Machine state not enabled or file not found
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Retrieve machine state
|
|
tags:
|
|
- Machine State
|
|
put:
|
|
consumes:
|
|
- application/json
|
|
description: Stores machine state data for a specific cluster node. Validates
|
|
cluster and host names to prevent path traversal.
|
|
parameters:
|
|
- description: Cluster name
|
|
in: path
|
|
name: cluster
|
|
required: true
|
|
type: string
|
|
- description: Host name
|
|
in: path
|
|
name: host
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- text/plain
|
|
responses:
|
|
"201":
|
|
description: Created
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"404":
|
|
description: Machine state not enabled
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Store machine state
|
|
tags:
|
|
- Machine State
|
|
/notice/:
|
|
post:
|
|
consumes:
|
|
- multipart/form-data
|
|
description: Updates the notice.txt file content. Only admins are allowed. Content
|
|
is limited to 10000 characters.
|
|
parameters:
|
|
- description: New notice content (max 10000 characters)
|
|
in: formData
|
|
name: new-content
|
|
required: true
|
|
type: string
|
|
produces:
|
|
- text/plain
|
|
responses:
|
|
"200":
|
|
description: Update Notice Content Success
|
|
schema:
|
|
type: string
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Update system notice
|
|
tags:
|
|
- Config
|
|
/roles/:
|
|
get:
|
|
description: Returns a list of valid user roles. Only admins are allowed.
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: List of role names
|
|
schema:
|
|
items:
|
|
type: string
|
|
type: array
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Get available roles
|
|
tags:
|
|
- Config
|
|
/tags/:
|
|
delete:
|
|
consumes:
|
|
- application/json
|
|
description: |-
|
|
Removes tags by type and name. Name and Type of Tag(s) must match.
|
|
Tag Scope is required for matching, options: "global", "admin". Private tags can not be deleted via API.
|
|
Tag wills be removed from respective archive files.
|
|
parameters:
|
|
- description: Array of tag-objects to remove
|
|
in: body
|
|
name: request
|
|
required: true
|
|
schema:
|
|
items:
|
|
$ref: '#/definitions/api.APITag'
|
|
type: array
|
|
produces:
|
|
- text/plain
|
|
responses:
|
|
"200":
|
|
description: Success Response
|
|
schema:
|
|
type: string
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"404":
|
|
description: Job or tag does not exist
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
summary: Removes all tags and job-relations for type:name tuple
|
|
tags:
|
|
- Tag remove
|
|
/write/:
|
|
post:
|
|
consumes:
|
|
- text/plain
|
|
parameters:
|
|
- description: If the lines in the body do not have a cluster tag, use this
|
|
value instead.
|
|
in: query
|
|
name: cluster
|
|
type: string
|
|
produces:
|
|
- application/json
|
|
responses:
|
|
"200":
|
|
description: ok
|
|
schema:
|
|
type: string
|
|
"400":
|
|
description: Bad Request
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"401":
|
|
description: Unauthorized
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"403":
|
|
description: Forbidden
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
"500":
|
|
description: Internal Server Error
|
|
schema:
|
|
$ref: '#/definitions/api.ErrorResponse'
|
|
security:
|
|
- ApiKeyAuth: []
|
|
securityDefinitions:
|
|
ApiKeyAuth:
|
|
in: header
|
|
name: X-Auth-Token
|
|
type: apiKey
|
|
swagger: "2.0"
|