Slurm Workload Manager - Slurm OpenAPI Plugin Release Notes

# Slurm OpenAPI Plugin Release Notes

These release notes are maintained to provide OpenAPI client programmers a guide to where changes have taken place in the OpenAPI specifications from the OpenAPI plugins which are mainly used by slurmrestd but are also used to generate JSON or YAML output for multiple CLI commands.

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.

The OpenAPI specification should always be generated by slurmrestd once fully configured for normal operation. Query 'GET /openapi/v3' from slurmrestd to get the generated OpenAPI specification. The generated specification can change depending on which plugins are loaded and how they are configured. Any client must be careful to always use the current generated specification for any target slurmrestd daemon. Development of clients should always be designed to use the highest version of the plugins available to avoid needing to port clients sooner than would be otherwise required.

## Slurm 23.11.2

### data_parser/v0.0.40

#### Added field

before | .components.schemas."v0.0.40_job".properties.hold .components.schemas."v0.0.40_job".properties.priority.description .components.schemas."v0.0.40_job_desc_msg".properties.hold .components.schemas."v0.0.40_job_desc_msg".properties.priority.description .components.schemas."v0.0.40_job_info".properties.hold .components.schemas."v0.0.40_job_info".properties.priority.description

#### Add GRES_ONE_TASK_PER_SHARING and GRES_MULT_TASKS_PER_SHARING flags to /job_info, /job_desc_msg output

New property | .components.schemas."v0.0.40_job_info".properties.flags .components.schemas."v0.0.40_job_desc_msg".properties.flags

## Slurm 23.11.1

### data_parser/v0.0.40

#### Renamed field

before | .components.schemas.v0.0.39_job_mem_per_node
after | .components.schemas.v0.0.39_mem_per_node

#### Renamed field

before | .components.schemas.v0.0.39_job_mem_per_cpu
after | .components.schemas.v0.0.39_mem_per_cpu

### openapi/slurmctld

#### Add field

add | .components.schemas."v0.0.40_openapi_meta".properties.slurm.properties.cluster
add | .components.schemas."v0.0.40_partition_info".properties.defaults.properties.partition_memory_per_cpu
add | .components.schemas."v0.0.40_partition_info".properties.defaults.properties.partition_memory_per_node
add | .components.schemas."v0.0.40_partition_info".properties.maximums.properties.partition_memory_per_cpu
add | .components.schemas."v0.0.40_partition_info".properties.maximums.properties.oversubscribe
add | .components.schemas."v0.0.40_partition_info".properties.maximums.properties.partition_memory_per_node

### openapi/slurmdbd

#### Add field

add | .components.schemas."v0.0.40_openapi_meta".properties.slurm.properties.cluster

## Slurm 23.11.0

### openapi/slurmctld

#### New plugin

The openapi/slurmctld plugin forked from the openapi/v0.0.39 plugin.

#### Swap job exit codes to verbose output

Field modified | .components.schemas."v0.0.40_job_info".properties.exit_code
Field modified | .components.schemas."v0.0.40_job_info".properties.derived_exit_code

#### Remove the "required/memory" field. It would dump very large integers if the job required per cpu memory but dump correct amounts for per node memory.

Field removed | .component.schemas."v0.0.40_job".properties.required.properties.memory

#### Add timestamps for last change to data or generation times.

Fields added | .components.schemas."v0.0.40_openapi_job_info_resp".properties.last_backfill .components.schemas."v0.0.40_openapi_job_info_resp".properties.last_update .components.schemas."v0.0.40_openapi_nodes_resp".properties.last_update .components.schemas."v0.0.40_openapi_partition_resp".properties.last_update .components.schemas."v0.0.40_openapi_reservation_resp".properties.last_update .components.schemas."v0.0.40_openapi_licenses_resp".properties.last_update

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

#### Deprecation notice

The v0.0.38 plugin has now been marked as deprecated.

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

#### Removal notice

The v0.0.37 plugin has now been removed.

### openapi/slurmdbd

#### New plugin

The openapi/slurmdbd plugin forked from the openapi/dbv0.0.39 plugin.

#### Swap job exit codes to process exit codes

Field modified | .components.schemas."v0.0.40_job".properties.exit_code
Field modified | .components.schemas."v0.0.40_job".properties.derived_exit_code
Field modified | .components.schemas."v0.0.40_step".properties.exit_code

#### Switch StepID field to be string to match CLI format

Field modified | .components.schemas."v0.0.40_step".properties.step

#### Add fields to assocations

Added | .components.schemas."v0.0.40_assoc".properties.accounting
Added | .components.schemas."v0.0.40_assoc".properties.id
Added | .components.schemas."v0.0.40_assoc".properties.comment

#### Removed field from assocations

Removed | .components.schemas."v0.0.40_assoc".properties.usage

#### Add new /accounts_association endpoint

add | .components.schemas."v0.0.40_openapi_accounts_add_cond_resp_str" .components.schemas."v0.0.40_openapi_accounts_add_cond_resp" .paths."/slurmdb/v0.0.40/accounts_association"

#### Add new /users_association endpoint

add | .components.schemas."v0.0.40_openapi_users_add_cond_resp_str" .components.schemas."v0.0.40_openapi_users_add_cond_resp" .paths."/slurmdb/v0.0.40/users_association"

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

#### Deprecation notice

The dbv0.0.38 plugin has now been marked as deprecated.

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

#### Removal notice

The dbv0.0.37 plugin has now been removed.

## Slurm 23.02.6

### openapi/v0.0.39

#### Correct path for responses types

Updated paths | .paths."/slurm/v0.0.39/licenses".get.responses.default .paths."/slurm/v0.0.39/job/{job_id}".get.responses.default

### openapi/dbv0.0.39

#### Switch integer to have NO_VAL tagging to allow for complex values.

Field modified | .components.schemas."v0.0.39_assoc".properties.max.properties.jobs.properties.per.properties.count .components.schemas."v0.0.39_assoc".properties.max.properties.jobs.properties.active .components.schemas."v0.0.39_assoc".properties.max.properties.jobs.properties.accruing .components.schemas."v0.0.39_assoc".properties.max.properties.jobs.properties.total .components.schemas."v0.0.39_qos".properties.limits.properties.grace_time .components.schemas."v0.0.39_qos".properties.limits.properties.max.properties.active_jobs.properties.accruing .components.schemas."v0.0.39_qos".properties.limits.properties.max.properties.active_jobs.properties.count .components.schemas."v0.0.39_qos".properties.limits.properties.max.properties.wall_clock.properties.per.properties.qos .components.schemas."v0.0.39_qos".properties.limits.properties.max.properties.wall_clock.properties.per.properties.job .components.schemas."v0.0.39_qos".properties.limits.properties.max.properties.jobs.properties.active_jobs.properties.account .components.schemas."v0.0.39_qos".properties.limits.properties.max.properties.jobs.properties.active_jobs.properties.user .components.schemas."v0.0.39_qos".properties.limits.properties.max.properties.jobs.properties.per.properties.account .components.schemas."v0.0.39_qos".properties.limits.properties.max.properties.accruing.properties.per.properties.account .components.schemas."v0.0.39_qos".properties.limits.properties.max.properties.accruing.properties.per.properties.user .components.schemas."v0.0.39_qos".properties.limits.properties.min.properties.priority_threshold

## Slurm 23.02.5

### openapi/v0.0.39

#### Add missing fields

path | .components.schemas."v0.0.39_job_desc_msg".properties.hold .components.schemas."v0.0.39_job_desc_msg".properties.priority .components.schemas."v0.0.39_job_desc_msg".properties.required .components.schemas."v0.0.39_cron_entry".properties.line.properties.start .components.schemas."v0.0.39_partition_info".properties.nodes.properties.allowed_allocation .components.schemas."v0.0.39_partition_info".properties.nodes.properties.configured .components.schemas."v0.0.39_partition_info".properties.accounts.properties.allowed .components.schemas."v0.0.39_partition_info".properties.qos.properties.allowed .components.schemas."v0.0.39_partition_info".properties.qos.properties.deny .components.schemas."v0.0.39_partition_info".properties.tres.properties.billing_weights .components.schemas."v0.0.39_partition_info".properties.cpus.properties.task_binding .components.schemas."v0.0.39_partition_info".properties.default.properties.memory_per_cpu .components.schemas."v0.0.39_partition_info".properties.default.properties.time .components.schemas."v0.0.39_partition_info".properties.maximums.properties.cpus_per_node .components.schemas."v0.0.39_partition_info".properties.maximums.properties.cpus_per_socket .components.schemas."v0.0.39_partition_info".properties.maximums.properties.memory_per_cpu .components.schemas."v0.0.39_partition_info".properties.maximums.properties.nodes .components.schemas."v0.0.39_partition_info".properties.maximums.properties.shares .components.schemas."v0.0.39_partition_info".properties.maximums.properties.time .components.schemas."v0.0.39_partition_info".properties.priority.properties.job_factor .components.schemas."v0.0.39_partition_info".properties.timeouts.properties.resume .components.schemas."v0.0.39_job_info".properties.hold

#### Add required/memory_per_cpu and required/memory_per_node to v0.0.39_job to differientate between jobs that require memory per node or per CPU. Jobs that required per cpu memory will dump very large integers due to internal bit packing required/memory but dump correct amounts for per node memory.

Field added | .components.schemas."v0.0.39_job".properties.required.properties.mem_per_cpu
Field added | .components.schemas."v0.0.39_job".properties.required.properties.mem_per_node

### openapi/dbv0.0.39

#### Add missing fields

path | .components.schemas."v0.0.39_stats_rpc".properties.time.properties.average .components.schemas."v0.0.39_stats_user".properties.time.properties.average .components.schemas."v0.0.39_user".properties.default.properties.account .components.schemas."v0.0.39_assoc".properties.max.properties.tres .components.schemas."v0.0.39_assoc".properties.max.properties.jobs.properties.active .components.schemas."v0.0.39_assoc".properties.max.properties.jobs.properties.accruing .components.schemas."v0.0.39_assoc".properties.max.properties.jobs.properties.total .components.schemas."v0.0.39_assoc".properties.max.properties.jobs.properties.per.properties.count .components.schemas."v0.0.39_assoc".properties.max.properties.jobs.properties.per.properties.accruing .components.schemas."v0.0.39_assoc".properties.max.properties.jobs.properties.per.properties.submitted .components.schemas."v0.0.39_qos".properties.limits.properties.grace_time .components.schemas."v0.0.39_qos".properties.limits.properties.max .components.schemas."v0.0.39_qos".properties.limits.properties.jobs .components.schemas."v0.0.39_qos".properties.limits.properties.factor .components.schemas."v0.0.39_qos".properties.limits.properties.min.properties.priority_threshold .components.schemas."v0.0.39_qos".properties.preempt.properties.list .components.schemas."v0.0.39_qos".properties.preempt.properties.mode .components.schemas."v0.0.39_job".properties.hold .components.schemas."v0.0.39_job".properties.comment.properties.administrator .components.schemas."v0.0.39_job".properties.comment.properties.job .components.schemas."v0.0.39_job".properties.array.properties.job_id .components.schemas."v0.0.39_job".properties.array.properties.limits .components.schemas."v0.0.39_job".properties.array.properties.task_id .components.schemas."v0.0.39_job".properties.time.properties.elapsed .components.schemas."v0.0.39_job".properties.time.properties.eligible .components.schemas."v0.0.39_job".properties.time.properties.end .components.schemas."v0.0.39_job".properties.time.properties.start .components.schemas."v0.0.39_job".properties.time.properties.submission .components.schemas."v0.0.39_job".properties.time.properties.suspended .components.schemas."v0.0.39_job".properties.time.properties.system .components.schemas."v0.0.39_job".properties.time.properties.limit .components.schemas."v0.0.39_job".properties.time.properties.total .components.schemas."v0.0.39_job".properties.time.properties.user.properties.seconds .components.schemas."v0.0.39_job".properties.het.properties.job_id .components.schemas."v0.0.39_job".properties.required.properties.CPUs .components.schemas."v0.0.39_job".properties.reservation.properties.id .components.schemas."v0.0.39_job".properties.state.properties.current .components.schemas."v0.0.39_job".properties.tres.properties.allocated .components.schemas."v0.0.39_step".properties.time.properties.elapsed .components.schemas."v0.0.39_step".properties.time.properties.end .components.schemas."v0.0.39_step".properties.time.properties.start .components.schemas."v0.0.39_step".properties.time.properties.suspended .components.schemas."v0.0.39_step".properties.time.properties.system .components.schemas."v0.0.39_step".properties.time.properties.total .components.schemas."v0.0.39_step".properties.time.properties.user.properties.seconds .components.schemas."v0.0.39_step".properties.nodes.properties.count .components.schemas."v0.0.39_step".properties.nodes.properties.range .components.schemas."v0.0.39_step".properties.CPU.properties.requested_frequency .components.schemas."v0.0.39_step".properties.statistics.properties.CPU .components.schemas."v0.0.39_step".properties.step.properties.id .components.schemas."v0.0.39_step".properties.tres.properties.requested .components.schemas."v0.0.39_step".properties.tres.properties.consumed .components.schemas."v0.0.39_cluster_rec".properties.controller.properties.host

#### Switch integer to have NO_VAL tagging to allow for complex values.

Field modified | .components.schemas."v0.0.39_acct_gather_energy".properties.current_watts
Field modified | .components.schemas."v0.0.39_qos".properties.priority

## Slurm 23.02.4

### openapi/v0.0.39

#### Tag job description environment field as required

Field add | .components.schemas."v0.0.39_job_desc_msg".required

#### Add status schema to default

Field added | .paths."/licenses/".get.responses.default
Field added | .paths."/job/{job_id}".get.responses.default

#### Tag derived_exit_code and exit_code as UINT32_NO_VAL to avoid 4294967295 on still running jobs.

Field changed | .components.schemas."v0.0.39_job_info".properties.derived_exit_code
Field changed | .components.schemas."v0.0.39_job_info".properties.exit_code

## Slurm 23.02.3

### openapi/v0.0.39

#### Correct invalid reference in status schema

Field modified | .components.schemas.status.properties.errors

#### Revert removal of Job description "oversubscribe" field

New field | .components.schemas."v0.0.39_job_desc_msg".properties.oversubscribe
New field | .components.schemas."v0.0.39_job_info".properties.oversubscribe

## Slurm 23.02.2

### openapi/v0.0.39

#### Revert format change for job updates

Modify field | .paths."/job/{job_id}".post.requestBody.content

#### Revert removal of Job description "exclusive" field

New field | .components.schemas."v0.0.39_job_desc_msg".properties.exclusive
New field | .components.schemas."v0.0.39_job_info".properties.exclusive

### openapi/dbv0.0.39

#### Revert removal of Job description "exclusive" field

New field | .components.schemas."v0.0.39_job_desc_msg".properties.exclusive
New field | .components.schemas."v0.0.39_job_info".properties.exclusive

## Slurm 23.02.0

### openapi/v0.0.39

#### New plugin

The v0.0.39 plugin forked from the v0.0.38 plugin.

#### New Schema

Plugin has been converted to new data_parser/v0.0.39 plugin for handling parsing and dumping of all data structures and automatic data structure schema generation. There have been significant changes to all schemas and care needs to be take to update data sent and expected from requests while porting to new plugin. Developers are advised to review the generated OpenAPI output directly while updating.

#### New methods for node queries

DELETE and POST methods are now supported for /slurm/v0.0.39/node/{node_id} paths.

### openapi/v0.0.37

#### Deprecation notice

The v0.0.37 plugin has now been marked as deprecated.

### openapi/v0.0.36

#### Removal notice

The v0.0.36 plugin has now been removed.

### openapi/dbv0.0.39

#### New plugin

The dbv0.0.39 plugin forked from the dbv0.0.38 plugin.

#### New Schema

Plugin has been converted to new data_parser/v0.0.39 plugin for handling parsing and dumping of all data structures and automatic data structure schema generation. There have been significant changes to all schemas and care needs to be take to update data sent and expected from requests while porting to new plugin. Developers are advised to review the generated OpenAPI output directly while updating.

### openapi/dbv0.0.37

#### Deprecation notice

The dbv0.0.37 plugin has now been marked as deprecated.

### openapi/dbv0.0.36

#### Removal notice

The dbv0.0.36 plugin has now been removed.

## Slurm 22.05.8

### openapi/v0.0.38

#### Fix invalid type for nice

Field modified | .components.schemas."v0.0.38_job_properties".properties.nice

### openapi/dbv0.0.38

#### Populate POST /tres/ body

####

new path | .paths."/tres/".post.requestBody
new path | .components.schemas."dbv0.0.38_tres_update"
new field | .components.schemas."dbv0.0.38_update_qos".type

#### Add missing type field

####

new field | .components.schemas."dbv0.0.38_update_account".type
new field | .components.schemas."dbv0.0.38_update_users".type

#### Add missing requestBody field

####

new path | .paths."/associations/".post.requestBody
new path | .paths."/wckeys/".post.requestBody

#### Add missing requestBody field

####

new field | .paths."/config".post.requestBody
new field | .components.schemas."dbv0.0.38_set_config"

#### Correct type of field accounts->accounting in wckeys

####

new schema | .components.schemas."dbv0.0.38_accounting"
new field | .components.schemas."dbv0.0.38_wckey".properties.accounting
removed field | .components.schemas."dbv0.0.38_wckey".properties.accounts

#### Use "QOS" in dbv0.0.38_qos_info

####

previous path | .components.schemas."dbv0.0.38_qos_info".properties.qos
new path | .components.schemas."dbv0.0.38_qos_info".properties.QOS

#### Add oversubscribe option to job submission properties

Field added | .components.schemas."v0.0.38_job_properties".properties.oversubscribe

## Slurm 22.05.7

### openapi/v0.0.38

#### Add missing fields

Field added | .components.schemas."v0.0.38_partition".properties.maximum_memory_per_cpu
Field added | .components.schemas."v0.0.38_partition".properties.default_memory_per_node

## Slurm 22.05.6

### openapi/v0.0.38

#### Fix misnamed reference to prior version

Field modified | .components.schemas."dbv0.0.38_tres_info".properties.tres

## Slurm 22.05.4

### openapi/v0.0.38

#### Add missing field to job properties

Add field prefer to jobs | .components.schemas."v0.0.38_job_properties".properties.prefer

## Slurm 22.05.0

### openapi/dbv0.0.38

#### add plugin

new dbv0.0.38 openapi plugin | clone of existing dbv0.0.37 openapi plugin all paths renamed from dbv0.0.37 to dbv0.0.38

#### Add POST method for /associations

####

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

#### Correct placement of step TRES

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

#### Add association fields

new fields | .components.schemas."dbv0.0.38_association".properties.is_default .components.schemas."dbv0.0.38_association".properties.max.tres.group.minutes .components.schemas."dbv0.0.38_association".properties.max.tres.group.active .components.schemas."dbv0.0.38_association".properties.max.jobs.active .components.schemas."dbv0.0.38_association".properties.max.jobs.accruing .components.schemas."dbv0.0.38_association".properties.max.jobs.total .components.schemas."dbv0.0.38_association".properties.max.tres.minutes.per.job

#### Add error response contents

new fields | .paths."/account/{account_name}"[].responses.default[] .paths."/accounts/"[].responses.default[] .paths."/association/"[].responses.default[] .paths."/associations/"[].responses.default[] .paths."/cluster/{cluster_name}"[].responses.default[] .paths."/clusters/"[].responses.default[] .paths."/config/"[].responses.default[] .paths."/diag/"[].responses.default[] .paths."/job/{job_id}"[].responses.default[] .paths."/jobs/"[].responses.default[] .paths."/qos/{qos_name}/"[].responses.default[] .paths."/qos/"[].responses.default[] .paths."/tres/"[].responses.default[] .paths."/users/"[].responses.default[] .paths."/user/{user_name}"[].responses.default[] .paths."/wckeys/"[].responses.default[] .paths."/wckey/{wckey}"[].responses.default[] .components.schemas."dbv0.0.38_meta"

#### Move incorrectly named field

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

#### Move incorrectly named field

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

#### Add QOS fields

new fields | .components.schemas."dbv0.0.38_qos".properties.limits.properties.factor .components.schemas."dbv0.0.38_qos".properties.limits.properties.max.properties.accruing.properties.per.properties.account .components.schemas."dbv0.0.38_qos".properties.limits.properties.max.properties.accruing.properties.per.properties.user

#### Add diag fields

new fields | .components.schemas."v0.0.38_diag".bf_table_size .components.schemas."v0.0.38_diag".bf_table_size_mean

#### Split up token and user

change array values | .security

#### Add meta entry

field added | .components.schemas."dbv0.0.38_diag".properties.meta .components.schemas."dbv0.0.38_account_info".properties.meta .components.schemas."dbv0.0.38_response_account_delete".properties.meta .components.schemas."dbv0.0.38_response_wckey_add".properties.meta .components.schemas."dbv0.0.38_wckey_info".properties.meta .components.schemas."dbv0.0.38_response_wckey_delete".properties.meta .components.schemas."dbv0.0.38_response_cluster_add".properties.meta .components.schemas."dbv0.0.38_response_cluster_delete".properties.meta .components.schemas."dbv0.0.38_response_user_update".properties.meta .components.schemas."dbv0.0.38_user_info".properties.meta .components.schemas."dbv0.0.38_response_user_delete".properties.meta .components.schemas."dbv0.0.38_response_association_delete".properties.meta .components.schemas."dbv0.0.38_associations_info".properties.meta .components.schemas."dbv0.0.38_qos_info".properties.meta .components.schemas."dbv0.0.38_response_qos_delete".properties.meta .components.schemas."dbv0.0.38_response_associations".properties.meta .components.schemas."dbv0.0.38_response_tres".properties.meta .components.schemas."dbv0.0.38_tres_info".properties.meta .components.schemas."dbv0.0.38_job_info".properties.meta .components.schemas."dbv0.0.38_config_info".properties.meta .components.schemas."dbv0.0.38_account_response".properties.meta .components.schemas."dbv0.0.38_config_response".properties.meta .components.schemas."dbv0.0.38_errors"

#### Add missing response field

new fields | .components.schemas."dbv0.0.38_response_association_delete".properties.removed_associations .components.schemas."dbv0.0.38_error".properties.error_number .components.schemas."dbv0.0.38_error".properties.source .components.schemas."dbv0.0.38_error".properties.description .components.schemas."/clusters/".properties.post.properties.requestBody .components.schemas."dbv0.0.38_clusters_properties"

#### Switch field from object to array

modified field | .components.schemas."dbv0.0.38_user".properties.associations

#### Add missing field

new field | .components.schemas."dbv0.0.38_qos".properties.limits.properties.max.properties.tres.properties.minutes.properties.per.properties.qos .components.schemas."dbv0.0.38_qos".properties.name

#### Correct field type to reference

modified field | .components.schemas."dbv0.0.38_config_info".properties.tres .components.schemas."dbv0.0.38".properties.het.properties.job_id .components.schemas."dbv0.0.38".properties.het.properties.job_offset .components.schemas."dbv0.0.38_job_step".properties.task

#### Add requestBody field and associated schema

new fields | .components.schemas."dbv0.0.38_update_users" .paths."/users/".post.requestBody' .components.schemas."dbv0.0.38_update_accounts" .paths."/accounts/".post.requestBody'

#### Correct parameter styles to "form"

modified fields | .paths."/job/{job_id}"[].get.parameters[]|select(.name="job_id)"

#### Change operationId naming schema to include url path

modified fields | .paths[][].operationId

#### Fix issue where association's QOS list consisted of IDs instead of names

modified fields | .components.schemas."dbv0.0.38_association".properties.qos

#### Add POST method for /qos

new method | .paths."/qos/".post
new path | .components.schemas."dbv0.0.38_response_qos"
new path | .components.schemas."dbv0.0.38_update_qos"

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

new parent field | .components.schemas."dbv0.0.38_diag".properties.statistics
subordinated fields | .components.schemas."dbv0.0.38_diag".properties.time_start .components.schemas."dbv0.0.38_diag".properties.rollups .components.schemas."dbv0.0.38_diag".properties.RPCs .components.schemas."dbv0.0.38_diag".properties.users

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

Change job_id parameter to string | .paths."/job/{job_id}".get.parameters[].schema

#### Add with_deleted input parameter to GET /user, /users

New parameter | .paths."/user/{user_name}".get.parameters[] | select(.name=="with_deleted") .paths."/users/".get.parameters[] | select(.name=="with_deleted")

#### Add deleted flag to /user, /users output

New property | .components.schemas."dbv0.0.38_user".properties.flags

#### Add with_deleted input parameter to GET /qos

New parameter | .paths."/qos/".get.parameters[] | select(.name=="with_deleted") .paths."/qos/{qos_name}".get.parameters[] | select(.name=="with_deleted")

#### Add with_deleted input parameter to GET /account, /accounts

New parameter | .paths."/account/{account_name}".get.parameters[] | select(.name=="with_deleted") .paths."/accounts/".get.parameters[] | select(.name=="with_deleted")

#### Add container field to job description

new fields | .components.schemas."dbv0.0.38_job".properties.container

#### Enforce limit to only DELETE or GET a single association instead of using required parameters.

changed value | .paths."/association/".get.parameters[].required .paths."/association/".delete.parameters[].required

#### Add filter parameters to GET /associations

new method | .paths."/associations/".get.parameters

### openapi/dbv0.0.36

#### Deprecation notice

The dbv0.0.36 plugin has now been marked as deprecated.

### openapi/v0.0.38

#### add plugin

new v0.0.38 openapi plugin | clone of existing v0.0.37 openapi plugin all paths renamed from v0.0.37 to v0.0.38

#### 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

#### Correct multiple type mistakes

####

modified entry | .components.schemas."v0.0.38_job_response_properties".properties.array_job_id
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.array_task_id
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.array_max_tasks
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.association_id
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.billable_tres
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.deadline
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.delay_boot
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.derived_exit_code
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.group_id
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.job_id
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.last_sched_evaluation
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.max_cpus
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.max_nodes
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.nice
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.tasks_per_core
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.tasks_per_socket
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.tasks_per_board
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.cpus
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.node_count
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.tasks
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.het_job_id
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.het_job_offset
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.memory_per_node
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.memory_per_cpu
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.minimum_cpus_per_node
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.minimum_tmp_disk_per_node
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.priority
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.restart_cnt
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.sockets_per_board
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.sockets_per_node
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.time_limit
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.time_minimum
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.threads_per_core
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.user_id
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.allocated_nodes
modified entry | .components.schemas."v0.0.38_job_response_properties".properties.cpus

#### Fix errant space after JOB_CPUS_SET flag.

Fix response. | .components.schemas."v0.0.37_job_response_properties".properties.flags

#### Add new /licenses endpoint

add | .components.schemas."v0.0.38_license" .components.schemas."v0.0.38_licenses" .paths."/slurm/v0.0.38/licenses"

#### Add meta entry

field added | .components.schemas."v0.0.38_diag".properties.meta .components.schemas."v0.0.38_pings".properties.meta .components.schemas."v0.0.38_partitions_response".properties.meta .components.schemas."v0.0.38_reservations_response".properties.meta .components.schemas."v0.0.38_job_submission_response".properties.meta .components.schemas."v0.0.38_jobs_response".properties.meta .components.schemas."v0.0.38_nodes_response".properties.meta .components.schemas."v0.0.38_errors"

#### Add error response contents

new fields | .paths."/diag/"[].responses.default[] .paths."/ping/"[].responses.default[] .paths."/jobs/"[].responses.default[] .paths."/job/{job_id}"[].responses.default[] .paths."/job/submit"[].responses.default[] .paths."/nodes/"[].responses.default[] .paths."/node/{node_name}"[].responses.default[] .paths."/partitions/"[].responses.default[] .paths."/partition/{partition_name}"[].responses.default[] .paths."/reservations/"[].responses.default[] .paths."/reservation/{reservation_name}"[].responses.default[]

#### Rename errno to error_number

rename | .components.schemas."dbv0.0.38_error".properties.errnum .components.schemas."dbv0.0.38_error".properties.error_number

#### Correct parameter styles to "form"

modified fields | .paths."/jobs/"[].parameters[]|select(.name="update_type)" .paths."/job/{job_id}"[].get.parameters[]|select(.name="job_id)" .paths."/job/{job_id}"[].post.parameters[]|select(.name="job_id)" .paths."/nodes/"[].get.parameters[]|select(.name="update_time)" .paths."/node/{node_name}"[].get.parameters[]|select(.name="node_name)" .paths."/partitions/"[].get.parameters[]|select(.name="update_time)" .paths."/partition/{partition_name}"[].get.parameters[]|select(.name="partition_name)" .paths."/partition/{partition_name}"[].get.parameters[]|select(.name="update_time)" .paths."/reservations/"[].get.parameters[]|select(.name="reservation_name)" .paths."/reservations/"[].get.parameters[]|select(.name="update_time)"

#### Change operationId naming schema to include url path

modified fields | .paths[][].operationId

#### Response changed to move "cores" into "sockets" to differentiate which cores and sockets are allocated. Changed from named dictionary of node names to array containing objects with nodename set.

Updated response. | .components.schemas."v0.0.38_job_resources".properties.allocated_nodes .components.schemas."v0.0.38_node_allocation"

#### New fields add to diag endpoint

new fields | .components.schemas."v0.0.38_diag_rpcm".rpcs_by_message_type .components.schemas."v0.0.38_diag_rpcm".rpcs_by_user .components.schemas."v0.0.38_diag_rpcm" .components.schemas."v0.0.38_diag_rpcu"

#### Add container field to job description

new fields | .components.schemas."v0.0.38_job_response_properties".properties.container .components.schemas."v0.0.38_job_properties".properties.container

#### Add method to delete associations using filters

new method | .paths."/associations/".delete

#### Rename response schema entry

previous path | .components.schemas."dbv0.0.38_response_association_delete"
new path | .components.schemas."dbv0.0.38_response_associations_delete"

### openapi/v0.0.36

#### Deprecation notice

The v0.0.36 plugin has now been marked as deprecated.

### openapi/v0.0.35

#### Removal notice

The v0.0.35 plugin has now been removed.

## Slurm 21.08.8

### openapi/dbv0.0.37

#### 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

#### 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

#### 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

#### 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

#### 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

#### 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

#### Deprecation notice

The v0.0.35 plugin has now been deprecated.

### openapi/dbv0.0.37

#### 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

#### 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

#### 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

#### 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

#### 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

#### Initial Implementation of database queries.

### openapi/v0.0.36

#### 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

#### Initial Implementation of Slurm REST API.

Last modified 25 August 2023