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

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

// Account description
type Dbv0037Account struct {
	// List of assigned associations
	Associations *[]Dbv0037AssociationShortInfo `json:"associations,omitempty"`

	// List of assigned coordinators
	Coordinators *[]Dbv0037CoordinatorInfo `json:"coordinators,omitempty"`

	// Description of account
	Description *string `json:"description,omitempty"`

	// List of properties of account
	Flags *[]string `json:"flags,omitempty"`

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

	// Assigned organization of account
	Organization *string `json:"organization,omitempty"`
}

// Dbv0037AccountInfo defines model for dbv0.0.37_account_info.
type Dbv0037AccountInfo struct {
	// List of accounts
	Accounts *[]Dbv0037Account `json:"accounts,omitempty"`

	// Slurm errors
	Errors *[]Dbv0037Error `json:"errors,omitempty"`
}

// Dbv0037AccountResponse defines model for dbv0.0.37_account_response.
type Dbv0037AccountResponse struct {
	// Slurm errors
	Errors *[]Dbv0037Error `json:"errors,omitempty"`
}

// Association description
type Dbv0037Association struct {
	// Assigned account
	Account *string `json:"account,omitempty"`

	// Assigned cluster
	Cluster *string `json:"cluster,omitempty"`

	// Default settings
	Default *struct {
		// Default QOS
		Qos *string `json:"qos,omitempty"`
	} `json:"default,omitempty"`

	// List of properties of association
	Flags *[]string `json:"flags,omitempty"`

	// is default association
	IsDefault *int `json:"is_default,omitempty"`

	// Max settings
	Max *struct {
		// Max jobs settings
		Jobs *struct {
			// Max TRES for job accruing priority
			Accruing *int `json:"accruing,omitempty"`

			// Max TRES for active total jobs
			Active *int `json:"active,omitempty"`

			// Max jobs per settings
			Per *struct {
				// Max wallclock per job
				WallClock *int `json:"wall_clock,omitempty"`
			} `json:"per,omitempty"`

			// Max TRES for job total submitted
			Total *int `json:"total,omitempty"`
		} `json:"jobs,omitempty"`

		// Max per settings
		Per *struct {
			// Max per accounting settings
			Account *struct {
				// Max wallclock per account
				WallClock *int `json:"wall_clock,omitempty"`
			} `json:"account,omitempty"`
		} `json:"per,omitempty"`

		// Max TRES settings
		Tres *struct {
			// Max TRES per group
			Group *struct {
				// TRES list of attributes
				Active *Dbv0037TresList `json:"active,omitempty"`

				// TRES list of attributes
				Minutes *Dbv0037TresList `json:"minutes,omitempty"`
			} `json:"group,omitempty"`

			// Max TRES minutes settings
			Minutes *struct {
				// Max TRES minutes per settings
				Per *struct {
					// TRES list of attributes
					Job *Dbv0037TresList `json:"job,omitempty"`
				} `json:"per,omitempty"`

				// TRES list of attributes
				Total *Dbv0037TresList `json:"total,omitempty"`
			} `json:"minutes,omitempty"`

			// Max TRES per settings
			Per *struct {
				// TRES list of attributes
				Job *Dbv0037TresList `json:"job,omitempty"`

				// TRES list of attributes
				Node *Dbv0037TresList `json:"node,omitempty"`
			} `json:"per,omitempty"`

			// TRES list of attributes
			Total *Dbv0037TresList `json:"total,omitempty"`
		} `json:"tres,omitempty"`
	} `json:"max,omitempty"`

	// Min settings
	Min *struct {
		// Min priority threshold
		PriorityThreshold *int `json:"priority_threshold,omitempty"`
	} `json:"min,omitempty"`

	// Parent account name
	ParentAccount *string `json:"parent_account,omitempty"`

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

	// Assigned priority
	Priority *int `json:"priority,omitempty"`

	// Assigned QOS
	Qos *[]string `json:"qos,omitempty"`

	// Raw fairshare shares
	SharesRaw *int `json:"shares_raw,omitempty"`

	// Association usage
	Usage *struct {
		// Jobs accuring priority
		AccrueJobCount *int `json:"accrue_job_count,omitempty"`

		// Effective normalized usage
		EffectiveNormalizedUsage *float32 `json:"effective_normalized_usage,omitempty"`

		// Fairshare factor
		FairshareFactor *float32 `json:"fairshare_factor,omitempty"`

		// Fairshare level
		FairshareLevel *float32 `json:"fairshare_level,omitempty"`

		// Fairshare shares
		FairshareShares *int `json:"fairshare_shares,omitempty"`

		// Group used wallclock time (s)
		GroupUsedWallclock *float32 `json:"group_used_wallclock,omitempty"`

		// Total jobs submitted
		JobCount *int `json:"job_count,omitempty"`

		// Currently active jobs
		NormalizedPriority *int `json:"normalized_priority,omitempty"`

		// Normalized shares
		NormalizedShares *float32 `json:"normalized_shares,omitempty"`

		// Raw usage
		RawUsage *int `json:"raw_usage,omitempty"`
	} `json:"usage,omitempty"`

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

// Dbv0037AssociationShortInfo defines model for dbv0.0.37_association_short_info.
type Dbv0037AssociationShortInfo struct {
	// Account name
	Account *string `json:"account,omitempty"`

	// Cluster name
	Cluster *string `json:"cluster,omitempty"`

	// Partition name (optional)
	Partition *string `json:"partition,omitempty"`

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

// Dbv0037AssociationsInfo defines model for dbv0.0.37_associations_info.
type Dbv0037AssociationsInfo struct {
	// Array of associations
	Associations *[]Dbv0037Association `json:"associations,omitempty"`

	// Slurm errors
	Errors *[]Dbv0037Error `json:"errors,omitempty"`
}

// Dbv0037ClusterInfo defines model for dbv0.0.37_cluster_info.
type Dbv0037ClusterInfo struct {
	// Information about associations
	Associations *struct {
		Root *Dbv0037AssociationShortInfo `json:"root,omitempty"`
	} `json:"associations,omitempty"`

	// Information about controller
	Controller *struct {
		// Hostname
		Host *string `json:"host,omitempty"`

		// Port number
		Port *int `json:"port,omitempty"`
	} `json:"controller,omitempty"`

	// List of properties of cluster
	Flags *[]string `json:"flags,omitempty"`

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

	// Assigned nodes
	Nodes *string `json:"nodes,omitempty"`

	// Number rpc version
	RpcVersion *int `json:"rpc_version,omitempty"`

	// Configured select plugin
	SelectPlugin *string `json:"select_plugin,omitempty"`

	// List of TRES in cluster
	Tres *[]Dbv0037ResponseTres `json:"tres,omitempty"`
}

// Dbv0037ConfigInfo defines model for dbv0.0.37_config_info.
type Dbv0037ConfigInfo struct {
	// Array of accounts
	Accounts *[]Dbv0037Account `json:"accounts,omitempty"`

	// Array of associations
	Associations *[]Dbv0037Association `json:"associations,omitempty"`

	// Slurm errors
	Errors *[]Dbv0037Error `json:"errors,omitempty"`

	// Array of qos
	Qos *[]Dbv0037Qos `json:"qos,omitempty"`

	// Array of TRES
	Tres *[]Dbv0037TresList `json:"tres,omitempty"`

	// Array of users
	Users *[]Dbv0037User `json:"users,omitempty"`

	// Array of wckeys
	Wckeys *[]Dbv0037Wckey `json:"wckeys,omitempty"`
}

// Dbv0037ConfigResponse defines model for dbv0.0.37_config_response.
type Dbv0037ConfigResponse struct {
	// Slurm errors
	Errors *[]Dbv0037Error `json:"errors,omitempty"`
}

// Dbv0037CoordinatorInfo defines model for dbv0.0.37_coordinator_info.
type Dbv0037CoordinatorInfo struct {
	// If user is coordinator of this account directly or coordinator status was inheirted from a higher account in the tree
	Direct *int `json:"direct,omitempty"`

	// Name of user
	Name *string `json:"name,omitempty"`
}

// Dbv0037Diag defines model for dbv0.0.37_diag.
type Dbv0037Diag struct {
	// Slurm errors
	Errors *[]Dbv0037Error `json:"errors,omitempty"`

	// dictionary of Slurmdb statistics
	Statistics *struct {
		RPCs *[]struct {
			// Number of RPCs
			Count *int `json:"count,omitempty"`

			// RPC type
			Rpc *string `json:"rpc,omitempty"`

			// Time values
			Time *struct {
				// Average time spent processing this RPC type
				Average *int `json:"average,omitempty"`

				// Total time spent processing this RPC type
				Total *int `json:"total,omitempty"`
			} `json:"time,omitempty"`
		} `json:"RPCs,omitempty"`
		Rollups *[]struct {
			// Timestamp of last cycle
			LastCycle *int `json:"last_cycle,omitempty"`

			// Timestamp of last rollup
			LastRun *int `json:"last_run,omitempty"`

			// Max time of all cycles
			MaxCycle *int `json:"max_cycle,omitempty"`

			// Average time (s) of cycle
			MeanCycles *int `json:"mean_cycles,omitempty"`

			// Total time (s) spent doing rollup
			TotalTime *int `json:"total_time,omitempty"`

			// Type of rollup
			Type *string `json:"type,omitempty"`
		} `json:"rollups,omitempty"`

		// Unix timestamp of start time
		TimeStart *int `json:"time_start,omitempty"`
		Users     *[]struct {
			// Number of RPCs
			Count *int `json:"count,omitempty"`

			// Time values
			Time *struct {
				// Average time spent processing each user RPC
				Average *int `json:"average,omitempty"`

				// Total time spent processing each user RPC
				Total *int `json:"total,omitempty"`
			} `json:"time,omitempty"`

			// User name
			User *string `json:"user,omitempty"`
		} `json:"users,omitempty"`
	} `json:"statistics,omitempty"`
}

// Dbv0037Error defines model for dbv0.0.37_error.
type Dbv0037Error struct {
	// Error number
	Errno *int `json:"errno,omitempty"`

	// Error message
	Error *string `json:"error,omitempty"`
}

// Single job description
type Dbv0037Job struct {
	// Account charged by job
	Account *string `json:"account,omitempty"`

	// Nodes allocated to job
	AllocationNodes *int `json:"allocation_nodes,omitempty"`

	// Array properties (optional)
	Array *struct {
		// Job id of array
		JobId *int `json:"job_id,omitempty"`

		// Limits on array settings
		Limits *struct {
			// Limits on array settings
			Max *struct {
				// Limits on array settings
				Running *struct {
					// Max running tasks in array at any one time
					Tasks *int `json:"tasks,omitempty"`
				} `json:"running,omitempty"`
			} `json:"max,omitempty"`
		} `json:"limits,omitempty"`

		// Array task
		Task *string `json:"task,omitempty"`

		// Array task id
		TaskId *int `json:"task_id,omitempty"`
	} `json:"array,omitempty"`
	Association *Dbv0037AssociationShortInfo `json:"association,omitempty"`

	// Assigned cluster
	Cluster *string `json:"cluster,omitempty"`

	// Job comments by type
	Comment *struct {
		// Administrator set comment
		Administrator *string `json:"administrator,omitempty"`

		// Job comment
		Job *string `json:"job,omitempty"`

		// System set comment
		System *string `json:"system,omitempty"`
	} `json:"comment,omitempty"`

	// Constraints on job
	Constraints     *string             `json:"constraints,omitempty"`
	DerivedExitCode *Dbv0037JobExitCode `json:"derived_exit_code,omitempty"`
	ExitCode        *Dbv0037JobExitCode `json:"exit_code,omitempty"`

	// List of properties of job
	Flags *[]string `json:"flags,omitempty"`

	// User's group to run job
	Group *string `json:"group,omitempty"`

	// Heterogeneous Job details (optional)
	Het *struct {
		// Parent HetJob id
		JobId *int `json:"job_id,omitempty"`

		// Offset of this job to parent
		JobOffset *map[string]interface{} `json:"job_offset,omitempty"`
	} `json:"het,omitempty"`

	// Job id
	JobId *int `json:"job_id,omitempty"`

	// User who requested job killed
	KillRequestUser *string `json:"kill_request_user,omitempty"`

	// Multi-Category Security
	Mcs *struct {
		// Assigned MCS label
		Label *string `json:"label,omitempty"`
	} `json:"mcs,omitempty"`

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

	// List of nodes allocated for job
	Nodes *string `json:"nodes,omitempty"`

	// Assigned job's partition
	Partition *string `json:"partition,omitempty"`

	// Priority
	Priority *int `json:"priority,omitempty"`

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

	// Job run requirements
	Required *struct {
		// Required number of CPUs
		CPUs *int `json:"CPUs,omitempty"`

		// Required amount of memory (MiB)
		Memory *int `json:"memory,omitempty"`
	} `json:"required,omitempty"`

	// Reservation usage details
	Reservation *struct {
		// Database id of reservation
		Id *int `json:"id,omitempty"`

		// Name of reservation
		Name *int `json:"name,omitempty"`
	} `json:"reservation,omitempty"`

	// State properties of job
	State *struct {
		// Current state of job
		Current *string `json:"current,omitempty"`

		// Last reason job didn't run
		Reason *string `json:"reason,omitempty"`
	} `json:"state,omitempty"`

	// Job step description
	Steps *[]Dbv0037JobStep `json:"steps,omitempty"`

	// Time properties
	Time *struct {
		// Total time elapsed
		Elapsed *int `json:"elapsed,omitempty"`

		// Total time eligible to run
		Eligible *int `json:"eligible,omitempty"`

		// Timestamp of when job ended
		End *int `json:"end,omitempty"`

		// Job wall clock time limit
		Limit *int `json:"limit,omitempty"`

		// Timestamp of when job started
		Start *int `json:"start,omitempty"`

		// Timestamp of when job submitted
		Submission *int `json:"submission,omitempty"`

		// Timestamp of when job last suspended
		Suspended *int `json:"suspended,omitempty"`

		// System time values
		System *struct {
			// Total number of CPU-seconds used by the system on behalf of the process (in kernel mode), in microseconds
			Microseconds *int `json:"microseconds,omitempty"`

			// Total number of CPU-seconds used by the system on behalf of the process (in kernel mode), in seconds
			Seconds *int `json:"seconds,omitempty"`
		} `json:"system,omitempty"`

		// System time values
		Total *struct {
			// Total number of CPU-seconds used by the job, in microseconds
			Microseconds *int `json:"microseconds,omitempty"`

			// Total number of CPU-seconds used by the job, in seconds
			Seconds *int `json:"seconds,omitempty"`
		} `json:"total,omitempty"`

		// User land time values
		User *struct {
			// Total number of CPU-seconds used by the job in user land, in microseconds
			Microseconds *int `json:"microseconds,omitempty"`

			// Total number of CPU-seconds used by the job in user land, in seconds
			Seconds *int `json:"seconds,omitempty"`
		} `json:"user,omitempty"`
	} `json:"time,omitempty"`

	// TRES settings
	Tres *struct {
		// TRES list of attributes
		Allocated *Dbv0037TresList `json:"allocated,omitempty"`

		// TRES list of attributes
		Requested *Dbv0037TresList `json:"requested,omitempty"`
	} `json:"tres,omitempty"`

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

	// Job assigned wckey details
	Wckey *struct {
		// wckey flags
		Flags *[]string `json:"flags,omitempty"`

		// Job assigned wckey
		Wckey *string `json:"wckey,omitempty"`
	} `json:"wckey,omitempty"`

	// Directory where job was initially started
	WorkingDirectory *string `json:"working_directory,omitempty"`
}

// Dbv0037JobExitCode defines model for dbv0.0.37_job_exit_code.
type Dbv0037JobExitCode struct {
	// Return code from parent process
	ReturnCode *int `json:"return_code,omitempty"`

	// Signal details (if signaled)
	Signal *struct {
		// Name of signal received
		Name *string `json:"name,omitempty"`

		// Signal number process received
		SignalId *int `json:"signal_id,omitempty"`
	} `json:"signal,omitempty"`

	// Job exit status
	Status *string `json:"status,omitempty"`
}

// Dbv0037JobInfo defines model for dbv0.0.37_job_info.
type Dbv0037JobInfo struct {
	// Slurm errors
	Errors *[]Dbv0037Error `json:"errors,omitempty"`

	// Array of jobs
	Jobs *[]Dbv0037Job `json:"jobs,omitempty"`
}

// Dbv0037JobStep defines model for dbv0.0.37_job_step.
type Dbv0037JobStep struct {
	// CPU properties
	CPU *struct {
		// CPU governor
		Governor *[]string `json:"governor,omitempty"`

		// CPU frequency requested
		RequestedFrequency *struct {
			// Max CPU frequency
			Max *int `json:"max,omitempty"`

			// Min CPU frequency
			Min *int `json:"min,omitempty"`
		} `json:"requested_frequency,omitempty"`
	} `json:"CPU,omitempty"`
	ExitCode *Dbv0037JobExitCode `json:"exit_code,omitempty"`

	// User who requested job killed
	KillRequestUser *string `json:"kill_request_user,omitempty"`

	// Node details
	Nodes *struct {
		// Total number of nodes in step
		Count *int `json:"count,omitempty"`

		// Nodes in step
		Range *string `json:"range,omitempty"`
	} `json:"nodes,omitempty"`

	// First process PID
	Pid *string `json:"pid,omitempty"`

	// State of job step
	State *string `json:"state,omitempty"`

	// Statistics of job step
	Statistics *struct {
		// Statistics of CPU
		CPU *struct {
			// Actual frequency of CPU during step
			ActualFrequency *int `json:"actual_frequency,omitempty"`
		} `json:"CPU,omitempty"`

		// Statistics of energy
		Energy *struct {
			// Energy consumed during step
			Consumed *int `json:"consumed,omitempty"`
		} `json:"energy,omitempty"`
	} `json:"statistics,omitempty"`

	// Step details
	Step *struct {
		// Heterogeneous job details
		Het *struct {
			// Parent HetJob component id
			Component *int `json:"component,omitempty"`
		} `json:"het,omitempty"`
		Id *interface{} `json:"id,omitempty"`

		// Parent job id
		JobId *int `json:"job_id,omitempty"`

		// Step name
		Name *string `json:"name,omitempty"`
	} `json:"step,omitempty"`

	// Task properties
	Task *struct {
		// Task distribution type
		Distribution *string `json:"distribution,omitempty"`
	} `json:"task,omitempty"`

	// Task properties
	Tasks *struct {
		// Number of tasks in step
		Count *int `json:"count,omitempty"`
	} `json:"tasks,omitempty"`

	// Time properties
	Time *struct {
		// Total time elapsed
		Elapsed *int `json:"elapsed,omitempty"`

		// Timestamp of when job ended
		End *int `json:"end,omitempty"`

		// Timestamp of when job started
		Start *int `json:"start,omitempty"`

		// Timestamp of when job last suspended
		Suspended *int `json:"suspended,omitempty"`

		// System time values
		System *struct {
			// Total number of CPU-seconds used by the system on behalf of the process (in kernel mode), in microseconds
			Microseconds *int `json:"microseconds,omitempty"`

			// Total number of CPU-seconds used by the system on behalf of the process (in kernel mode), in seconds
			Seconds *int `json:"seconds,omitempty"`
		} `json:"system,omitempty"`

		// System time values
		Total *struct {
			// Total number of CPU-seconds used by the job, in microseconds
			Microseconds *int `json:"microseconds,omitempty"`

			// Total number of CPU-seconds used by the job, in seconds
			Seconds *int `json:"seconds,omitempty"`
		} `json:"total,omitempty"`

		// User land time values
		User *struct {
			// Total number of CPU-seconds used by the job in user land, in microseconds
			Microseconds *int `json:"microseconds,omitempty"`

			// Total number of CPU-seconds used by the job in user land, in seconds
			Seconds *int `json:"seconds,omitempty"`
		} `json:"user,omitempty"`
	} `json:"time,omitempty"`

	// TRES usage
	Tres *struct {
		// TRES list of attributes
		Allocated *Dbv0037TresList `json:"allocated,omitempty"`

		// TRES requested for job
		Consumed *struct {
			// TRES list of attributes
			Average *Dbv0037TresList `json:"average,omitempty"`

			// TRES list of attributes
			Max *Dbv0037TresList `json:"max,omitempty"`

			// TRES list of attributes
			Min *Dbv0037TresList `json:"min,omitempty"`

			// TRES list of attributes
			Total *Dbv0037TresList `json:"total,omitempty"`
		} `json:"consumed,omitempty"`

		// TRES requested for job
		Requested *struct {
			// TRES list of attributes
			Average *Dbv0037TresList `json:"average,omitempty"`

			// TRES list of attributes
			Max *Dbv0037TresList `json:"max,omitempty"`

			// TRES list of attributes
			Min *Dbv0037TresList `json:"min,omitempty"`

			// TRES list of attributes
			Total *Dbv0037TresList `json:"total,omitempty"`
		} `json:"requested,omitempty"`
	} `json:"tres,omitempty"`
}

// QOS description
type Dbv0037Qos struct {
	// QOS description
	Description *string `json:"description,omitempty"`

	// List of properties of QOS
	Flags *[]string `json:"flags,omitempty"`

	// Database id
	Id *string `json:"id,omitempty"`

	// Assigned limits
	Limits *struct {
		// factor to apply to TRES count for associations using this QOS
		Factor *float32 `json:"factor,omitempty"`

		// Limits on max settings
		Max *struct {
			// Limits on accruing priority
			Accruing *struct {
				// Max accuring priority per setting
				Per *struct {
					// Max accuring priority per account
					Account *int `json:"account,omitempty"`

					// Max accuring priority per user
					User *int `json:"user,omitempty"`
				} `json:"per,omitempty"`
			} `json:"accruing,omitempty"`

			// Limits on jobs settings
			Jobs *struct {
				// Limits on active jobs settings
				ActiveJobs *struct {
					// Limits on active jobs per settings
					Per *struct {
						// Max jobs per account
						Account *int `json:"account,omitempty"`

						// Max jobs per user
						User *int `json:"user,omitempty"`
					} `json:"per,omitempty"`
				} `json:"active_jobs,omitempty"`
			} `json:"jobs,omitempty"`

			// Limits on TRES
			Tres *struct {
				// Max TRES minutes settings
				Minutes *struct {
					// Max TRES minutes per settings
					Per *struct {
						// TRES list of attributes
						Account *Dbv0037TresList `json:"account,omitempty"`

						// TRES list of attributes
						Job *Dbv0037TresList `json:"job,omitempty"`

						// TRES list of attributes
						User *Dbv0037TresList `json:"user,omitempty"`
					} `json:"per,omitempty"`
				} `json:"minutes,omitempty"`

				// Max TRES per settings
				Per *struct {
					// TRES list of attributes
					Account *Dbv0037TresList `json:"account,omitempty"`

					// TRES list of attributes
					Job *Dbv0037TresList `json:"job,omitempty"`

					// TRES list of attributes
					Node *Dbv0037TresList `json:"node,omitempty"`

					// TRES list of attributes
					User *Dbv0037TresList `json:"user,omitempty"`
				} `json:"per,omitempty"`
			} `json:"tres,omitempty"`

			// Limit on wallclock settings
			WallClock *struct {
				// Limit on wallclock per settings
				Per *struct {
					// Max wallclock per job
					Job *int `json:"job,omitempty"`

					// Max wallclock per QOS
					Qos *int `json:"qos,omitempty"`
				} `json:"per,omitempty"`
			} `json:"wall_clock,omitempty"`
		} `json:"max,omitempty"`

		// Min limit settings
		Min *struct {
			// Min priority threshold
			PriorityThreshold *int `json:"priority_threshold,omitempty"`

			// Min tres settings
			Tres *struct {
				// Min tres per settings
				Per *struct {
					// TRES list of attributes
					Job *Dbv0037TresList `json:"job,omitempty"`
				} `json:"per,omitempty"`
			} `json:"tres,omitempty"`
		} `json:"min,omitempty"`
	} `json:"limits,omitempty"`

	// Preemption settings
	Preempt *struct {
		// Grace period (s) before jobs can preempted
		ExemptTime *int `json:"exempt_time,omitempty"`

		// List of preemptable QOS
		List *[]string `json:"list,omitempty"`

		// List of preemption modes
		Mode *[]string `json:"mode,omitempty"`
	} `json:"preempt,omitempty"`

	// QOS priority
	Priority *int `json:"priority,omitempty"`

	// Usage factor
	UsageFactor *float32 `json:"usage_factor,omitempty"`

	// Usage threshold
	UsageThreshold *float32 `json:"usage_threshold,omitempty"`
}

// Dbv0037QosInfo defines model for dbv0.0.37_qos_info.
type Dbv0037QosInfo struct {
	// Slurm errors
	Errors *[]Dbv0037Error `json:"errors,omitempty"`

	// Array of QOS
	Qos *[]Dbv0037Qos `json:"qos,omitempty"`
}

// Dbv0037ResponseAccountDelete defines model for dbv0.0.37_response_account_delete.
type Dbv0037ResponseAccountDelete struct {
	// Slurm errors
	Errors *[]Dbv0037Error `json:"errors,omitempty"`
}

// Dbv0037ResponseAssociationDelete defines model for dbv0.0.37_response_association_delete.
type Dbv0037ResponseAssociationDelete struct {
	// Slurm errors
	Errors *[]Dbv0037Error `json:"errors,omitempty"`
}

// Dbv0037ResponseAssociations defines model for dbv0.0.37_response_associations.
type Dbv0037ResponseAssociations struct {
	// Slurm errors
	Errors *[]Dbv0037Error `json:"errors,omitempty"`
}

// Dbv0037ResponseClusterAdd defines model for dbv0.0.37_response_cluster_add.
type Dbv0037ResponseClusterAdd struct {
	// Slurm errors
	Errors *[]Dbv0037Error `json:"errors,omitempty"`
}

// Dbv0037ResponseClusterDelete defines model for dbv0.0.37_response_cluster_delete.
type Dbv0037ResponseClusterDelete struct {
	// Slurm errors
	Errors *[]Dbv0037Error `json:"errors,omitempty"`
}

// Dbv0037ResponseQosDelete defines model for dbv0.0.37_response_qos_delete.
type Dbv0037ResponseQosDelete struct {
	// Slurm errors
	Errors *[]Dbv0037Error `json:"errors,omitempty"`
}

// Dbv0037ResponseTres defines model for dbv0.0.37_response_tres.
type Dbv0037ResponseTres struct {
	// Slurm errors
	Errors *[]Dbv0037Error `json:"errors,omitempty"`
}

// Dbv0037ResponseUserDelete defines model for dbv0.0.37_response_user_delete.
type Dbv0037ResponseUserDelete struct {
	// Slurm errors
	Errors *[]Dbv0037Error `json:"errors,omitempty"`
}

// Dbv0037ResponseUserUpdate defines model for dbv0.0.37_response_user_update.
type Dbv0037ResponseUserUpdate struct {
	// Slurm errors
	Errors *[]Dbv0037Error `json:"errors,omitempty"`
}

// Dbv0037ResponseWckeyAdd defines model for dbv0.0.37_response_wckey_add.
type Dbv0037ResponseWckeyAdd struct {
	// Slurm errors
	Errors *[]Dbv0037Error `json:"errors,omitempty"`
}

// Dbv0037ResponseWckeyDelete defines model for dbv0.0.37_response_wckey_delete.
type Dbv0037ResponseWckeyDelete struct {
	// Slurm errors
	Errors *[]Dbv0037Error `json:"errors,omitempty"`
}

// Dbv0037TresInfo defines model for dbv0.0.37_tres_info.
type Dbv0037TresInfo struct {
	// Slurm errors
	Errors *[]Dbv0037Error `json:"errors,omitempty"`

	// Array of tres
	Tres *[]Dbv0037TresList `json:"tres,omitempty"`
}

// TRES list of attributes
type Dbv0037TresList = []struct {
	// count of TRES
	Count *int `json:"count,omitempty"`

	// database id
	Id *int `json:"id,omitempty"`

	// TRES name (optional)
	Name *string `json:"name,omitempty"`

	// TRES type
	Type *string `json:"type,omitempty"`
}

// User description
type Dbv0037User struct {
	// Description of administrator level
	AdministratorLevel *string `json:"administrator_level,omitempty"`

	// Assigned associations
	Associations *struct {
		Root *Dbv0037AssociationShortInfo `json:"root,omitempty"`
	} `json:"associations,omitempty"`

	// List of assigned coordinators
	Coordinators *[]Dbv0037CoordinatorInfo `json:"coordinators,omitempty"`

	// Default settings
	Default *struct {
		// Default account name
		Account *string `json:"account,omitempty"`

		// Default wckey
		Wckey *string `json:"wckey,omitempty"`
	} `json:"default,omitempty"`

	// User name
	Name *string `json:"name,omitempty"`
}

// Dbv0037UserInfo defines model for dbv0.0.37_user_info.
type Dbv0037UserInfo struct {
	// Slurm errors
	Errors *[]Dbv0037Error `json:"errors,omitempty"`

	// Array of users
	Users *[]Dbv0037User `json:"users,omitempty"`
}

// Dbv0037Wckey defines model for dbv0.0.37_wckey.
type Dbv0037Wckey struct {
	// List of assigned accounts
	Accounts *[]string `json:"accounts,omitempty"`

	// Cluster name
	Cluster *string `json:"cluster,omitempty"`

	// List of properties of wckey
	Flags *[]string `json:"flags,omitempty"`

	// wckey database unique id
	Id *int `json:"id,omitempty"`

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

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

// Dbv0037WckeyInfo defines model for dbv0.0.37_wckey_info.
type Dbv0037WckeyInfo struct {
	// Slurm errors
	Errors *[]Dbv0037Error `json:"errors,omitempty"`

	// List of wckeys
	Wckeys *[]Dbv0037Wckey `json:"wckeys,omitempty"`
}

// SlurmdbdDeleteAssociationParams defines parameters for SlurmdbdDeleteAssociation.
type SlurmdbdDeleteAssociationParams struct {
	// Cluster name
	Cluster *string `form:"cluster,omitempty" json:"cluster,omitempty"`

	// Account name
	Account string `form:"account" json:"account"`

	// User name
	User string `form:"user" json:"user"`

	// Partition Name
	Partition *string `form:"partition,omitempty" json:"partition,omitempty"`
}

// SlurmdbdGetAssociationParams defines parameters for SlurmdbdGetAssociation.
type SlurmdbdGetAssociationParams struct {
	// Cluster name
	Cluster *string `form:"cluster,omitempty" json:"cluster,omitempty"`

	// Account name
	Account *string `form:"account,omitempty" json:"account,omitempty"`

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

	// Partition Name
	Partition *string `form:"partition,omitempty" json:"partition,omitempty"`
}

// SlurmdbdGetJobsParams defines parameters for SlurmdbdGetJobs.
type SlurmdbdGetJobsParams struct {
	// Filter by submission time
	//  Accepted formats:
	//  HH:MM[:SS] [AM|PM]
	// MMDD[YY] or MM/DD[/YY] or MM.DD[.YY]
	// MM/DD[/YY]-HH:MM[:SS]
	// YYYY-MM-DD[THH:MM[:SS]]
	SubmitTime *string `form:"submit_time,omitempty" json:"submit_time,omitempty"`

	// Filter by start time
	//  Accepted formats:
	//  HH:MM[:SS] [AM|PM]
	// MMDD[YY] or MM/DD[/YY] or MM.DD[.YY]
	// MM/DD[/YY]-HH:MM[:SS]
	// YYYY-MM-DD[THH:MM[:SS]]
	StartTime *string `form:"start_time,omitempty" json:"start_time,omitempty"`

	// Filter by end time
	//  Accepted formats:
	//  HH:MM[:SS] [AM|PM]
	// MMDD[YY] or MM/DD[/YY] or MM.DD[.YY]
	// MM/DD[/YY]-HH:MM[:SS]
	// YYYY-MM-DD[THH:MM[:SS]]
	EndTime *string `form:"end_time,omitempty" json:"end_time,omitempty"`

	// Comma delimited list of accounts to match
	Account *string `form:"account,omitempty" json:"account,omitempty"`

	// Comma delimited list of associations to match
	Association *string `form:"association,omitempty" json:"association,omitempty"`

	// Comma delimited list of cluster to match
	Cluster *string `form:"cluster,omitempty" json:"cluster,omitempty"`

	// Comma delimited list of constraints to match
	Constraints *string `form:"constraints,omitempty" json:"constraints,omitempty"`

	// Number of CPUs high range
	CpusMax *string `form:"cpus_max,omitempty" json:"cpus_max,omitempty"`

	// Number of CPUs low range
	CpusMin *string `form:"cpus_min,omitempty" json:"cpus_min,omitempty"`

	// Report job step information
	SkipSteps *bool `form:"skip_steps,omitempty" json:"skip_steps,omitempty"`

	// Disable waiting for result from slurmdbd
	DisableWaitForResult *bool `form:"disable_wait_for_result,omitempty" json:"disable_wait_for_result,omitempty"`

	// Exit code of job
	ExitCode *string `form:"exit_code,omitempty" json:"exit_code,omitempty"`

	// Comma delimited list of formats to match
	Format *string `form:"format,omitempty" json:"format,omitempty"`

	// Comma delimited list of groups to match
	Group *string `form:"group,omitempty" json:"group,omitempty"`

	// Comma delimited list of job names to match
	JobName *string `form:"job_name,omitempty" json:"job_name,omitempty"`

	// Number of nodes high range
	NodesMax *string `form:"nodes_max,omitempty" json:"nodes_max,omitempty"`

	// Number of nodes low range
	NodesMin *string `form:"nodes_min,omitempty" json:"nodes_min,omitempty"`

	// Comma delimited list of partitions to match
	Partition *string `form:"partition,omitempty" json:"partition,omitempty"`

	// Comma delimited list of QOS to match
	Qos *string `form:"qos,omitempty" json:"qos,omitempty"`

	// Comma delimited list of job reasons to match
	Reason *string `form:"reason,omitempty" json:"reason,omitempty"`

	// Comma delimited list of reservations to match
	Reservation *string `form:"reservation,omitempty" json:"reservation,omitempty"`

	// Comma delimited list of states to match
	State *string `form:"state,omitempty" json:"state,omitempty"`

	// Comma delimited list of job steps to match
	Step *string `form:"step,omitempty" json:"step,omitempty"`

	// Comma delimited list of used nodes to match
	Node *string `form:"node,omitempty" json:"node,omitempty"`

	// Comma delimited list of wckeys to match
	Wckey *string `form:"wckey,omitempty" json:"wckey,omitempty"`
}
