# Slurm OpenAPI Release Notes

These Release Notes are maintained to provide OpenAPI client programmers a guide to where changes have taken place in the OpenAPI specifications.

All paths given are formatted for use with jq. Make sure to always place the paths in a single quote string to avoid shell replacements.

## Slurm 21.08.8

### openapi/dbv0.0.37 (src/plugins/openapi/dbv0.0.37/openapi.json)

#### Move response fields in dbv0.0.37_diag under "statistics"

new parent field

- .components.schemas."dbv0.0.37_diag".properties.statistics

subordinated fields

- .components.schemas."dbv0.0.37_diag".properties.time_start
- .components.schemas."dbv0.0.37_diag".properties.rollups
- .components.schemas."dbv0.0.37_diag".properties.RPCs
- .components.schemas."dbv0.0.37_diag".properties.users

## Slurm 21.08.7

### openapi/v0.0.37 (src/plugins/openapi/v0.0.37/openapi.json)

#### Fix misspelling: change account_gather_freqency to account_gather_frequency (only the spec was wrong; the underlying code already worked with the correct spelling).

previous path | .components.schemas."v0.0.37_job_properties".properties.account_gather_freqency
new path | .components.schemas."v0.0.37_job_properties".properties.account_gather_frequency

#### Fix misspelling: change cluster_constraints to cluster_constraint (only the spec was wrong; the underlying code already worked with the correct spelling).

previous path | .components.schemas."v0.0.37_job_properties".properties.cluster_constraints
new path | .components.schemas."v0.0.37_job_properties".properties.cluster_constraint

## Slurm 21.08.6

### openapi/dbv0.0.37 (src/plugins/openapi/dbv0.0.37/openapi.json)

#### Add association fields

new fields

- .components.schemas."dbv0.0.37_association".properties.is_default
- .components.schemas."dbv0.0.37_association".properties.max.tres.group.minutes
- .components.schemas."dbv0.0.37_association".properties.max.tres.group.active
- .components.schemas."dbv0.0.37_association".properties.max.jobs.active
- .components.schemas."dbv0.0.37_association".properties.max.jobs.accruing
- .components.schemas."dbv0.0.37_association".properties.max.jobs.total
- .components.schemas."dbv0.0.37_association".properties.max.tres.minutes.per.job

#### Move incorrectly named field

old path | .components.schemas."dbv0.0.37_qos".properties.limits.max.jobs.per.account
new path | .components.schemas."dbv0.0.37_qos".properties.limits.max.jobs.active_jobs.per.account

#### Move incorrectly named field

old path | .components.schemas."dbv0.0.37_qos".properties.limits.properties.max.properties.jobs.properties.per.properties.user
new path | .components.schemas."dbv0.0.37_qos".properties.limits.properties.max.properties.jobs.properties.active_jobs.properties.per.properties.user

#### Add QOS fields

new fields

- .components.schemas."dbv0.0.37_qos".properties.limits.properties.factor
- .components.schemas."dbv0.0.37_qos".properties.limits.properties.max.properties.accruing.properties.per.properties.account
- .components.schemas."dbv0.0.37_qos".properties.limits.properties.max.properties.accruing.properties.per.properties.user

## Slurm 21.08.3

### openapi/v0.0.37 (src/plugins/openapi/v0.0.37/openapi.json)

#### Allow strings for JobIds instead of only numerical JobIds.

Change job_id parameter to string

- .paths."/job/{job_id}".get.parameters[].schema
- .paths."/job/{job_id}".post.parameters[].schema
- .paths."/job/{job_id}".delete.parameters[].schema

### openapi/dbv0.0.37 (src/plugins/openapi/dbv0.0.37/openapi.json)

#### Correct placement of step TRES

previous path | .components.schemas."dbv0.0.37_job_step".properties.step.properties.tres
new path | .components.schemas."dbv0.0.37_job_step".properties.tres

### openapi/dbv0.0.36 (src/plugins/openapi/dbv0.0.36/openapi.json)

#### Correct placement of step TRES

previous path | .components.schemas."dbv0.0.36_job_step".properties.step.properties.tres
new path | .components.schemas."dbv0.0.36_job_step".properties.tres

## Slurm 21.08.0

All of the OpenAPI plugins have moved from "src/slurmrestd/plugins/openapi/" to "src/plugins/openapi/".

### openapi/v0.0.35 (src/plugins/openapi/v0.0.35/openapi.json)

#### Deprecation notice

The v0.0.35 plugin has now been deprecated.

### openapi/dbv0.0.37 (src/plugins/openapi/dbv0.0.37/openapi.json)

#### add plugin

new dbv0.0.37 openapi plugin

- clone of existing dbv0.0.36 openapi plugin
- all paths renamed from v0.0.36 to v0.0.37

#### rename previous -> reason

previous path | .components.schemas."dbv0.0.37_job".properties.state.previous
new path | .components.schemas."dbv0.0.37_job".properties.state.reason

### openapi/v0.0.37 (src/plugins/openapi/v0.0.37/openapi.json)

#### add plugin

new v0.0.37 openapi plugin

- clone of existing v0.0.36 openapi plugin
- all paths renamed from v0.0.36 to v0.0.37

#### rename standard_in -> standard_input

previous path | .components.schemas."v0.0.37_job_response_properties".properties.standard_in
new path | .components.schemas."v0.0.37_job_response_properties".properties.standard_input

#### rename standard_out -> standard_output

previous path | .components.schemas."v0.0.37_job_response_properties".properties.standard_out
new path | .components.schemas."v0.0.37_job_response_properties".properties.standard_output

#### Add update_time field to Jobs query to allow clients to only get jobs list based on change timestamp.

new path | .paths."/jobs/".get.parameters[0]

#### add api to fetch reservation(s) info

added path | .paths."/reservations/"
added path | .paths."/reservation/{reservation_name}"
added path | .components.schemas."v0.0.37_reservation"

#### Mark job environment as required

new path | .components.schemas."v0.0.37_job_properties".required

#### Correct preemption_mode type to list of strings

modify path | .components.schemas."v0.0.37_partition".properties.preemption_mode

#### Set UNIX timestamps to int64 instead of string

modify path | .components.schemas."v0.0.37_job_response_properties".properties.accrue_time
modify path | .components.schemas."v0.0.37_job_response_properties".properties.eligible_time
modify path | .components.schemas."v0.0.37_job_response_properties".properties.end_time
modify path | .components.schemas."v0.0.37_job_response_properties".properties.preempt_time
modify path | .components.schemas."v0.0.37_job_response_properties".properties.pre_sus_time
modify path | .components.schemas."v0.0.37_job_response_properties".properties.resize_time

#### Add new fields to node properties

add path | .components.schemas."v0.0.37_node".properties.tres_used
add path | .components.schemas."v0.0.37_node".properties.tres_weighted
add path | .components.schemas."v0.0.37_node".properties.alloc_cpus
add path | .components.schemas."v0.0.37_node".properties.idle_cpus
add path | .components.schemas."v0.0.37_node".properties.alloc_memory
add path | .components.schemas."v0.0.37_node".properties.partitions

#### replace nodes_online with state in /partitions endpoint

####

removed path | .components.schemas."v0.0.37_partitions_response".nodes_online
added path | .components.schemas."v0.0.37_partitions_response".state

#### Add POST method for /associations

####

new path | .paths."/associations/".post
new path | .components.schemas."dbv0.0.37_response_associations"

## Slurm 20.11.5

##

### openapi/dbv0.0.36 (src/slurmrestd/plugins/openapi/dbv0.0.36/openapi.json)

#### Mark job environment as required

new path | .components.schemas."v0.0.36_job_properties".required

#### Add state flags

new path | .components.schemas."v0.0.37_node".properties.state_flags
new path | .components.schemas."v0.0.37_node".properties.next_state_after_reboot_flags

#### Correct description for previous state

path | .components.schemas."dbv0.0.36_job".properties.state.properties.previous

## Slurm 20.11.3

##

### openapi/dbv0.0.36 (src/slurmrestd/plugins/openapi/dbv0.0.36/openapi.json)

#### Correct structure of dbv0.0.36_tres_list

path | .components.schemas."dbv0.0.36_tres_list"

#### Accept Job Query CSV parameters as a list (JSON array)

path | .paths."/jobs/".get.parameters

## Slurm 20.11.1

##

### openapi/v0.0.36 (src/slurmrestd/plugins/openapi/v0.0.36/openapi.json)

#### Correct name for partition field

previous path | .components.schemas."v0.0.36_partition".properties."min nodes per job"
new path | .components.schemas."v0.0.36_partition".properties."min_nodes_per_job"

#### Add node comment field

new path | .components.schemas."v0.0.36_node".properties.comment

## Slurm 20.11.0

### openapi/dbv0.0.36 (src/slurmrestd/plugins/openapi/dbv0.0.36/openapi.json)

#### Inital Implementation of database queries.

### openapi/v0.0.36 (src/slurmrestd/plugins/openapi/v0.0.36/openapi.json)

#### add plugin

new v0.0.36 openapi plugin

- clone of existing v0.0.35 openapi plugin.
- all paths renamed from v0.0.35 to v0.0.36.

#### Add error schema

path | .components.schemas."v0.0.36_error"

#### return array of nodes instead of dictionary

path | .components.schemas."v0.0.36_nodes_response"

#### return array of partitions instead of dictionary

path | .components.schemas."v0.0.36_partitions_response"

#### return array of pings instead of dictionary

path | .components.schemas."v0.0.36_ping"

#### Simplify possible signals for canceling jobs

path | .paths."/job/{job_id}".delete.parameters[1]

#### Simplify exclusive for jobs submissions

path | .components.schemas."v0.0.36_job_properties".properties.exclusive

#### Simplify nodes for jobs submissions

path | .components.schemas."v0.0.36_job_properties".properties.nodes

#### Change server URL

previous | .servers[0].url=/
new | .servers[0].url=/slurm/v0.0.36/

#### Add operationId tag

parent path | .paths

#### prepend every schema with v0.0.36_

parent path | .components.schemas

#### add tags openapi and slurm

new path | .tags

#### add support contact

new path | .info.contact

#### populate response from partitions query

new path | .components.schemas.partitions_response

#### rename "node_info" to "nodes_response"

removed path | .components.schemas.node_info
new path | .components.schemas.nodes_response

#### add jobs query response properties

new path | .components.schemas.diag

#### define response to diag

new path | .components.schemas.diag

#### add job query response properties

new path | .components.schemas.job_response_properties

#### remove "requested_node_by_index"

removed path | .components.schemas.job_response_properties.properties.requested_node_by_index

#### rename "pn_min_tmp_disk" to "minimum_tmp_disk_per_node"

removed path | .components.schemas.job_response_properties.properties.pn_min_tmp_disk
new path | .components.schemas.job_response_properties.properties.minimum_tmp_disk_per_node

#### renamed "nodes" to "node_count"

removed path | .components.schemas.job_response_properties.properties.nodes
new path | .components.schemas.job_response_properties.properties.node_count

#### add get job responses schema

new path | .components.schemas.job_submission_response

#### use job_submission for job_submit instead of job_properties

changed field | .paths."/job/submit".requestBody.content."application/json"
changed field | .paths."/job/submit".requestBody.content."application/x-yaml"
new path | .components.schemas.job_submission

#### Set type for "job_properties" schema

new path | .components.schemas.v0.0.36_job_properties.properties.type

#### add security bearer

new path | .security

## Slurm 20.02

### v0.0.35 (src/slurmrestd/ops/openapi.json)

#### Inital Implementation of Slurm REST API.

Last modified 18 March 2022