2022-01-17 13:27:40 +01:00
#
# ClusterCockpit's API spec can be exported via:
# docker exec -it cc-php php bin/console api:openapi:export --yaml
#
# This spec is written by hand and hopefully up to date with the API.
#
openapi : 3.0 .3
info :
title : 'ClusterCockpit REST API'
description : 'API for batch job control'
version : 0.0 .2
servers :
- url : /
description : ''
paths :
'/api/jobs/' :
get :
operationId : 'getJobs'
summary : 'List all jobs'
description: 'Get a list of all jobs in the JSON schema defined via GraphQL (main difference : start-time is RFC3339 encoded and there are no statistics). Filters can be applied using query parameters.'
parameters :
- name : state
in : query
schema :
type : string
enum : [ "running" , "completed" , "failed" , "canceled" , "stopped" , "timeout" ]
- name : cluster
in : query
schema : { type : string }
responses :
200 :
description : 'Array of jobs'
content :
'application/json' :
schema :
type : array
items :
# Not totally true: start-time is a RFC3339 string here!
$ref : '#/components/schemas/Job'
400 :
description : 'Bad Request'
'/api/jobs/{id}' :
get :
operationId : 'getJob'
summary : 'Get job resource'
parameters :
- name : id
in : path
required : true
schema : { type : integer }
description : 'Database ID (Resource Identifier)'
responses :
200 :
description : 'Job resource'
content :
'application/json' :
schema :
$ref : '#/components/schemas/Job'
404 :
description : 'Resource not found'
'/api/jobs/tag_job/{id}' :
post :
operationId : 'tagJob'
summary : 'Add a tag to a job'
parameters :
- name : id
in : path
required : true
schema : { type : integer }
description : 'Job ID'
requestBody :
description : 'Array of tags to add'
required : true
content :
'application/json' :
schema :
type : array
items :
$ref : '#/components/schemas/Tag'
responses :
200 :
description : 'Job resource'
content :
'application/json' :
schema :
$ref : '#/components/schemas/Job'
404 :
description : 'Job or tag does not exist'
400 :
description : 'Bad request'
'/api/jobs/start_job/' :
post :
operationId : 'startJob'
summary : 'Add a newly started job'
requestBody :
required : true
content :
'application/json' :
schema :
$ref : '#/components/schemas/Job'
responses :
201 :
description : 'Job successfully'
content :
'application/json' :
schema :
type : object
properties :
id :
type : integer
description : 'The database ID assigned to this job'
400 :
description : 'Bad request'
422 :
description : 'The combination of jobId, clusterId and startTime does already exist'
'/api/jobs/stop_job/' :
post :
operationId : stopJobViaJobID
summary : 'Mark a job as stopped. Which job to stop is specified by the request body.'
requestBody :
required : true
content :
'application/json' :
schema :
type : object
required : [ jobId, cluster, stopTime, jobState]
properties :
jobId : { type : integer }
cluster : { type : string }
startTime : { type : integer }
stopTime : { type : integer }
jobState :
type : string
enum : [ "running" , "completed" , "failed" , "canceled" , "stopped" , "timeout" ]
responses :
200 :
description : 'Job resource'
content :
'application/json' :
schema :
$ref : '#/components/schemas/Job'
400 :
description : 'Bad request'
404 :
description : 'Resource not found'
'/api/jobs/stop_job/{id}' :
post :
operationId : 'stopJobViaDBID'
summary : 'Mark a job as stopped.'
parameters :
- name : id
in : path
required : true
schema : { type : integer }
description : 'Database ID (Resource Identifier)'
requestBody :
required : true
content :
'application/json' :
schema :
type : object
required : [ stopTime, jobState]
properties :
stopTime : { type : integer }
jobState :
type : string
enum : [ "running" , "completed" , "failed" , "canceled" , "stopped" , "timeout" ]
responses :
200 :
description : 'Job resource'
content :
'application/json' :
schema :
$ref : '#/components/schemas/Job'
400 :
description : 'Bad request'
404 :
description : 'Resource not found'
components :
schemas :
Tag :
description : 'A job tag'
type : object
properties :
id :
type : string
description : 'Database ID'
type :
type : string
description : 'Tag type'
name :
type : string
description : 'Tag name'
Job :
$ref : https://raw.githubusercontent.com/ClusterCockpit/cc-specifications/master/schema/json/job-meta.schema.json
securitySchemes :
bearerAuth :
type : http
scheme : bearer
bearerFormat : JWT
security :
2021-12-20 10:48:58 +01:00
- bearerAuth : [ ] # Applies `bearerAuth` globally