// Package openapi provides primitives to interact with the openapi HTTP API.
//
// Code generated by github.com/deepmap/oapi-codegen version v1.12.3 DO NOT EDIT.
package openapi

const (
	TokenScopes = "token.Scopes"
	UserScopes  = "user.Scopes"
)

// Defines values for V0039JobPropertiesExclusive.
const (
	False V0039JobPropertiesExclusive = "false"
	Mcs   V0039JobPropertiesExclusive = "mcs"
	True  V0039JobPropertiesExclusive = "true"
	User  V0039JobPropertiesExclusive = "user"
)

// Defines values for V0039JobPropertiesGresFlags.
const (
	DisableBinding V0039JobPropertiesGresFlags = "disable-binding"
	EnforceBinding V0039JobPropertiesGresFlags = "enforce-binding"
)

// Defines values for V0039JobPropertiesOpenMode.
const (
	Append   V0039JobPropertiesOpenMode = "append"
	Truncate V0039JobPropertiesOpenMode = "truncate"
)

// Defines values for V0039PingPing.
const (
	DOWN V0039PingPing = "DOWN"
	UP   V0039PingPing = "UP"
)

// Defines values for V0039Signal.
const (
	ABRT V0039Signal = "ABRT"
	ALRM V0039Signal = "ALRM"
	CONT V0039Signal = "CONT"
	HUP  V0039Signal = "HUP"
	INT  V0039Signal = "INT"
	KILL V0039Signal = "KILL"
	QUIT V0039Signal = "QUIT"
	STOP V0039Signal = "STOP"
	TERM V0039Signal = "TERM"
	TSTP V0039Signal = "TSTP"
	TTIN V0039Signal = "TTIN"
	TTOU V0039Signal = "TTOU"
	URG  V0039Signal = "URG"
	USR1 V0039Signal = "USR1"
	USR2 V0039Signal = "USR2"
)

// V0039Diag defines model for v0.0.39_diag.
type V0039Diag struct {
	// Errors slurm errors
	Errors *[]V0039Error `json:"errors,omitempty"`
	Meta   *V0039Meta    `json:"meta,omitempty"`

	// Statistics Slurm statistics
	Statistics *struct {
		// AgentCount Agent count
		AgentCount *int `json:"agent_count,omitempty"`

		// AgentQueueSize Agent queue size
		AgentQueueSize *int `json:"agent_queue_size,omitempty"`

		// AgentThreadCount Agent thread count
		AgentThreadCount *int `json:"agent_thread_count,omitempty"`

		// BfActive Backfill Schedule currently active
		BfActive *bool `json:"bf_active,omitempty"`

		// BfBackfilledHetJobs Total backfilled heterogeneous job components
		BfBackfilledHetJobs *int `json:"bf_backfilled_het_jobs,omitempty"`

		// BfBackfilledJobs Total backfilled jobs (since last slurm start)
		BfBackfilledJobs *int `json:"bf_backfilled_jobs,omitempty"`

		// BfCycleCounter Backfill Schedule Total cycles
		BfCycleCounter *int `json:"bf_cycle_counter,omitempty"`

		// BfCycleLast Backfill Schedule Last cycle time
		BfCycleLast *int `json:"bf_cycle_last,omitempty"`

		// BfCycleMax Backfill Schedule Max cycle time
		BfCycleMax *int `json:"bf_cycle_max,omitempty"`

		// BfCycleMean Backfill Schedule Mean cycle
		BfCycleMean *int `json:"bf_cycle_mean,omitempty"`

		// BfDepthMean Backfill Schedule Depth Mean
		BfDepthMean *int `json:"bf_depth_mean,omitempty"`

		// BfDepthMeanTry Backfill Schedule Depth Mean (try sched)
		BfDepthMeanTry *int `json:"bf_depth_mean_try,omitempty"`

		// BfLastBackfilledJobs Total backfilled jobs (since last stats cycle start)
		BfLastBackfilledJobs *int `json:"bf_last_backfilled_jobs,omitempty"`

		// BfLastDepth Backfill Schedule Last depth cycle
		BfLastDepth *int `json:"bf_last_depth,omitempty"`

		// BfLastDepthTry Backfill Schedule Mean cycle (try sched)
		BfLastDepthTry *int `json:"bf_last_depth_try,omitempty"`

		// BfQueueLen Backfill Schedule Last queue length
		BfQueueLen *int `json:"bf_queue_len,omitempty"`

		// BfQueueLenMean Backfill Schedule Mean queue length
		BfQueueLenMean *int `json:"bf_queue_len_mean,omitempty"`

		// BfTableSize Backfill Schedule Last table size
		BfTableSize *int `json:"bf_table_size,omitempty"`

		// BfTableSizeMean Backfill Schedule Mean table size
		BfTableSizeMean *int `json:"bf_table_size_mean,omitempty"`

		// BfWhenLastCycle Last cycle timestamp
		BfWhenLastCycle *int `json:"bf_when_last_cycle,omitempty"`

		// DbdAgentQueueSize DBD Agent queue size
		DbdAgentQueueSize *int `json:"dbd_agent_queue_size,omitempty"`

		// GettimeofdayLatency Latency for 1000 calls to gettimeofday()
		GettimeofdayLatency *int `json:"gettimeofday_latency,omitempty"`

		// JobStatesTs Job states timestamp
		JobStatesTs *int `json:"job_states_ts,omitempty"`

		// JobsCanceled Job cancelled
		JobsCanceled *int `json:"jobs_canceled,omitempty"`

		// JobsCompleted Job completed
		JobsCompleted *int `json:"jobs_completed,omitempty"`

		// JobsFailed Job failed
		JobsFailed *int `json:"jobs_failed,omitempty"`

		// JobsPending Job pending
		JobsPending *int `json:"jobs_pending,omitempty"`

		// JobsRunning Job running
		JobsRunning *int `json:"jobs_running,omitempty"`

		// JobsStarted Job started
		JobsStarted *int `json:"jobs_started,omitempty"`

		// JobsSubmitted Job submitted
		JobsSubmitted *int `json:"jobs_submitted,omitempty"`

		// PartsPacked partition records packed
		PartsPacked *int `json:"parts_packed,omitempty"`

		// ReqTime generation time
		ReqTime *int `json:"req_time,omitempty"`

		// ReqTimeStart data since
		ReqTimeStart *int `json:"req_time_start,omitempty"`

		// RpcsByMessageType Remote Procedure Call statistics by message type
		RpcsByMessageType *[]V0039DiagRpcm `json:"rpcs_by_message_type,omitempty"`

		// RpcsByUser Remote Procedure Call statistics by user
		RpcsByUser *[]V0039DiagRpcu `json:"rpcs_by_user,omitempty"`

		// ScheduleCycleLast Main Schedule last cycle
		ScheduleCycleLast *int `json:"schedule_cycle_last,omitempty"`

		// ScheduleCycleMax Main Schedule max cycle
		ScheduleCycleMax *int `json:"schedule_cycle_max,omitempty"`

		// ScheduleCycleMean Average time for Schedule Max cycle
		ScheduleCycleMean *int `json:"schedule_cycle_mean,omitempty"`

		// ScheduleCycleMeanDepth Average depth for Schedule Max cycle
		ScheduleCycleMeanDepth *int `json:"schedule_cycle_mean_depth,omitempty"`

		// ScheduleCyclePerMinute Main Schedule Cycles per minute
		ScheduleCyclePerMinute *int `json:"schedule_cycle_per_minute,omitempty"`

		// ScheduleCycleTotal Main Schedule cycle iterations
		ScheduleCycleTotal *int `json:"schedule_cycle_total,omitempty"`

		// ScheduleQueueLength Main Schedule Last queue length
		ScheduleQueueLength *int `json:"schedule_queue_length,omitempty"`

		// ServerThreadCount Server thread count
		ServerThreadCount *int `json:"server_thread_count,omitempty"`
	} `json:"statistics,omitempty"`
}

// V0039DiagRpcm defines model for v0.0.39_diag_rpcm.
type V0039DiagRpcm struct {
	// AverageTime average time
	AverageTime *int `json:"average_time,omitempty"`

	// Count rpc count
	Count *int `json:"count,omitempty"`

	// MessageType message type
	MessageType *string `json:"message_type,omitempty"`

	// TotalTime total time
	TotalTime *int `json:"total_time,omitempty"`

	// TypeId message type id
	TypeId *int `json:"type_id,omitempty"`
}

// V0039DiagRpcu defines model for v0.0.39_diag_rpcu.
type V0039DiagRpcu struct {
	// AverageTime average time
	AverageTime *int `json:"average_time,omitempty"`

	// Count rpc count
	Count *int `json:"count,omitempty"`

	// TotalTime total time
	TotalTime *int `json:"total_time,omitempty"`

	// User user
	User *string `json:"user,omitempty"`

	// UserId user id
	UserId *int `json:"user_id,omitempty"`
}

// V0039Error defines model for v0.0.39_error.
type V0039Error struct {
	// Error error message
	Error *string `json:"error,omitempty"`

	// ErrorNumber Slurm internal error number
	ErrorNumber *int `json:"error_number,omitempty"`
}

// V0039Errors Slurm errors
type V0039Errors = []V0039Error

// V0039JobProperties defines model for v0.0.39_job_properties.
type V0039JobProperties struct {
	// Account Charge resources used by this job to specified account.
	Account *string `json:"account,omitempty"`

	// AccountGatherFrequency Define the job accounting and profiling sampling intervals.
	AccountGatherFrequency *string `json:"account_gather_frequency,omitempty"`

	// Argv Arguments to the script.
	Argv *[]string `json:"argv,omitempty"`

	// Array Submit a job array, multiple jobs to be executed with identical parameters. The indexes specification identifies what array index values should be used.
	Array *string `json:"array,omitempty"`

	// BatchFeatures features required for batch script's node
	BatchFeatures *string `json:"batch_features,omitempty"`

	// BeginTime Submit the batch script to the Slurm controller immediately, like normal, but tell the controller to defer the allocation of the job until the specified time.
	BeginTime *int64 `json:"begin_time,omitempty"`

	// BurstBuffer Burst buffer specification.
	BurstBuffer *string `json:"burst_buffer,omitempty"`

	// ClusterConstraint Specifies features that a federated cluster must have to have a sibling job submitted to it.
	ClusterConstraint *string `json:"cluster_constraint,omitempty"`

	// Comment An arbitrary comment.
	Comment *string `json:"comment,omitempty"`

	// Constraints node features required by job.
	Constraints *string `json:"constraints,omitempty"`

	// Container absolute path to OCI container bundle
	Container *string `json:"container,omitempty"`

	// CoreSpecification Count of specialized threads per node reserved by the job for system operations and not used by the application.
	CoreSpecification *int `json:"core_specification,omitempty"`

	// CoresPerSocket Restrict node selection to nodes with at least the specified number of cores per socket.
	CoresPerSocket *int `json:"cores_per_socket,omitempty"`

	// CpuBinding Cpu binding
	CpuBinding *string `json:"cpu_binding,omitempty"`

	// CpuBindingHint Cpu binding hint
	CpuBindingHint *string `json:"cpu_binding_hint,omitempty"`

	// CpuFrequency Request that job steps initiated by srun commands inside this sbatch script be run at some requested frequency if possible, on the CPUs selected for the step on the compute node(s).
	CpuFrequency *string `json:"cpu_frequency,omitempty"`

	// CpusPerGpu Number of CPUs requested per allocated GPU.
	CpusPerGpu *string `json:"cpus_per_gpu,omitempty"`

	// CpusPerTask Advise the Slurm controller that ensuing job steps will require ncpus number of processors per task.
	CpusPerTask *int `json:"cpus_per_task,omitempty"`

	// CurrentWorkingDirectory Instruct Slurm to connect the batch script's standard output directly to the file name.
	CurrentWorkingDirectory *string `json:"current_working_directory,omitempty"`

	// Deadline Remove the job if no ending is possible before this deadline (start > (deadline - time[-min])).
	Deadline *string `json:"deadline,omitempty"`

	// DelayBoot Do not reboot nodes in order to satisfied this job's feature specification if the job has been eligible to run for less than this time period.
	DelayBoot *int `json:"delay_boot,omitempty"`

	// Dependency Defer the start of this job until the specified dependencies have been satisfied completed.
	Dependency *string `json:"dependency,omitempty"`

	// Distribution Specify alternate distribution methods for remote processes.
	Distribution *string `json:"distribution,omitempty"`

	// Environment Dictionary of environment entries.
	Environment map[string]interface{} `json:"environment"`

	// Exclusive The job allocation can share nodes just other users with the "user" option or with the "mcs" option).
	Exclusive *V0039JobPropertiesExclusive `json:"exclusive,omitempty"`

	// GetUserEnvironment Load new login environment for user on job node.
	GetUserEnvironment *bool `json:"get_user_environment,omitempty"`

	// GpuBinding Requested binding of tasks to GPU.
	GpuBinding *string `json:"gpu_binding,omitempty"`

	// GpuFrequency Requested GPU frequency.
	GpuFrequency *string `json:"gpu_frequency,omitempty"`

	// Gpus GPUs per job.
	Gpus *string `json:"gpus,omitempty"`

	// GpusPerNode GPUs per node.
	GpusPerNode *string `json:"gpus_per_node,omitempty"`

	// GpusPerSocket GPUs per socket.
	GpusPerSocket *string `json:"gpus_per_socket,omitempty"`

	// GpusPerTask GPUs per task.
	GpusPerTask *string `json:"gpus_per_task,omitempty"`

	// Gres Specifies a comma delimited list of generic consumable resources.
	Gres *string `json:"gres,omitempty"`

	// GresFlags Specify generic resource task binding options.
	GresFlags *V0039JobPropertiesGresFlags `json:"gres_flags,omitempty"`

	// Hold Specify the job is to be submitted in a held state (priority of zero).
	Hold *bool `json:"hold,omitempty"`

	// KillOnInvalidDependency If a job has an invalid dependency, then Slurm is to terminate it.
	KillOnInvalidDependency *bool `json:"kill_on_invalid_dependency,omitempty"`

	// Licenses Specification of licenses (or other resources available on all nodes of the cluster) which must be allocated to this job.
	Licenses *string `json:"licenses,omitempty"`

	// MailType Notify user by email when certain event types occur.
	MailType *string `json:"mail_type,omitempty"`

	// MailUser User to receive email notification of state changes as defined by mail_type.
	MailUser *string `json:"mail_user,omitempty"`

	// McsLabel This parameter is a group among the groups of the user.
	McsLabel *string `json:"mcs_label,omitempty"`

	// MemoryBinding Bind tasks to memory.
	MemoryBinding *string `json:"memory_binding,omitempty"`

	// MemoryPerCpu Minimum real memory per cpu (MB).
	MemoryPerCpu *int `json:"memory_per_cpu,omitempty"`

	// MemoryPerGpu Minimum memory required per allocated GPU.
	MemoryPerGpu *int `json:"memory_per_gpu,omitempty"`

	// MemoryPerNode Minimum real memory per node (MB).
	MemoryPerNode *int `json:"memory_per_node,omitempty"`

	// MinimumCpusPerNode Minimum number of CPUs per node.
	MinimumCpusPerNode *int `json:"minimum_cpus_per_node,omitempty"`

	// MinimumNodes If a range of node counts is given, prefer the smaller count.
	MinimumNodes *bool `json:"minimum_nodes,omitempty"`

	// Name Specify a name for the job allocation.
	Name *string `json:"name,omitempty"`

	// Nice Run the job with an adjusted scheduling priority within Slurm.
	Nice *int `json:"nice,omitempty"`

	// NoKill Do not automatically terminate a job if one of the nodes it has been allocated fails.
	NoKill *bool `json:"no_kill,omitempty"`

	// Nodes Request that a minimum of minnodes nodes and a maximum node count.
	Nodes *[]int `json:"nodes,omitempty"`

	// OpenMode Open the output and error files using append or truncate mode as specified.
	OpenMode *V0039JobPropertiesOpenMode `json:"open_mode,omitempty"`

	// Partition Request a specific partition for the resource allocation.
	Partition *string `json:"partition,omitempty"`

	// Prefer Comma delimited list of features for scheduler to prefer but not a strict requirement like a constraint. This value is not dumped but can be used for job submission.
	Prefer *string `json:"prefer,omitempty"`

	// Priority Request a specific job priority.
	Priority *string `json:"priority,omitempty"`

	// Qos Request a quality of service for the job.
	Qos *string `json:"qos,omitempty"`

	// Requeue Specifies that the batch job should eligible to being requeue.
	Requeue *bool `json:"requeue,omitempty"`

	// Reservation Allocate resources for the job from the named reservation.
	Reservation *string `json:"reservation,omitempty"`

	// Signal When a job is within sig_time seconds of its end time, send it the signal sig_num.
	Signal *string `json:"signal,omitempty"`

	// SocketsPerNode Restrict node selection to nodes with at least the specified number of sockets.
	SocketsPerNode *int `json:"sockets_per_node,omitempty"`

	// SpreadJob Spread the job allocation over as many nodes as possible and attempt to evenly distribute tasks across the allocated nodes.
	SpreadJob *bool `json:"spread_job,omitempty"`

	// StandardError Instruct Slurm to connect the batch script's standard error directly to the file name.
	StandardError *string `json:"standard_error,omitempty"`

	// StandardInput Instruct Slurm to connect the batch script's standard input directly to the file name specified.
	StandardInput *string `json:"standard_input,omitempty"`

	// StandardOutput Instruct Slurm to connect the batch script's standard output directly to the file name.
	StandardOutput *string `json:"standard_output,omitempty"`

	// Tasks Advises the Slurm controller that job steps run within the allocation will launch a maximum of number tasks and to provide for sufficient resources.
	Tasks *int `json:"tasks,omitempty"`

	// TasksPerCore Request the maximum ntasks be invoked on each core.
	TasksPerCore *int `json:"tasks_per_core,omitempty"`

	// TasksPerNode Request the maximum ntasks be invoked on each node.
	TasksPerNode *int `json:"tasks_per_node,omitempty"`

	// TasksPerSocket Request the maximum ntasks be invoked on each socket.
	TasksPerSocket *int `json:"tasks_per_socket,omitempty"`

	// ThreadSpecification Count of specialized threads per node reserved by the job for system operations and not used by the application.
	ThreadSpecification *int `json:"thread_specification,omitempty"`

	// ThreadsPerCore Restrict node selection to nodes with at least the specified number of threads per core.
	ThreadsPerCore *int `json:"threads_per_core,omitempty"`

	// TimeLimit Step time limit.
	TimeLimit *int `json:"time_limit,omitempty"`

	// TimeMinimum Minimum run time in minutes.
	TimeMinimum *int `json:"time_minimum,omitempty"`

	// WaitAllNodes Do not begin execution until all nodes are ready for use.
	WaitAllNodes *bool `json:"wait_all_nodes,omitempty"`

	// Wckey Specify wckey to be used with job.
	Wckey *string `json:"wckey,omitempty"`
}

// V0039JobPropertiesExclusive The job allocation can share nodes just other users with the "user" option or with the "mcs" option).
type V0039JobPropertiesExclusive string

// V0039JobPropertiesGresFlags Specify generic resource task binding options.
type V0039JobPropertiesGresFlags string

// V0039JobPropertiesOpenMode Open the output and error files using append or truncate mode as specified.
type V0039JobPropertiesOpenMode string

// V0039JobResources defines model for v0.0.39_job_resources.
type V0039JobResources struct {
	// AllocatedCpus number of assigned job cpus
	AllocatedCpus *int `json:"allocated_cpus,omitempty"`

	// AllocatedHosts number of assigned job hosts
	AllocatedHosts *int `json:"allocated_hosts,omitempty"`

	// Nodes list of assigned job nodes
	Nodes *string `json:"nodes,omitempty"`
}

// V0039JobResponseProperties defines model for v0.0.39_job_response_properties.
type V0039JobResponseProperties struct {
	// Account Charge resources used by this job to specified account
	Account *string `json:"account,omitempty"`

	// AccrueTime time job is eligible for running
	AccrueTime *int64 `json:"accrue_time,omitempty"`

	// AdminComment administrator's arbitrary comment
	AdminComment *string `json:"admin_comment,omitempty"`

	// ArrayJobId job_id of a job array or 0 if N/A
	ArrayJobId *int `json:"array_job_id,omitempty"`

	// ArrayMaxTasks Maximum number of running array tasks
	ArrayMaxTasks *int `json:"array_max_tasks,omitempty"`

	// ArrayTaskId task_id of a job array
	ArrayTaskId *int `json:"array_task_id,omitempty"`

	// ArrayTaskString string expression of task IDs in this record
	ArrayTaskString *string `json:"array_task_string,omitempty"`

	// AssociationId association id for job
	AssociationId *int `json:"association_id,omitempty"`

	// BatchFeatures features required for batch script's node
	BatchFeatures *string `json:"batch_features,omitempty"`

	// BatchFlag if batch: queued job with script
	BatchFlag *bool `json:"batch_flag,omitempty"`

	// BatchHost name of host running batch script
	BatchHost *string `json:"batch_host,omitempty"`

	// BillableTres billable TRES
	BillableTres *float32 `json:"billable_tres,omitempty"`

	// BurstBuffer burst buffer specifications
	BurstBuffer *string `json:"burst_buffer,omitempty"`

	// BurstBufferState burst buffer state info
	BurstBufferState *string `json:"burst_buffer_state,omitempty"`

	// Cluster name of cluster that the job is on
	Cluster *string `json:"cluster,omitempty"`

	// ClusterFeatures comma separated list of required cluster features
	ClusterFeatures *string `json:"cluster_features,omitempty"`

	// Command command to be executed
	Command *string `json:"command,omitempty"`

	// Comment arbitrary comment
	Comment *string `json:"comment,omitempty"`

	// Container absolute path to OCI container bundle
	Container *string `json:"container,omitempty"`

	// Contiguous job requires contiguous nodes
	Contiguous *bool `json:"contiguous,omitempty"`

	// CoreSpec specialized core count
	CoreSpec *string `json:"core_spec,omitempty"`

	// CoresPerSocket cores per socket required by job
	CoresPerSocket *int `json:"cores_per_socket,omitempty"`

	// CpuFrequencyGovernor cpu frequency governor
	CpuFrequencyGovernor *string `json:"cpu_frequency_governor,omitempty"`

	// CpuFrequencyMaximum Maximum cpu frequency
	CpuFrequencyMaximum *string `json:"cpu_frequency_maximum,omitempty"`

	// CpuFrequencyMinimum Minimum cpu frequency
	CpuFrequencyMinimum *string `json:"cpu_frequency_minimum,omitempty"`

	// Cpus minimum number of cpus required by job
	Cpus *int `json:"cpus,omitempty"`

	// CpusPerTask number of processors required for each task
	CpusPerTask *string `json:"cpus_per_task,omitempty"`

	// CpusPerTres semicolon delimited list of TRES=# values
	CpusPerTres *string `json:"cpus_per_tres,omitempty"`

	// CurrentWorkingDirectory pathname of working directory
	CurrentWorkingDirectory *string `json:"current_working_directory,omitempty"`

	// Deadline job start deadline
	Deadline *int `json:"deadline,omitempty"`

	// DelayBoot command to be executed
	DelayBoot *int `json:"delay_boot,omitempty"`

	// Dependency synchronize job execution with other jobs
	Dependency *string `json:"dependency,omitempty"`

	// DerivedExitCode highest exit code of all job steps
	DerivedExitCode *int `json:"derived_exit_code,omitempty"`

	// EligibleTime time job is eligible for running
	EligibleTime *int64 `json:"eligible_time,omitempty"`

	// EndTime time of termination, actual or expected
	EndTime *int64 `json:"end_time,omitempty"`

	// ExcludedNodes comma separated list of excluded nodes
	ExcludedNodes *string `json:"excluded_nodes,omitempty"`

	// ExitCode exit code for job
	ExitCode *int `json:"exit_code,omitempty"`

	// Features comma separated list of required features
	Features *string `json:"features,omitempty"`

	// FederationOrigin Origin cluster's name
	FederationOrigin *string `json:"federation_origin,omitempty"`

	// FederationSiblingsActive string of active sibling names
	FederationSiblingsActive *string `json:"federation_siblings_active,omitempty"`

	// FederationSiblingsViable string of viable sibling names
	FederationSiblingsViable *string `json:"federation_siblings_viable,omitempty"`

	// Flags Job flags
	Flags *[]string `json:"flags,omitempty"`

	// GresDetail Job flags
	GresDetail *[]string `json:"gres_detail,omitempty"`

	// GroupId group job submitted as
	GroupId *int `json:"group_id,omitempty"`

	// HetJobId job ID of hetjob leader
	HetJobId *int `json:"het_job_id,omitempty"`

	// HetJobIdSet job IDs for all components
	HetJobIdSet *string `json:"het_job_id_set,omitempty"`

	// HetJobOffset HetJob component offset from leader
	HetJobOffset *int `json:"het_job_offset,omitempty"`

	// JobId job ID
	JobId        *int               `json:"job_id,omitempty"`
	JobResources *V0039JobResources `json:"job_resources,omitempty"`

	// JobState state of the job
	JobState *string `json:"job_state,omitempty"`

	// LastSchedEvaluation last time job was evaluated for scheduling
	LastSchedEvaluation *int `json:"last_sched_evaluation,omitempty"`

	// Licenses licenses required by the job
	Licenses *string `json:"licenses,omitempty"`

	// MaxCpus maximum number of cpus usable by job
	MaxCpus *int `json:"max_cpus,omitempty"`

	// MaxNodes maximum number of nodes usable by job
	MaxNodes *int `json:"max_nodes,omitempty"`

	// McsLabel mcs_label if mcs plugin in use
	McsLabel *string `json:"mcs_label,omitempty"`

	// MemoryPerCpu minimum real memory per cpu
	MemoryPerCpu *int `json:"memory_per_cpu,omitempty"`

	// MemoryPerNode minimum real memory per node
	MemoryPerNode *int `json:"memory_per_node,omitempty"`

	// MemoryPerTres semicolon delimited list of TRES=# values
	MemoryPerTres *string `json:"memory_per_tres,omitempty"`

	// MinimumCpusPerNode minimum # CPUs per node
	MinimumCpusPerNode *int `json:"minimum_cpus_per_node,omitempty"`

	// MinimumTmpDiskPerNode minimum tmp disk per node
	MinimumTmpDiskPerNode *int `json:"minimum_tmp_disk_per_node,omitempty"`

	// Name name of the job
	Name *string `json:"name,omitempty"`

	// Nice requested priority change
	Nice *int `json:"nice,omitempty"`

	// NodeCount minimum number of nodes required by job
	NodeCount *int `json:"node_count,omitempty"`

	// Nodes list of nodes allocated to job
	Nodes *string `json:"nodes,omitempty"`

	// Partition name of assigned partition
	Partition *string `json:"partition,omitempty"`

	// PreSusTime time job ran prior to last suspend
	PreSusTime *int64 `json:"pre_sus_time,omitempty"`

	// PreemptTime preemption signal time
	PreemptTime *int64 `json:"preempt_time,omitempty"`

	// Priority relative priority of the job
	Priority *int `json:"priority,omitempty"`

	// Profile Job profiling requested
	Profile *[]string `json:"profile,omitempty"`

	// Qos Quality of Service
	Qos *string `json:"qos,omitempty"`

	// Reboot node reboot requested before start
	Reboot *bool `json:"reboot,omitempty"`

	// Requeue enable or disable job requeue option
	Requeue *bool `json:"requeue,omitempty"`

	// RequiredNodes comma separated list of required nodes
	RequiredNodes *string `json:"required_nodes,omitempty"`

	// ResizeTime time of latest size change
	ResizeTime *int64 `json:"resize_time,omitempty"`

	// RestartCnt count of job restarts
	RestartCnt *int `json:"restart_cnt,omitempty"`

	// ResvName reservation name
	ResvName *string `json:"resv_name,omitempty"`

	// Shared type and if job can share nodes with other jobs
	Shared *string `json:"shared,omitempty"`

	// ShowFlags details requested
	ShowFlags *[]string `json:"show_flags,omitempty"`

	// SocketsPerBoard sockets per board required by job
	SocketsPerBoard *int `json:"sockets_per_board,omitempty"`

	// SocketsPerNode sockets per node required by job
	SocketsPerNode *int `json:"sockets_per_node,omitempty"`

	// StandardError pathname of job's stderr file
	StandardError *string `json:"standard_error,omitempty"`

	// StandardInput pathname of job's stdin file
	StandardInput *string `json:"standard_input,omitempty"`

	// StandardOutput pathname of job's stdout file
	StandardOutput *string `json:"standard_output,omitempty"`

	// StartTime time execution begins, actual or expected
	StartTime *int64 `json:"start_time,omitempty"`

	// StateDescription optional details for state_reason
	StateDescription *string `json:"state_description,omitempty"`

	// StateReason reason job still pending or failed
	StateReason *string `json:"state_reason,omitempty"`

	// SubmitTime time of job submission
	SubmitTime *int64 `json:"submit_time,omitempty"`

	// SuspendTime time job last suspended or resumed
	SuspendTime *int64 `json:"suspend_time,omitempty"`

	// SystemComment slurmctld's arbitrary comment
	SystemComment *string `json:"system_comment,omitempty"`

	// Tasks requested task count
	Tasks *int `json:"tasks,omitempty"`

	// TasksPerBoard number of tasks to invoke on each board
	TasksPerBoard *int `json:"tasks_per_board,omitempty"`

	// TasksPerCore number of tasks to invoke on each core
	TasksPerCore *int `json:"tasks_per_core,omitempty"`

	// TasksPerSocket number of tasks to invoke on each socket
	TasksPerSocket *int `json:"tasks_per_socket,omitempty"`

	// ThreadSpec specialized thread count
	ThreadSpec *string `json:"thread_spec,omitempty"`

	// ThreadsPerCore threads per core required by job
	ThreadsPerCore *int `json:"threads_per_core,omitempty"`

	// TimeLimit maximum run time in minutes
	TimeLimit *int64 `json:"time_limit,omitempty"`

	// TimeMinimum minimum run time in minutes
	TimeMinimum *int64 `json:"time_minimum,omitempty"`

	// TresAllocStr tres used in the job
	TresAllocStr *string `json:"tres_alloc_str,omitempty"`

	// TresBind Task to TRES binding directives
	TresBind *string `json:"tres_bind,omitempty"`

	// TresFreq TRES frequency directives
	TresFreq *string `json:"tres_freq,omitempty"`

	// TresPerJob semicolon delimited list of TRES=# values
	TresPerJob *string `json:"tres_per_job,omitempty"`

	// TresPerNode semicolon delimited list of TRES=# values
	TresPerNode *string `json:"tres_per_node,omitempty"`

	// TresPerSocket semicolon delimited list of TRES=# values
	TresPerSocket *string `json:"tres_per_socket,omitempty"`

	// TresPerTask semicolon delimited list of TRES=# values
	TresPerTask *string `json:"tres_per_task,omitempty"`

	// TresReqStr tres reqeusted in the job
	TresReqStr *string `json:"tres_req_str,omitempty"`

	// UserId user id the job runs as
	UserId *int64 `json:"user_id,omitempty"`

	// UserName user the job runs as
	UserName *string `json:"user_name,omitempty"`

	// Wckey wckey for job
	Wckey *string `json:"wckey,omitempty"`
}

// V0039JobSubmission defines model for v0.0.39_job_submission.
type V0039JobSubmission struct {
	Job *V0039JobProperties `json:"job,omitempty"`

	// Jobs Properties of an HetJob
	Jobs *[]V0039JobProperties `json:"jobs,omitempty"`

	// Script Executable script (full contents) to run in batch step
	Script string `json:"script"`
}

// V0039JobSubmissionResponse defines model for v0.0.39_job_submission_response.
type V0039JobSubmissionResponse struct {
	// Errors slurm errors
	Errors *[]V0039Error `json:"errors,omitempty"`

	// JobId new job ID
	JobId *int `json:"job_id,omitempty"`

	// JobSubmitUserMsg Message to user from job_submit plugin
	JobSubmitUserMsg *string    `json:"job_submit_user_msg,omitempty"`
	Meta             *V0039Meta `json:"meta,omitempty"`

	// StepId new job step ID
	StepId *string `json:"step_id,omitempty"`
}

// V0039JobsResponse defines model for v0.0.39_jobs_response.
type V0039JobsResponse struct {
	// Errors slurm errors
	Errors *[]V0039Error `json:"errors,omitempty"`

	// Jobs job descriptions
	Jobs *[]V0039JobResponseProperties `json:"jobs,omitempty"`
	Meta *V0039Meta                    `json:"meta,omitempty"`
}

// V0039License defines model for v0.0.39_license.
type V0039License struct {
	// Free number of licenses available
	Free *int `json:"Free,omitempty"`

	// LicenseName name of license
	LicenseName *string `json:"LicenseName,omitempty"`

	// Remote license is remote
	Remote *bool `json:"Remote,omitempty"`

	// Reserved number of licenses reserved
	Reserved *int `json:"Reserved,omitempty"`

	// Total total number of licenses
	Total *int `json:"Total,omitempty"`

	// Used number of licenses in use
	Used *int `json:"Used,omitempty"`
}

// V0039Licenses defines model for v0.0.39_licenses.
type V0039Licenses struct {
	// Errors slurm errors
	Errors *[]V0039Error `json:"errors,omitempty"`

	// Licenses licenses info
	Licenses *[]V0039License `json:"licenses,omitempty"`
}

// V0039Meta defines model for v0.0.39_meta.
type V0039Meta struct {
	// Slurm Slurm information
	Slurm *struct {
		// Release version specifier
		Release *string `json:"release,omitempty"`
		Version *struct {
			Major *string `json:"major,omitempty"`
			Micro *string `json:"micro,omitempty"`
			Minor *string `json:"minor,omitempty"`
		} `json:"version,omitempty"`
	} `json:"Slurm,omitempty"`
	Plugin *struct {
		Name *string `json:"name,omitempty"`
		Type *string `json:"type,omitempty"`
	} `json:"plugin,omitempty"`
}

// V0039Node defines model for v0.0.39_node.
type V0039Node struct {
	// ActiveFeatures list of a node's available features
	ActiveFeatures *string `json:"active_features,omitempty"`

	// Address state after reboot
	Address *string `json:"address,omitempty"`

	// AllocCpus Allocated CPUs
	AllocCpus *int64 `json:"alloc_cpus,omitempty"`

	// AllocMemory Allocated memory (MB)
	AllocMemory *int64 `json:"alloc_memory,omitempty"`

	// Architecture computer architecture
	Architecture *string `json:"architecture,omitempty"`

	// Boards total number of boards per node
	Boards *int `json:"boards,omitempty"`

	// BootTime timestamp of node boot
	BootTime *int64 `json:"boot_time,omitempty"`

	// BurstbufferNetworkAddress BcastAddr
	BurstbufferNetworkAddress *string `json:"burstbuffer_network_address,omitempty"`

	// Cores number of cores per socket
	Cores *int `json:"cores,omitempty"`

	// CpuBinding Default task binding
	CpuBinding *int `json:"cpu_binding,omitempty"`

	// CpuLoad CPU load * 100
	CpuLoad *int64 `json:"cpu_load,omitempty"`

	// Cpus configured count of cpus running on the node
	Cpus     *int    `json:"cpus,omitempty"`
	Features *string `json:"features,omitempty"`

	// FreeMemory free memory in MiB
	FreeMemory *int `json:"free_memory,omitempty"`

	// Gres list of a node's generic resources
	Gres *string `json:"gres,omitempty"`

	// GresDrained list of drained GRES
	GresDrained *string `json:"gres_drained,omitempty"`

	// GresUsed list of GRES in current use
	GresUsed *string `json:"gres_used,omitempty"`

	// Hostname node's hostname
	Hostname *string `json:"hostname,omitempty"`

	// IdleCpus Idle CPUs
	IdleCpus *int64 `json:"idle_cpus,omitempty"`

	// McsLabel mcs label if mcs plugin in use
	McsLabel *string `json:"mcs_label,omitempty"`

	// Name node name to slurm
	Name *string `json:"name,omitempty"`

	// NextStateAfterReboot state after reboot
	NextStateAfterReboot *string `json:"next_state_after_reboot,omitempty"`

	// NextStateAfterRebootFlags node state flags
	NextStateAfterRebootFlags *[]string `json:"next_state_after_reboot_flags,omitempty"`

	// OperatingSystem operating system
	OperatingSystem *string `json:"operating_system,omitempty"`

	// Owner User allowed to use this node
	Owner *string `json:"owner,omitempty"`

	// Partitions assigned partitions
	Partitions *[]string `json:"partitions,omitempty"`

	// Port TCP port number of the slurmd
	Port *int `json:"port,omitempty"`

	// RealMemory configured MB of real memory on the node
	RealMemory *int `json:"real_memory,omitempty"`

	// Reason reason for node being DOWN or DRAINING
	Reason *string `json:"reason,omitempty"`

	// ReasonChangedAt Time stamp when reason was set
	ReasonChangedAt *int `json:"reason_changed_at,omitempty"`

	// ReasonSetByUser User that set the reason
	ReasonSetByUser *string `json:"reason_set_by_user,omitempty"`

	// SlurmdStartTime timestamp of slurmd startup
	SlurmdStartTime *int64 `json:"slurmd_start_time,omitempty"`

	// SlurmdVersion Slurmd version
	SlurmdVersion *string `json:"slurmd_version,omitempty"`

	// Sockets total number of sockets per node
	Sockets *int `json:"sockets,omitempty"`

	// State current node state
	State *string `json:"state,omitempty"`

	// StateFlags node state flags
	StateFlags *[]string `json:"state_flags,omitempty"`

	// TemporaryDisk configured MB of total disk in TMP_FS
	TemporaryDisk *int `json:"temporary_disk,omitempty"`

	// Threads number of threads per core
	Threads *int `json:"threads,omitempty"`

	// Tres TRES on node
	Tres *string `json:"tres,omitempty"`

	// TresUsed TRES used on node
	TresUsed *string `json:"tres_used,omitempty"`

	// TresWeighted TRES weight used on node
	TresWeighted *float64 `json:"tres_weighted,omitempty"`

	// Weight arbitrary priority of node for scheduling
	Weight *int `json:"weight,omitempty"`
}

// V0039NodesResponse defines model for v0.0.39_nodes_response.
type V0039NodesResponse struct {
	// Errors slurm errors
	Errors *[]V0039Error `json:"errors,omitempty"`
	Meta   *V0039Meta    `json:"meta,omitempty"`

	// Nodes nodes info
	Nodes *[]V0039Node `json:"nodes,omitempty"`
}

// V0039Partition defines model for v0.0.39_partition.
type V0039Partition struct {
	// AllowedAccounts comma delimited list of accounts
	AllowedAccounts *string `json:"allowed_accounts,omitempty"`

	// AllowedAllocationNodes list names of allowed allocating nodes
	AllowedAllocationNodes *string `json:"allowed_allocation_nodes,omitempty"`

	// AllowedGroups comma delimited list of groups
	AllowedGroups *string `json:"allowed_groups,omitempty"`

	// AllowedQos comma delimited list of qos
	AllowedQos *string `json:"allowed_qos,omitempty"`

	// Alternative name of alternate partition
	Alternative *string `json:"alternative,omitempty"`

	// BillingWeights TRES billing weights
	BillingWeights *string `json:"billing_weights,omitempty"`

	// DefaultMemoryPerCpu default MB memory per allocated CPU. May be INFINITE for all memory.
	DefaultMemoryPerCpu *string `json:"default_memory_per_cpu,omitempty"`

	// DefaultMemoryPerNode default MB memory per allocated node. May be INFINITE for all memory.
	DefaultMemoryPerNode *string `json:"default_memory_per_node,omitempty"`

	// DefaultTimeLimit default time limit (minutes)
	DefaultTimeLimit *int64 `json:"default_time_limit,omitempty"`

	// DeniedAccounts comma delimited list of denied accounts
	DeniedAccounts *string `json:"denied_accounts,omitempty"`

	// DeniedQos comma delimited list of denied qos
	DeniedQos *string `json:"denied_qos,omitempty"`

	// Flags partition options
	Flags *[]string `json:"flags,omitempty"`

	// MaxTimeLimit Max time limit per job
	MaxTimeLimit *int64 `json:"max_time_limit,omitempty"`

	// MaximumCpusPerNode maximum allocated CPUs per node
	MaximumCpusPerNode *int `json:"maximum_cpus_per_node,omitempty"`

	// MaximumMemoryPerCpu maximum memory per allocated CPU (MiB). May be UNLIMITED for all memory.
	MaximumMemoryPerCpu *string `json:"maximum_memory_per_cpu,omitempty"`

	// MaximumMemoryPerNode maximum memory per allocated node (MiB). May be UNLIMITED for all memory.
	MaximumMemoryPerNode *string `json:"maximum_memory_per_node,omitempty"`

	// MaximumNodesPerJob Max nodes per job
	MaximumNodesPerJob *int `json:"maximum_nodes_per_job,omitempty"`

	// MinNodesPerJob Min number of nodes per job
	MinNodesPerJob *int `json:"min_nodes_per_job,omitempty"`

	// Name Partition name
	Name *string `json:"name,omitempty"`

	// Nodes list names of nodes in partition
	Nodes *string `json:"nodes,omitempty"`

	// OverTimeLimit job's time limit can be exceeded by this number of minutes before cancellation
	OverTimeLimit *int `json:"over_time_limit,omitempty"`

	// PreemptionGraceTime preemption grace time (seconds)
	PreemptionGraceTime *int64 `json:"preemption_grace_time,omitempty"`

	// PreemptionMode preemption type
	PreemptionMode *[]string `json:"preemption_mode,omitempty"`

	// PriorityJobFactor job priority weight factor
	PriorityJobFactor *int `json:"priority_job_factor,omitempty"`

	// PriorityTier tier for scheduling and preemption
	PriorityTier *int `json:"priority_tier,omitempty"`

	// Qos partition QOS name
	Qos *string `json:"qos,omitempty"`

	// State Partition state
	State *string `json:"state,omitempty"`

	// TotalCpus Total cpus in partition
	TotalCpus *int `json:"total_cpus,omitempty"`

	// TotalNodes Total number of nodes in partition
	TotalNodes *int `json:"total_nodes,omitempty"`

	// Tres configured TRES in partition
	Tres *string `json:"tres,omitempty"`
}

// V0039PartitionsResponse defines model for v0.0.39_partitions_response.
type V0039PartitionsResponse struct {
	// Errors slurm errors
	Errors *[]V0039Error `json:"errors,omitempty"`
	Meta   *V0039Meta    `json:"meta,omitempty"`

	// Partitions partition info
	Partitions *[]V0039Partition `json:"partitions,omitempty"`
}

// V0039Ping defines model for v0.0.39_ping.
type V0039Ping struct {
	// Hostname slurm controller hostname
	Hostname *string `json:"hostname,omitempty"`

	// Mode slurm controller mode
	Mode *string `json:"mode,omitempty"`

	// Ping slurm controller host up
	Ping *V0039PingPing `json:"ping,omitempty"`

	// Status slurm controller status
	Status *int `json:"status,omitempty"`
}

// V0039PingPing slurm controller host up
type V0039PingPing string

// V0039Pings defines model for v0.0.39_pings.
type V0039Pings struct {
	// Errors slurm errors
	Errors *[]V0039Error `json:"errors,omitempty"`
	Meta   *V0039Meta    `json:"meta,omitempty"`

	// Pings slurm controller pings
	Pings *[]V0039Ping `json:"pings,omitempty"`
}

// V0039Reservation defines model for v0.0.39_reservation.
type V0039Reservation struct {
	// Accounts Allowed accounts
	Accounts *string `json:"accounts,omitempty"`

	// BurstBuffer Reserved burst buffer
	BurstBuffer *string `json:"burst_buffer,omitempty"`

	// CoreCount Number of reserved cores
	CoreCount *int `json:"core_count,omitempty"`

	// CoreSpecCnt Number of reserved specialized cores
	CoreSpecCnt *int `json:"core_spec_cnt,omitempty"`

	// EndTime End time of the reservation
	EndTime *int `json:"end_time,omitempty"`

	// Features List of features
	Features *string `json:"features,omitempty"`

	// Flags Reservation options
	Flags *[]string `json:"flags,omitempty"`

	// Groups List of groups permitted to use the reserved nodes
	Groups *string `json:"groups,omitempty"`

	// Licenses List of licenses
	Licenses *string `json:"licenses,omitempty"`

	// MaxStartDelay Maximum delay in which jobs outside of the reservation will be permitted to overlap once any jobs are queued for the reservation
	MaxStartDelay *int `json:"max_start_delay,omitempty"`

	// Name Reservationn name
	Name *string `json:"name,omitempty"`

	// NodeCount Count of nodes reserved
	NodeCount *int `json:"node_count,omitempty"`

	// NodeList List of reserved nodes
	NodeList *string `json:"node_list,omitempty"`

	// Partition Partition
	Partition *string `json:"partition,omitempty"`

	// PurgeCompleted If PURGE_COMP flag is set the amount of seconds this reservation will sit idle until it is revoked
	PurgeCompleted *struct {
		// Time amount of seconds this reservation will sit idle until it is revoked
		Time *int `json:"time,omitempty"`
	} `json:"purge_completed,omitempty"`

	// StartTime Start time of reservation
	StartTime *int `json:"start_time,omitempty"`

	// Tres List of TRES
	Tres *string `json:"tres,omitempty"`

	// Users List of users
	Users *string `json:"users,omitempty"`

	// Watts amount of power to reserve in watts
	Watts *int `json:"watts,omitempty"`
}

// V0039ReservationsResponse defines model for v0.0.39_reservations_response.
type V0039ReservationsResponse struct {
	// Errors slurm errors
	Errors *[]V0039Error `json:"errors,omitempty"`
	Meta   *V0039Meta    `json:"meta,omitempty"`

	// Reservations reservation info
	Reservations *[]V0039Reservation `json:"reservations,omitempty"`
}

// V0039Signal POSIX signal name
type V0039Signal string

// CancelJobParams defines parameters for CancelJob.
type CancelJobParams struct {
	// Signal signal to send to job
	Signal *V0039Signal `form:"signal,omitempty" json:"signal,omitempty"`
}

// GetJobsParams defines parameters for GetJobs.
type GetJobsParams struct {
	// UpdateTime Filter if changed since update_time. Use of this parameter can result in faster replies.
	UpdateTime *int64 `form:"update_time,omitempty" json:"update_time,omitempty"`
}

// GetNodesParams defines parameters for GetNodes.
type GetNodesParams struct {
	// UpdateTime Filter if changed since update_time. Use of this parameter can result in faster replies.
	UpdateTime *int64 `form:"update_time,omitempty" json:"update_time,omitempty"`
}

// GetPartitionParams defines parameters for GetPartition.
type GetPartitionParams struct {
	// UpdateTime Filter if there were no partition changes (not limited to partition in URL endpoint) since update_time.
	UpdateTime *int64 `form:"update_time,omitempty" json:"update_time,omitempty"`
}

// GetPartitionsParams defines parameters for GetPartitions.
type GetPartitionsParams struct {
	// UpdateTime Filter if changed since update_time. Use of this parameter can result in faster replies.
	UpdateTime *int64 `form:"update_time,omitempty" json:"update_time,omitempty"`
}

// GetReservationParams defines parameters for GetReservation.
type GetReservationParams struct {
	// UpdateTime Filter if no reservation (not limited to reservation in URL) changed since update_time.
	UpdateTime *int64 `form:"update_time,omitempty" json:"update_time,omitempty"`
}

// GetReservationsParams defines parameters for GetReservations.
type GetReservationsParams struct {
	// UpdateTime Filter if changed since update_time. Use of this parameter can result in faster replies.
	UpdateTime *int64 `form:"update_time,omitempty" json:"update_time,omitempty"`
}

// SubmitJobJSONRequestBody defines body for SubmitJob for application/json ContentType.
type SubmitJobJSONRequestBody = V0039JobSubmission

// UpdateJobJSONRequestBody defines body for UpdateJob for application/json ContentType.
type UpdateJobJSONRequestBody = V0039JobProperties
