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

import (
	"encoding/json"
	"math/big"
	"time"

	"github.com/oapi-codegen/runtime"
	openapi_types "github.com/oapi-codegen/runtime/types"
	"github.com/opensvc/om3/v3/core/instance"
	"github.com/opensvc/om3/v3/core/naming"
	"github.com/opensvc/om3/v3/core/nodesinfo"
	"github.com/opensvc/om3/v3/core/resource"
)

const (
	BasicAuthScopes  = "basicAuth.Scopes"
	BearerAuthScopes = "bearerAuth.Scopes"
)

// Defines values for ArrayListKind.
const (
	Array ArrayListKind = "Array"
)

// Defines values for AuthInfoMethods.
const (
	Basic   AuthInfoMethods = "basic"
	Openid  AuthInfoMethods = "openid"
	Session AuthInfoMethods = "session"
	X509    AuthInfoMethods = "x509"
)

// Defines values for CapabilityItemKind.
const (
	CapabilityItemKindCapabilityItem CapabilityItemKind = "CapabilityItem"
)

// Defines values for CapabilityListKind.
const (
	CapabilityListKindCapabilityList CapabilityListKind = "CapabilityList"
)

// Defines values for DataKeyListKind.
const (
	DataKeyListKindDataKeyList DataKeyListKind = "DataKeyList"
)

// Defines values for DiskItemKind.
const (
	DiskItemKindDiskItem DiskItemKind = "DiskItem"
)

// Defines values for DiskListKind.
const (
	DiskListKindDiskList DiskListKind = "DiskList"
)

// Defines values for DriverItemKind.
const (
	DriversItem DriverItemKind = "DriversItem"
)

// Defines values for DriverListKind.
const (
	DriversList DriverListKind = "DriversList"
)

// Defines values for GroupItemKind.
const (
	GroupItemKindGroupItem GroupItemKind = "GroupItem"
)

// Defines values for GroupListKind.
const (
	GroupListKindGroupList GroupListKind = "GroupList"
)

// Defines values for HardwareItemKind.
const (
	HardwareItemKindHardwareItem HardwareItemKind = "HardwareItem"
)

// Defines values for HardwareListKind.
const (
	HardwareListKindHardwareList HardwareListKind = "HardwareList"
)

// Defines values for IPAddressItemKind.
const (
	IPAddressItemKindIPAddressItem IPAddressItemKind = "IPAddressItem"
)

// Defines values for IPAddressListKind.
const (
	IDAddressList IPAddressListKind = "IDAddressList"
)

// Defines values for InstanceItemKind.
const (
	InstanceItemKindInstanceItem InstanceItemKind = "InstanceItem"
)

// Defines values for InstanceListKind.
const (
	InstanceListKindInstanceList InstanceListKind = "InstanceList"
)

// Defines values for KeywordDefinitionListKind.
const (
	KeywordDefinitionListKindKeywordDefinitionList KeywordDefinitionListKind = "KeywordDefinitionList"
)

// Defines values for KeywordListKind.
const (
	KeywordListKindKeywordList KeywordListKind = "KeywordList"
)

// Defines values for NetworkIPListKind.
const (
	NetworkIPListKindNetworkIPList NetworkIPListKind = "NetworkIPList"
)

// Defines values for NetworkListKind.
const (
	NetworkListKindNetworkList NetworkListKind = "NetworkList"
)

// Defines values for NodeItemKind.
const (
	NodeItemKindNodeItem NodeItemKind = "NodeItem"
)

// Defines values for NodeListKind.
const (
	NodeListKindNodeList NodeListKind = "NodeList"
)

// Defines values for ObjectFrozen.
const (
	ObjectFrozenFrozen   ObjectFrozen = "frozen"
	ObjectFrozenMixed    ObjectFrozen = "mixed"
	ObjectFrozenNa       ObjectFrozen = "n/a"
	ObjectFrozenUnfrozen ObjectFrozen = "unfrozen"
)

// Defines values for ObjectItemKind.
const (
	ObjectItemKindObjectItem ObjectItemKind = "ObjectItem"
)

// Defines values for ObjectListKind.
const (
	ObjectListKindObjectList ObjectListKind = "ObjectList"
)

// Defines values for Orchestrate.
const (
	Ha    Orchestrate = "ha"
	No    Orchestrate = "no"
	Start Orchestrate = "start"
)

// Defines values for PackageItemKind.
const (
	PackageItemKindPackageItem PackageItemKind = "PackageItem"
)

// Defines values for PackageListKind.
const (
	PackageListKindPackageList PackageListKind = "PackageList"
)

// Defines values for PatchDataKeyAction.
const (
	Add    PatchDataKeyAction = "add"
	Change PatchDataKeyAction = "change"
	Remove PatchDataKeyAction = "remove"
	Rename PatchDataKeyAction = "rename"
)

// Defines values for PatchItemKind.
const (
	PacthItem PatchItemKind = "PacthItem"
)

// Defines values for PatchListKind.
const (
	PatchListKindPatchList PatchListKind = "PatchList"
)

// Defines values for PlacementPolicy.
const (
	LastStart  PlacementPolicy = "last start"
	LoadAvg    PlacementPolicy = "load avg"
	NodesOrder PlacementPolicy = "nodes order"
	None       PlacementPolicy = "none"
	Score      PlacementPolicy = "score"
	Shift      PlacementPolicy = "shift"
	Spread     PlacementPolicy = "spread"
)

// Defines values for PlacementState.
const (
	PlacementStateNa         PlacementState = "n/a"
	PlacementStateNonOptimal PlacementState = "non-optimal"
	PlacementStateOptimal    PlacementState = "optimal"
	PlacementStateUndef      PlacementState = "undef"
)

// Defines values for PoolListKind.
const (
	PoolListKindPoolList PoolListKind = "PoolList"
)

// Defines values for PoolVolumeListKind.
const (
	PoolVolumeListKindPoolVolumeList PoolVolumeListKind = "PoolVolumeList"
)

// Defines values for PropertyListKind.
const (
	PropertyListKindPropertyList PropertyListKind = "PropertyList"
)

// Defines values for Provisioned.
const (
	ProvisionedFalse Provisioned = "false"
	ProvisionedMixed Provisioned = "mixed"
	ProvisionedNa    Provisioned = "n/a"
	ProvisionedTrue  Provisioned = "true"
)

// Defines values for RelayStatusListKind.
const (
	RelayStatusListKindRelayStatusList RelayStatusListKind = "RelayStatusList"
)

// Defines values for ResourceInfoListKind.
const (
	ResourceInfoListKindResourceInfoList ResourceInfoListKind = "ResourceInfoList"
)

// Defines values for ResourceItemKind.
const (
	ResourceItemKindResourceItem ResourceItemKind = "ResourceItem"
)

// Defines values for ResourceListKind.
const (
	ResourceListKindResourceList ResourceListKind = "ResourceList"
)

// Defines values for Role.
const (
	Admin          Role = "admin"
	Blacklistadmin Role = "blacklistadmin"
	Guest          Role = "guest"
	Heartbeat      Role = "heartbeat"
	Join           Role = "join"
	Leave          Role = "leave"
	Operator       Role = "operator"
	Prioritizer    Role = "prioritizer"
	Root           Role = "root"
	Squatter       Role = "squatter"
)

// Defines values for SANPathInitiatorItemKind.
const (
	SANPathInitiatorItemKindSANPathInitiatorItem SANPathInitiatorItemKind = "SANPathInitiatorItem"
)

// Defines values for SANPathInitiatorListKind.
const (
	SANPathInitiatorListKindSANPathInitiatorList SANPathInitiatorListKind = "SANPathInitiatorList"
)

// Defines values for SANPathListKind.
const (
	SANPathListKindSANPathList SANPathListKind = "SANPathList"
)

// Defines values for ScheduleItemKind.
const (
	ScheduleItemKindResourceItem ScheduleItemKind = "ResourceItem"
)

// Defines values for ScheduleListKind.
const (
	ScheduleListKindScheduleList ScheduleListKind = "ScheduleList"
)

// Defines values for Status.
const (
	StatusDown      Status = "down"
	StatusNa        Status = "n/a"
	StatusStdbyDown Status = "stdby down"
	StatusStdbyUp   Status = "stdby up"
	StatusUndef     Status = "undef"
	StatusUp        Status = "up"
	StatusWarn      Status = "warn"
)

// Defines values for Topology.
const (
	Failover Topology = "failover"
	Flex     Topology = "flex"
)

// Defines values for UserItemKind.
const (
	UserItemKindUserItem UserItemKind = "UserItem"
)

// Defines values for UserListKind.
const (
	UserListKindUserList UserListKind = "UserList"
)

// ArbitratorStatus defines model for ArbitratorStatus.
type ArbitratorStatus struct {
	// Status Represents a resource, instance or object status, e.g., 'up', 'down', 'warn', ....
	Status Status `json:"status"`
	Url    string `json:"url"`
	Weight int    `json:"weight"`
}

// ArrayItem defines model for ArrayItem.
type ArrayItem struct {
	Name string `json:"name"`
	Type string `json:"type"`
}

// ArrayItems defines model for ArrayItems.
type ArrayItems = []ArrayItem

// ArrayList defines model for ArrayList.
type ArrayList struct {
	Items ArrayItems    `json:"items"`
	Kind  ArrayListKind `json:"kind"`
}

// ArrayListKind defines model for ArrayList.Kind.
type ArrayListKind string

// AuthAccessToken defines model for AuthAccessToken.
type AuthAccessToken struct {
	AccessExpiredAt time.Time `json:"access_expired_at"`
	AccessToken     string    `json:"access_token"`
}

// AuthInfo defines model for AuthInfo.
type AuthInfo struct {
	Methods []AuthInfoMethods `json:"methods"`
	Openid  *struct {
		ClientId string `json:"client_id"`
		Issuer   string `json:"issuer"`
	} `json:"openid,omitempty"`
}

// AuthInfoMethods defines model for AuthInfo.Methods.
type AuthInfoMethods string

// AuthRefreshToken defines model for AuthRefreshToken.
type AuthRefreshToken struct {
	RefreshExpiredAt *time.Time `json:"refresh_expired_at,omitempty"`
	RefreshToken     *string    `json:"refresh_token,omitempty"`
}

// AuthToken defines model for AuthToken.
type AuthToken struct {
	AccessExpiredAt  time.Time  `json:"access_expired_at"`
	AccessToken      string     `json:"access_token"`
	RefreshExpiredAt *time.Time `json:"refresh_expired_at,omitempty"`
	RefreshToken     *string    `json:"refresh_token,omitempty"`
}

// Capability defines model for Capability.
type Capability struct {
	Name string `json:"name"`
}

// CapabilityItem defines model for CapabilityItem.
type CapabilityItem struct {
	Data Capability         `json:"data"`
	Kind CapabilityItemKind `json:"kind"`
	Meta NodeMeta           `json:"meta"`
}

// CapabilityItemKind defines model for CapabilityItem.Kind.
type CapabilityItemKind string

// CapabilityItems defines model for CapabilityItems.
type CapabilityItems = []CapabilityItem

// CapabilityList defines model for CapabilityList.
type CapabilityList struct {
	Items CapabilityItems    `json:"items"`
	Kind  CapabilityListKind `json:"kind"`
}

// CapabilityListKind defines model for CapabilityList.Kind.
type CapabilityListKind string

// ClusterStatus defines model for ClusterStatus.
type ClusterStatus = map[string]interface{}

// Committed defines model for Committed.
type Committed struct {
	IsChanged bool `json:"is_changed"`
}

// DNSRecord defines model for DNSRecord.
type DNSRecord struct {
	Class string `json:"class"`
	Data  string `json:"data"`
	Name  string `json:"name"`
	Ttl   int    `json:"ttl"`
	Type  string `json:"type"`
}

// DNSZone defines model for DNSZone.
type DNSZone = []DNSRecord

// DRBDAllocation defines model for DRBDAllocation.
type DRBDAllocation struct {
	ExpiredAt time.Time          `json:"expired_at"`
	ID        openapi_types.UUID `json:"id"`
	Minor     int                `json:"minor"`
	Port      int                `json:"port"`
}

// DRBDConfig defines model for DRBDConfig.
type DRBDConfig struct {
	Data []byte `json:"data"`
}

// DaemonHeartbeatName Heartbeat name, example '1.rx' for heartbeat receiver of 'hb#1' section
type DaemonHeartbeatName = string

// DaemonListener defines model for DaemonListener.
type DaemonListener struct {
	Addr         string    `json:"addr"`
	ConfiguredAt time.Time `json:"configured_at"`
	CreatedAt    time.Time `json:"created_at"`
	ID           string    `json:"id"`
	Port         string    `json:"port"`
	State        string    `json:"state"`
	UpdatedAt    time.Time `json:"updated_at"`
}

// DaemonListenerName Listener name
type DaemonListenerName = string

// DaemonPid defines model for DaemonPid.
type DaemonPid struct {
	Pid int `json:"pid"`
}

// DaemonSubsystemStatus Describes a OpenSVC daemon subsystem: when it was last created,
// configured an updated, what its current state is and its id.
type DaemonSubsystemStatus struct {
	ConfiguredAt time.Time `json:"configured_at"`
	CreatedAt    time.Time `json:"created_at"`
	ID           string    `json:"id"`
	State        string    `json:"state"`
	UpdatedAt    time.Time `json:"updated_at"`
}

// DataKey defines model for DataKey.
type DataKey struct {
	Bytes []byte `json:"bytes"`
	Name  string `json:"name"`
}

// DataKeyList defines model for DataKeyList.
type DataKeyList struct {
	Items DataKeyListItems `json:"items"`
	Kind  DataKeyListKind  `json:"kind"`
}

// DataKeyListKind defines model for DataKeyList.Kind.
type DataKeyListKind string

// DataKeyListItem defines model for DataKeyListItem.
type DataKeyListItem struct {
	Name   string `json:"name"`
	Node   string `json:"node"`
	Object string `json:"object"`
	Size   int    `json:"size"`
}

// DataKeyListItems defines model for DataKeyListItems.
type DataKeyListItems = []DataKeyListItem

// DataKeys defines model for DataKeys.
type DataKeys = []DataKey

// Disk defines model for Disk.
type Disk struct {
	Devpath string   `json:"devpath"`
	ID      string   `json:"id"`
	Model   string   `json:"model"`
	Regions []Region `json:"regions"`
	Size    uint64   `json:"size"`
	Type    string   `json:"type"`
	Vendor  string   `json:"vendor"`
}

// DiskItem defines model for DiskItem.
type DiskItem struct {
	Data Disk         `json:"data"`
	Kind DiskItemKind `json:"kind"`
	Meta NodeMeta     `json:"meta"`
}

// DiskItemKind defines model for DiskItem.Kind.
type DiskItemKind string

// DiskItems defines model for DiskItems.
type DiskItems = []DiskItem

// DiskList defines model for DiskList.
type DiskList struct {
	Items DiskItems    `json:"items"`
	Kind  DiskListKind `json:"kind"`
}

// DiskListKind defines model for DiskList.Kind.
type DiskListKind string

// Driver defines model for Driver.
type Driver struct {
	Name string `json:"name"`
}

// DriverItem defines model for DriverItem.
type DriverItem struct {
	Data Driver         `json:"data"`
	Kind DriverItemKind `json:"kind"`
	Meta NodeMeta       `json:"meta"`
}

// DriverItemKind defines model for DriverItem.Kind.
type DriverItemKind string

// DriverItems defines model for DriverItems.
type DriverItems = []DriverItem

// DriverList defines model for DriverList.
type DriverList struct {
	Items DriverItems    `json:"items"`
	Kind  DriverListKind `json:"kind"`
}

// DriverListKind defines model for DriverList.Kind.
type DriverListKind string

// EventList responseEventList is a list of sse
type EventList = openapi_types.File

// FlexConfig defines model for FlexConfig.
type FlexConfig struct {
	Max    int `json:"max"`
	Min    int `json:"min"`
	Target int `json:"target"`
}

// Group defines model for Group.
type Group struct {
	ID   int    `json:"id"`
	Name string `json:"name"`
}

// GroupItem defines model for GroupItem.
type GroupItem struct {
	Data Group         `json:"data"`
	Kind GroupItemKind `json:"kind"`
	Meta NodeMeta      `json:"meta"`
}

// GroupItemKind defines model for GroupItem.Kind.
type GroupItemKind string

// GroupItems defines model for GroupItems.
type GroupItems = []GroupItem

// GroupList defines model for GroupList.
type GroupList struct {
	Items GroupItems    `json:"items"`
	Kind  GroupListKind `json:"kind"`
}

// GroupListKind defines model for GroupList.Kind.
type GroupListKind string

// Hardware defines model for Hardware.
type Hardware struct {
	Class       string `json:"class"`
	Description string `json:"description"`
	Driver      string `json:"driver"`
	Path        string `json:"path"`
	Type        string `json:"type"`
}

// HardwareItem defines model for HardwareItem.
type HardwareItem struct {
	Data Hardware         `json:"data"`
	Kind HardwareItemKind `json:"kind"`
	Meta NodeMeta         `json:"meta"`
}

// HardwareItemKind defines model for HardwareItem.Kind.
type HardwareItemKind string

// HardwareItems defines model for HardwareItems.
type HardwareItems = []HardwareItem

// HardwareList defines model for HardwareList.
type HardwareList struct {
	Items HardwareItems    `json:"items"`
	Kind  HardwareListKind `json:"kind"`
}

// HardwareListKind defines model for HardwareList.Kind.
type HardwareListKind string

// HeartbeatRotateResponse defines model for HeartbeatRotateResponse.
type HeartbeatRotateResponse struct {
	ID openapi_types.UUID `json:"id"`
}

// IPAddress defines model for IPAddress.
type IPAddress struct {
	Address        string `json:"address"`
	FlagDeprecated bool   `json:"flagdeprecated"`
	Intf           string `json:"intf"`
	Mac            string `json:"mac"`
	Mask           string `json:"mask"`
	Type           string `json:"type"`
}

// IPAddressItem defines model for IPAddressItem.
type IPAddressItem struct {
	Data IPAddress         `json:"data"`
	Kind IPAddressItemKind `json:"kind"`
	Meta NodeMeta          `json:"meta"`
}

// IPAddressItemKind defines model for IPAddressItem.Kind.
type IPAddressItemKind string

// IPAddressItems defines model for IPAddressItems.
type IPAddressItems = []IPAddressItem

// IPAddressList defines model for IPAddressList.
type IPAddressList struct {
	Items IPAddressItems    `json:"items"`
	Kind  IPAddressListKind `json:"kind"`
}

// IPAddressListKind defines model for IPAddressList.Kind.
type IPAddressListKind string

// Instance defines model for Instance.
type Instance struct {
	Config  *InstanceConfig  `json:"config,omitempty"`
	Monitor *InstanceMonitor `json:"monitor,omitempty"`
	Status  *InstanceStatus  `json:"status,omitempty"`
}

// InstanceActionAccepted defines model for InstanceActionAccepted.
type InstanceActionAccepted struct {
	SessionID openapi_types.UUID `json:"session_id"`
}

// InstanceConfig defines model for InstanceConfig.
type InstanceConfig = instance.Config

// InstanceItem defines model for InstanceItem.
type InstanceItem struct {
	Data Instance         `json:"data"`
	Kind InstanceItemKind `json:"kind"`
	Meta InstanceMeta     `json:"meta"`
}

// InstanceItemKind defines model for InstanceItem.Kind.
type InstanceItemKind string

// InstanceItems defines model for InstanceItems.
type InstanceItems = []InstanceItem

// InstanceList defines model for InstanceList.
type InstanceList struct {
	Items InstanceItems    `json:"items"`
	Kind  InstanceListKind `json:"kind"`
}

// InstanceListKind defines model for InstanceList.Kind.
type InstanceListKind string

// InstanceMap defines model for InstanceMap.
type InstanceMap map[string]Instance

// InstanceMeta defines model for InstanceMeta.
type InstanceMeta struct {
	Node   string `json:"node"`
	Object string `json:"object"`
}

// InstanceMonitor defines model for InstanceMonitor.
type InstanceMonitor = instance.Monitor

// InstanceStatus defines model for InstanceStatus.
type InstanceStatus = instance.Status

// KeywordDefinitionItem defines model for KeywordDefinitionItem.
type KeywordDefinitionItem struct {
	Aliases       []string `json:"aliases"`
	Candidates    []string `json:"candidates"`
	Converter     string   `json:"converter"`
	Default       string   `json:"default"`
	DefaultOption string   `json:"defaultOption"`
	DefaultText   string   `json:"defaultText"`
	Depends       []string `json:"depends"`
	Deprecated    string   `json:"deprecated"`
	Example       string   `json:"example"`
	Inherit       string   `json:"inherit"`
	Kind          []string `json:"kind"`
	Option        string   `json:"option"`
	Provisioning  bool     `json:"provisioning"`
	Required      bool     `json:"required"`
	Scopable      bool     `json:"scopable"`
	Section       string   `json:"section"`
	Text          string   `json:"text"`
	Types         []string `json:"types"`
}

// KeywordDefinitionItems defines model for KeywordDefinitionItems.
type KeywordDefinitionItems = []KeywordDefinitionItem

// KeywordDefinitionList defines model for KeywordDefinitionList.
type KeywordDefinitionList struct {
	Items KeywordDefinitionItems    `json:"items"`
	Kind  KeywordDefinitionListKind `json:"kind"`
}

// KeywordDefinitionListKind defines model for KeywordDefinitionList.Kind.
type KeywordDefinitionListKind string

// KeywordItem defines model for KeywordItem.
type KeywordItem struct {
	Evaluated   *any   `json:"evaluated,omitempty"`
	EvaluatedAs string `json:"evaluated_as"`
	Keyword     string `json:"keyword"`
	Node        string `json:"node"`
	Object      string `json:"object"`
	Value       string `json:"value"`
}

// KeywordItems defines model for KeywordItems.
type KeywordItems = []KeywordItem

// KeywordList defines model for KeywordList.
type KeywordList struct {
	Items KeywordItems    `json:"items"`
	Kind  KeywordListKind `json:"kind"`
}

// KeywordListKind defines model for KeywordList.Kind.
type KeywordListKind string

// Kind defines model for Kind.
type Kind = naming.Kind

// LogControlBody defines model for LogControlBody.
type LogControlBody = LogControl

// LogList responseLogList is a list of sse
type LogList = openapi_types.File

// Network defines model for Network.
type Network struct {
	Errors  *[]string `json:"errors,omitempty"`
	Free    big.Int   `json:"free"`
	Name    string    `json:"name"`
	Network string    `json:"network"`
	Size    big.Int   `json:"size"`
	Type    string    `json:"type"`
	Used    big.Int   `json:"used"`
}

// NetworkIP defines model for NetworkIP.
type NetworkIP struct {
	IP      string           `json:"ip"`
	Network NetworkIPNetwork `json:"network"`
	Node    string           `json:"node"`
	Path    string           `json:"path"`
	RID     string           `json:"rid"`
}

// NetworkIPItems defines model for NetworkIPItems.
type NetworkIPItems = []NetworkIP

// NetworkIPList defines model for NetworkIPList.
type NetworkIPList struct {
	Items NetworkIPItems    `json:"items"`
	Kind  NetworkIPListKind `json:"kind"`
}

// NetworkIPListKind defines model for NetworkIPList.Kind.
type NetworkIPListKind string

// NetworkIPNetwork defines model for NetworkIPNetwork.
type NetworkIPNetwork struct {
	Name    string `json:"name"`
	Network string `json:"network"`
	Type    string `json:"type"`
}

// NetworkItems defines model for NetworkItems.
type NetworkItems = []Network

// NetworkList defines model for NetworkList.
type NetworkList struct {
	Items NetworkItems    `json:"items"`
	Kind  NetworkListKind `json:"kind"`
}

// NetworkListKind defines model for NetworkList.Kind.
type NetworkListKind string

// Node defines model for Node.
type Node struct {
	Config  *NodeConfig  `json:"config,omitempty"`
	Monitor *NodeMonitor `json:"monitor,omitempty"`
	Status  *NodeStatus  `json:"status,omitempty"`
}

// NodeActionAccepted defines model for NodeActionAccepted.
type NodeActionAccepted struct {
	SessionID openapi_types.UUID `json:"session_id"`
}

// NodeConfig defines model for NodeConfig.
type NodeConfig struct {
	Env                    string        `json:"env"`
	MaintenanceGracePeriod time.Duration `json:"maintenance_grace_period"`
	MaxParallel            int           `json:"max_parallel"`
	MinAvailMemPct         int           `json:"min_avail_mem_pct"`
	MinAvailSwapPct        int           `json:"min_avail_swap_pct"`
	PRKey                  string        `json:"prkey"`
	ReadyPeriod            time.Duration `json:"ready_period"`
	RejoinGracePeriod      time.Duration `json:"rejoin_grace_period"`
	SplitAction            string        `json:"split_action"`
	SSHKey                 string        `json:"sshkey"`
}

// NodeInfo defines model for NodeInfo.
type NodeInfo struct {
	// Labels labels is the list of node labels.
	Labels   []NodeLabel            `json:"labels"`
	Listener map[string]interface{} `json:"listener"`

	// Nodename nodename is the name of the node where the labels and paths are coming from.
	Nodename string `json:"nodename"`

	// Paths paths is the list of node to storage array san paths.
	Paths []SANPath `json:"paths"`
}

// NodeItem defines model for NodeItem.
type NodeItem struct {
	Data Node         `json:"data"`
	Kind NodeItemKind `json:"kind"`
	Meta NodeMeta     `json:"meta"`
}

// NodeItemKind defines model for NodeItem.Kind.
type NodeItemKind string

// NodeItems defines model for NodeItems.
type NodeItems = []NodeItem

// NodeLabel defines model for NodeLabel.
type NodeLabel struct {
	// Name name is the label name.
	Name string `json:"name"`

	// Value value is the label value.
	Value string `json:"value"`
}

// NodeList defines model for NodeList.
type NodeList struct {
	Items NodeItems    `json:"items"`
	Kind  NodeListKind `json:"kind"`
}

// NodeListKind defines model for NodeList.Kind.
type NodeListKind string

// NodeMeta defines model for NodeMeta.
type NodeMeta struct {
	Node string `json:"node"`
}

// NodeMonitor defines model for NodeMonitor.
type NodeMonitor struct {
	GlobalExpect          string    `json:"global_expect"`
	GlobalExpectUpdatedAt time.Time `json:"global_expect_updated_at"`
	LocalExpect           string    `json:"local_expect"`
	LocalExpectUpdatedAt  time.Time `json:"local_expect_updated_at"`
	OrchestrationID       string    `json:"orchestration_id"`
	OrchestrationIsDone   bool      `json:"orchestration_is_done"`
	SessionID             string    `json:"session_id"`
	State                 string    `json:"state"`
	StateUpdatedAt        time.Time `json:"state_updated_at"`
	UpdatedAt             time.Time `json:"updated_at"`
}

// NodeStatus defines model for NodeStatus.
type NodeStatus struct {
	Agent        string                      `json:"agent"`
	API          string                      `json:"api"`
	Arbitrators  map[string]ArbitratorStatus `json:"arbitrators"`
	Compat       uint64                      `json:"compat"`
	FrozenAt     time.Time                   `json:"frozen_at"`
	Gen          map[string]uint64           `json:"gen"`
	IsLeader     bool                        `json:"is_leader"`
	IsOverloaded bool                        `json:"is_overloaded"`
	Labels       map[string]string           `json:"labels"`
}

// NodesInfo defines model for NodesInfo.
type NodesInfo = nodesinfo.M

// ObjectActor defines model for ObjectActor.
type ObjectActor struct {
	// Avail Represents a resource, instance or object status, e.g., 'up', 'down', 'warn', ....
	Avail Status      `json:"avail"`
	Flex  *FlexConfig `json:"flex,omitempty"`

	// Frozen Frozen is the aggregation of instances frozen states
	Frozen      ObjectFrozen `json:"frozen"`
	Instances   InstanceMap  `json:"instances"`
	Orchestrate Orchestrate  `json:"orchestrate"`

	// Overall Represents a resource, instance or object status, e.g., 'up', 'down', 'warn', ....
	Overall Status `json:"overall"`

	// PlacementPolicy object placement policy
	PlacementPolicy PlacementPolicy `json:"placement_policy"`

	// PlacementState object placement state
	PlacementState PlacementState `json:"placement_state"`

	// Priority Lower priority are orchestrated first.
	Priority Priority `json:"priority"`

	// Provisioned service, instance or resource provisioned state
	Provisioned Provisioned `json:"provisioned"`
	Scope       Scope       `json:"scope"`

	// Topology object topology
	Topology         Topology  `json:"topology"`
	UpInstancesCount int       `json:"up_instances_count"`
	UpdatedAt        UpdatedAt `json:"updated_at"`
}

// ObjectCcfg defines model for ObjectCcfg.
type ObjectCcfg = ObjectCore

// ObjectCfg defines model for ObjectCfg.
type ObjectCfg = ObjectCore

// ObjectCore defines model for ObjectCore.
type ObjectCore struct {
	Instances InstanceMap `json:"instances"`

	// Priority Lower priority are orchestrated first.
	Priority  Priority  `json:"priority"`
	Scope     Scope     `json:"scope"`
	UpdatedAt UpdatedAt `json:"updated_at"`
}

// ObjectData defines model for ObjectData.
type ObjectData struct {
	union json.RawMessage
}

// ObjectFrozen Frozen is the aggregation of instances frozen states
type ObjectFrozen string

// ObjectItem defines model for ObjectItem.
type ObjectItem struct {
	Data ObjectData     `json:"data"`
	Kind ObjectItemKind `json:"kind"`
	Meta ObjectMeta     `json:"meta"`
}

// ObjectItemKind defines model for ObjectItem.Kind.
type ObjectItemKind string

// ObjectItems defines model for ObjectItems.
type ObjectItems = []ObjectItem

// ObjectList defines model for ObjectList.
type ObjectList struct {
	Items ObjectItems    `json:"items"`
	Kind  ObjectListKind `json:"kind"`
}

// ObjectListKind defines model for ObjectList.Kind.
type ObjectListKind string

// ObjectMeta defines model for ObjectMeta.
type ObjectMeta struct {
	Object string `json:"object"`
}

// ObjectPaths defines model for ObjectPaths.
type ObjectPaths = []string

// ObjectSec defines model for ObjectSec.
type ObjectSec = ObjectCore

// ObjectSvc defines model for ObjectSvc.
type ObjectSvc struct {
	// Avail Represents a resource, instance or object status, e.g., 'up', 'down', 'warn', ....
	Avail Status      `json:"avail"`
	Flex  *FlexConfig `json:"flex,omitempty"`

	// Frozen Frozen is the aggregation of instances frozen states
	Frozen      ObjectFrozen `json:"frozen"`
	Instances   InstanceMap  `json:"instances"`
	Orchestrate Orchestrate  `json:"orchestrate"`

	// Overall Represents a resource, instance or object status, e.g., 'up', 'down', 'warn', ....
	Overall Status `json:"overall"`

	// PlacementPolicy object placement policy
	PlacementPolicy PlacementPolicy `json:"placement_policy"`

	// PlacementState object placement state
	PlacementState PlacementState `json:"placement_state"`

	// Priority Lower priority are orchestrated first.
	Priority Priority `json:"priority"`

	// Provisioned service, instance or resource provisioned state
	Provisioned Provisioned `json:"provisioned"`
	Scope       Scope       `json:"scope"`

	// Topology object topology
	Topology         Topology  `json:"topology"`
	UpInstancesCount int       `json:"up_instances_count"`
	UpdatedAt        UpdatedAt `json:"updated_at"`
}

// ObjectUsr defines model for ObjectUsr.
type ObjectUsr = ObjectCore

// ObjectVol defines model for ObjectVol.
type ObjectVol struct {
	// Avail Represents a resource, instance or object status, e.g., 'up', 'down', 'warn', ....
	Avail Status      `json:"avail"`
	Flex  *FlexConfig `json:"flex,omitempty"`

	// Frozen Frozen is the aggregation of instances frozen states
	Frozen      ObjectFrozen `json:"frozen"`
	Instances   InstanceMap  `json:"instances"`
	Orchestrate Orchestrate  `json:"orchestrate"`

	// Overall Represents a resource, instance or object status, e.g., 'up', 'down', 'warn', ....
	Overall Status `json:"overall"`

	// PlacementPolicy object placement policy
	PlacementPolicy PlacementPolicy `json:"placement_policy"`

	// PlacementState object placement state
	PlacementState PlacementState `json:"placement_state"`
	Pool           string         `json:"pool"`

	// Priority Lower priority are orchestrated first.
	Priority Priority `json:"priority"`

	// Provisioned service, instance or resource provisioned state
	Provisioned Provisioned `json:"provisioned"`
	Scope       Scope       `json:"scope"`
	Size        int64       `json:"size"`

	// Topology object topology
	Topology         Topology  `json:"topology"`
	UpInstancesCount int       `json:"up_instances_count"`
	UpdatedAt        UpdatedAt `json:"updated_at"`
}

// ObjectVolConfig defines model for ObjectVolConfig.
type ObjectVolConfig struct {
	Pool string `json:"pool"`
	Size int64  `json:"size"`
}

// Orchestrate defines model for Orchestrate.
type Orchestrate string

// OrchestrationQueued defines model for OrchestrationQueued.
type OrchestrationQueued struct {
	OrchestrationID openapi_types.UUID `json:"orchestration_id"`
}

// Package defines model for Package.
type Package struct {
	Arch        string    `json:"arch"`
	InstalledAt time.Time `json:"installedat"`
	Name        string    `json:"name"`
	Sig         string    `json:"sig"`
	Type        string    `json:"type"`
	Version     string    `json:"version"`
}

// PackageItem defines model for PackageItem.
type PackageItem struct {
	Data Package         `json:"data"`
	Kind PackageItemKind `json:"kind"`
	Meta NodeMeta        `json:"meta"`
}

// PackageItemKind defines model for PackageItem.Kind.
type PackageItemKind string

// PackageItems defines model for PackageItems.
type PackageItems = []PackageItem

// PackageList defines model for PackageList.
type PackageList struct {
	Items PackageItems    `json:"items"`
	Kind  PackageListKind `json:"kind"`
}

// PackageListKind defines model for PackageList.Kind.
type PackageListKind string

// Patch defines model for Patch.
type Patch struct {
	InstalledAt time.Time `json:"installedat"`
	Number      string    `json:"number"`
	Revision    string    `json:"revision"`
}

// PatchDataKey defines model for PatchDataKey.
type PatchDataKey struct {
	Action PatchDataKeyAction `json:"action"`
	Bytes  *[]byte            `json:"bytes,omitempty"`
	Name   string             `json:"name"`
	String *string            `json:"string,omitempty"`
	To     *string            `json:"to,omitempty"`
}

// PatchDataKeyAction defines model for PatchDataKey.Action.
type PatchDataKeyAction string

// PatchDataKeys defines model for PatchDataKeys.
type PatchDataKeys = []PatchDataKey

// PatchItem defines model for PatchItem.
type PatchItem struct {
	Data Patch         `json:"data"`
	Kind PatchItemKind `json:"kind"`
	Meta NodeMeta      `json:"meta"`
}

// PatchItemKind defines model for PatchItem.Kind.
type PatchItemKind string

// PatchItems defines model for PatchItems.
type PatchItems = []PatchItem

// PatchList defines model for PatchList.
type PatchList struct {
	Items PatchItems    `json:"items"`
	Kind  PatchListKind `json:"kind"`
}

// PatchListKind defines model for PatchList.Kind.
type PatchListKind string

// PlacementPolicy object placement policy
type PlacementPolicy string

// PlacementState object placement state
type PlacementState string

// Pool defines model for Pool.
type Pool struct {
	Capabilities []string  `json:"capabilities"`
	Errors       *[]string `json:"errors,omitempty"`
	Free         int64     `json:"free"`
	Head         string    `json:"head"`
	Name         string    `json:"name"`
	Node         string    `json:"node"`
	Shared       bool      `json:"shared"`
	Size         int64     `json:"size"`
	Type         string    `json:"type"`
	UpdatedAt    time.Time `json:"updated_at"`
	Used         int64     `json:"used"`
	VolumeCount  int       `json:"volume_count"`
}

// PoolItems defines model for PoolItems.
type PoolItems = []Pool

// PoolList defines model for PoolList.
type PoolList struct {
	Items PoolItems    `json:"items"`
	Kind  PoolListKind `json:"kind"`
}

// PoolListKind defines model for PoolList.Kind.
type PoolListKind string

// PoolVolume defines model for PoolVolume.
type PoolVolume struct {
	Children []string `json:"children"`
	IsOrphan bool     `json:"is_orphan"`
	Path     string   `json:"path"`
	Pool     string   `json:"pool"`
	Size     int64    `json:"size"`
}

// PoolVolumeItems defines model for PoolVolumeItems.
type PoolVolumeItems = []PoolVolume

// PoolVolumeList defines model for PoolVolumeList.
type PoolVolumeList struct {
	Items PoolVolumeItems    `json:"items"`
	Kind  PoolVolumeListKind `json:"kind"`
}

// PoolVolumeListKind defines model for PoolVolumeList.Kind.
type PoolVolumeListKind string

// PostInstanceProgress defines model for PostInstanceProgress.
type PostInstanceProgress struct {
	IsPartial *bool              `json:"is_partial,omitempty"`
	SessionID openapi_types.UUID `json:"session_id"`
	State     string             `json:"state"`
}

// PostNodeDRBDConfigRequest defines model for PostNodeDRBDConfigRequest.
type PostNodeDRBDConfigRequest struct {
	AllocationID openapi_types.UUID `json:"allocation_id"`
	Data         []byte             `json:"data"`
}

// PostObjectActionRestart defines model for PostObjectActionRestart.
type PostObjectActionRestart struct {
	Force *bool `json:"force,omitempty"`
}

// PostObjectActionSwitch defines model for PostObjectActionSwitch.
type PostObjectActionSwitch struct {
	Destination []string `json:"destination"`
	Live        bool     `json:"live"`
}

// PostRelayMessage defines model for PostRelayMessage.
type PostRelayMessage struct {
	ClusterID   string `json:"cluster_id"`
	ClusterName string `json:"cluster_name"`
	Msg         string `json:"msg"`
	Nodename    string `json:"nodename"`
}

// Priority Lower priority are orchestrated first.
type Priority = int

// Problem defines model for Problem.
type Problem struct {
	// Detail A human-readable explanation specific to this occurrence of the
	// problem.
	Detail string `json:"detail"`

	// Status The HTTP status code ([RFC7231], Section 6) generated by the
	// origin server for this occurrence of the problem.
	Status int `json:"status"`

	// Title A short, human-readable summary of the problem type.  It SHOULD
	// NOT change from occurrence to occurrence of the problem, except
	// for purposes of localization (e.g., using proactive content
	// negotiation; see [RFC7231], Section 3.4).
	Title string `json:"title"`
}

// Property defines model for Property.
type Property struct {
	Error  string      `json:"error"`
	Name   string      `json:"name"`
	Source string      `json:"source"`
	Title  string      `json:"title"`
	Value  interface{} `json:"value"`
}

// PropertyItem defines model for PropertyItem.
type PropertyItem struct {
	Data Property `json:"data"`
	Kind string   `json:"kind"`
	Meta NodeMeta `json:"meta"`
}

// PropertyItems defines model for PropertyItems.
type PropertyItems = []PropertyItem

// PropertyList defines model for PropertyList.
type PropertyList struct {
	Items PropertyItems    `json:"items"`
	Kind  PropertyListKind `json:"kind"`
}

// PropertyListKind defines model for PropertyList.Kind.
type PropertyListKind string

// Provisioned service, instance or resource provisioned state
type Provisioned string

// Region defines model for Region.
type Region struct {
	Devpath string `json:"devpath"`
	Group   string `json:"group"`
	ID      string `json:"id"`
	Object  string `json:"object"`
	Size    uint64 `json:"size"`
}

// RelayMessage defines model for RelayMessage.
type RelayMessage struct {
	ClusterID   string    `json:"cluster_id"`
	ClusterName string    `json:"cluster_name"`
	Msg         string    `json:"msg"`
	NodeAddr    string    `json:"node_addr"`
	Nodename    string    `json:"nodename"`
	Relay       string    `json:"relay"`
	UpdatedAt   time.Time `json:"updated_at"`
	Username    string    `json:"username"`
}

// RelayStatusItem defines model for RelayStatusItem.
type RelayStatusItem struct {
	ClusterID   string    `json:"cluster_id"`
	ClusterName string    `json:"cluster_name"`
	MsgLen      int       `json:"msg_len"`
	NodeAddr    string    `json:"node_addr"`
	Nodename    string    `json:"nodename"`
	Relay       string    `json:"relay"`
	Status      string    `json:"status"`
	UpdatedAt   time.Time `json:"updated_at"`
	Username    string    `json:"username"`
}

// RelayStatusItems defines model for RelayStatusItems.
type RelayStatusItems = []RelayStatusItem

// RelayStatusList defines model for RelayStatusList.
type RelayStatusList struct {
	Items RelayStatusItems    `json:"items"`
	Kind  RelayStatusListKind `json:"kind"`
}

// RelayStatusListKind defines model for RelayStatusList.Kind.
type RelayStatusListKind string

// Resource defines model for Resource.
type Resource struct {
	Config  *ResourceConfig  `json:"config,omitempty"`
	Monitor *ResourceMonitor `json:"monitor,omitempty"`
	Status  *ResourceStatus  `json:"status,omitempty"`
}

// ResourceConfig defines model for ResourceConfig.
type ResourceConfig = instance.ResourceConfig

// ResourceFile defines model for ResourceFile.
type ResourceFile struct {
	Csum  string    `json:"csum"`
	Mtime time.Time `json:"mtime"`
	Name  string    `json:"name"`
}

// ResourceFiles defines model for ResourceFiles.
type ResourceFiles = []ResourceFile

// ResourceInfoItem defines model for ResourceInfoItem.
type ResourceInfoItem struct {
	Key    string `json:"key"`
	Node   string `json:"node"`
	Object string `json:"object"`
	Rid    string `json:"rid"`
	Value  string `json:"value"`
}

// ResourceInfoItems defines model for ResourceInfoItems.
type ResourceInfoItems = []ResourceInfoItem

// ResourceInfoList defines model for ResourceInfoList.
type ResourceInfoList struct {
	Items ResourceInfoItems    `json:"items"`
	Kind  ResourceInfoListKind `json:"kind"`
}

// ResourceInfoListKind defines model for ResourceInfoList.Kind.
type ResourceInfoListKind string

// ResourceItem defines model for ResourceItem.
type ResourceItem struct {
	Data Resource         `json:"data"`
	Kind ResourceItemKind `json:"kind"`
	Meta ResourceMeta     `json:"meta"`
}

// ResourceItemKind defines model for ResourceItem.Kind.
type ResourceItemKind string

// ResourceItems defines model for ResourceItems.
type ResourceItems = []ResourceItem

// ResourceList defines model for ResourceList.
type ResourceList struct {
	Items ResourceItems    `json:"items"`
	Kind  ResourceListKind `json:"kind"`
}

// ResourceListKind defines model for ResourceList.Kind.
type ResourceListKind string

// ResourceLog defines model for ResourceLog.
type ResourceLog = []ResourceLogEntry

// ResourceLogEntry defines model for ResourceLogEntry.
type ResourceLogEntry struct {
	Level   string `json:"level"`
	Message string `json:"message"`
}

// ResourceMeta defines model for ResourceMeta.
type ResourceMeta struct {
	Node   string `json:"node"`
	Object string `json:"object"`
	RID    string `json:"rid"`
}

// ResourceMonitor defines model for ResourceMonitor.
type ResourceMonitor = instance.ResourceMonitor

// ResourceMonitorRestart defines model for ResourceMonitorRestart.
type ResourceMonitorRestart struct {
	LastAt    time.Time `json:"last_at"`
	Remaining int       `json:"remaining"`
}

// ResourceProvisionStatus defines model for ResourceProvisionStatus.
type ResourceProvisionStatus struct {
	Mtime time.Time `json:"mtime"`

	// State service, instance or resource provisioned state
	State Provisioned `json:"state"`
}

// ResourceStatus defines model for ResourceStatus.
type ResourceStatus = resource.Status

// Role defines model for Role.
type Role string

// RunningInfo defines model for RunningInfo.
type RunningInfo struct {
	At        time.Time `json:"at"`
	Pid       int       `json:"pid"`
	Rid       string    `json:"rid"`
	SessionId string    `json:"session_id"`
}

// SANPath defines model for SANPath.
type SANPath struct {
	// Initiator initiator is the host side san path endpoint.
	Initiator SANPathInitiator `json:"initiator"`

	// Target target is the storage array side san path endpoint.
	Target SANPathTarget `json:"target"`
}

// SANPathInitiator initiator is the host side san path endpoint.
type SANPathInitiator struct {
	// Name name is a worldwide unique path endpoint identifier.
	Name string `json:"name"`

	// Type type is the endpoint type.
	Type string `json:"type"`
}

// SANPathInitiatorItem defines model for SANPathInitiatorItem.
type SANPathInitiatorItem struct {
	// Data initiator is the host side san path endpoint.
	Data SANPathInitiator         `json:"data"`
	Kind SANPathInitiatorItemKind `json:"kind"`
	Meta NodeMeta                 `json:"meta"`
}

// SANPathInitiatorItemKind defines model for SANPathInitiatorItem.Kind.
type SANPathInitiatorItemKind string

// SANPathInitiatorItems defines model for SANPathInitiatorItems.
type SANPathInitiatorItems = []SANPathInitiatorItem

// SANPathInitiatorList defines model for SANPathInitiatorList.
type SANPathInitiatorList struct {
	Items SANPathInitiatorItems    `json:"items"`
	Kind  SANPathInitiatorListKind `json:"kind"`
}

// SANPathInitiatorListKind defines model for SANPathInitiatorList.Kind.
type SANPathInitiatorListKind string

// SANPathItems defines model for SANPathItems.
type SANPathItems = []SANPath

// SANPathList defines model for SANPathList.
type SANPathList struct {
	Items SANPathItems    `json:"items"`
	Kind  SANPathListKind `json:"kind"`
}

// SANPathListKind defines model for SANPathList.Kind.
type SANPathListKind string

// SANPathTarget target is the storage array side san path endpoint.
type SANPathTarget struct {
	// Name name is a worldwide unique path endpoint identifier.
	Name string `json:"name"`

	// Type type is a the endpoint type.
	Type string `json:"type"`
}

// Schedule defines model for Schedule.
type Schedule struct {
	Action             string    `json:"action"`
	Key                string    `json:"key"`
	LastRunAt          time.Time `json:"last_run_at"`
	LastRunFile        string    `json:"last_run_file"`
	LastSuccessFile    string    `json:"last_success_file"`
	MaxParallel        int       `json:"max_parallel"`
	NextRunAt          time.Time `json:"next_run_at"`
	Require            string    `json:"require"`
	RequireCollector   bool      `json:"require_collector"`
	RequireProvisioned bool      `json:"require_provisioned"`
	Schedule           string    `json:"schedule"`
}

// ScheduleConfig defines model for ScheduleConfig.
type ScheduleConfig struct {
	Action             string `json:"action"`
	Key                string `json:"key"`
	LastRunFile        string `json:"last_run_file"`
	LastSuccessFile    string `json:"last_success_file"`
	MaxParallel        int    `json:"max_parallel"`
	Require            string `json:"require"`
	RequireCollector   bool   `json:"require_collector"`
	RequireProvisioned bool   `json:"require_provisioned"`
	Schedule           string `json:"schedule"`
}

// ScheduleItem defines model for ScheduleItem.
type ScheduleItem struct {
	Data Schedule         `json:"data"`
	Kind ScheduleItemKind `json:"kind"`
	Meta InstanceMeta     `json:"meta"`
}

// ScheduleItemKind defines model for ScheduleItem.Kind.
type ScheduleItemKind string

// ScheduleItems defines model for ScheduleItems.
type ScheduleItems = []ScheduleItem

// ScheduleList defines model for ScheduleList.
type ScheduleList struct {
	Items ScheduleItems    `json:"items"`
	Kind  ScheduleListKind `json:"kind"`
}

// ScheduleListKind defines model for ScheduleList.Kind.
type ScheduleListKind string

// Scope defines model for Scope.
type Scope = []string

// Status Represents a resource, instance or object status, e.g., 'up', 'down', 'warn', ....
type Status string

// SubsetConfig defines model for SubsetConfig.
type SubsetConfig = instance.SubsetConfig

// SubsetsConfig defines model for SubsetsConfig.
type SubsetsConfig = []SubsetConfig

// Topology object topology
type Topology string

// UpdatedAt defines model for UpdatedAt.
type UpdatedAt = time.Time

// User defines model for User.
type User struct {
	ID   int    `json:"id"`
	Name string `json:"name"`
}

// UserIdentity defines model for UserIdentity.
type UserIdentity struct {
	Auth      *string             `json:"auth,omitempty"`
	Grant     map[string][]string `json:"grant"`
	Name      string              `json:"name"`
	Namespace string              `json:"namespace"`
	RawGrant  string              `json:"raw_grant"`
}

// UserItem defines model for UserItem.
type UserItem struct {
	Data User         `json:"data"`
	Kind UserItemKind `json:"kind"`
	Meta NodeMeta     `json:"meta"`
}

// UserItemKind defines model for UserItem.Kind.
type UserItemKind string

// UserItems defines model for UserItems.
type UserItems = []UserItem

// UserList defines model for UserList.
type UserList struct {
	Items UserItems    `json:"items"`
	Kind  UserListKind `json:"kind"`
}

// UserListKind defines model for UserList.Kind.
type UserListKind string

// DRBDResourceName defines model for DRBDResourceName.
type DRBDResourceName = string

// DRBDResourceNodeID defines model for DRBDResourceNodeID.
type DRBDResourceNodeID = string

// Duration defines model for Duration.
type Duration = string

// EventCache defines model for EventCache.
type EventCache = bool

// EventFilter defines model for EventFilter.
type EventFilter = []string

// Limit defines model for Limit.
type Limit = int64

// LogFilter defines model for LogFilter.
type LogFilter = []string

// LogFollow defines model for LogFollow.
type LogFollow = bool

// LogLines defines model for LogLines.
type LogLines = int

// NamespaceOptional defines model for NamespaceOptional.
type NamespaceOptional = string

// NodeOptional defines model for NodeOptional.
type NodeOptional = string

// Path defines model for Path.
type Path = string

// PathOptional defines model for PathOptional.
type PathOptional = string

// Paths defines model for Paths.
type Paths = []string

// ClusterID defines model for RelayClusterID.
type ClusterID = string

// RelayNodename defines model for RelayNodename.
type RelayNodename = string

// RelayRemote defines model for RelayRemote.
type RelayRemote = bool

// RelayUsername defines model for RelayUsername.
type RelayUsername = string

// Relays defines model for Relays.
type Relays = []string

// RidOptional defines model for RidOptional.
type RidOptional = string

// Roles defines model for Roles.
type Roles = []Role

// SelectorOptional defines model for SelectorOptional.
type SelectorOptional = string

// InPathHeartbeatName Heartbeat name, example '1.rx' for heartbeat receiver of 'hb#1' section
type InPathHeartbeatName = DaemonHeartbeatName

// InPathKind defines model for inPathKind.
type InPathKind = Kind

// InPathListenerName Listener name
type InPathListenerName = DaemonListenerName

// InPathName defines model for inPathName.
type InPathName = string

// InPathNamespace defines model for inPathNamespace.
type InPathNamespace = string

// InPathNodeName The cluster node to relay the request to. `_` and `localhost` refer tp
// the node that received the request.
type InPathNodeName = string

// InQueryAllSlaves Act on all encap instances, and don't act on the host instance if not asked for explicitely.
type InQueryAllSlaves = bool

// InQueryArrayName defines model for inQueryArrayName.
type InQueryArrayName = string

// InQueryConfirm defines model for inQueryConfirm.
type InQueryConfirm = bool

// InQueryCron defines model for inQueryCron.
type InQueryCron = bool

// InQueryDeletes defines model for inQueryDeletes.
type InQueryDeletes = []string

// InQueryDisableRollback defines model for inQueryDisableRollback.
type InQueryDisableRollback = bool

// InQueryDriver defines model for inQueryDriver.
type InQueryDriver = string

// InQueryEnvs defines model for inQueryEnvs.
type InQueryEnvs = []string

// InQueryEvaluate Dereference, scope and convert the keyword raw value.
type InQueryEvaluate = bool

// InQueryForce defines model for inQueryForce.
type InQueryForce = bool

// InQueryGreetTimeout defines model for inQueryGreetTimeout.
type InQueryGreetTimeout = string

// InQueryImpersonate The node name to impersonate when evaluating a keyword. Setting impersonate without evaluate=true returns a Bad Request error.
type InQueryImpersonate = string

// InQueryKeyName A datastore key name
type InQueryKeyName = string

// Names defines model for inQueryKeyNames.
type Names = []string

// InQueryKeywords defines model for inQueryKeywords.
type InQueryKeywords = []string

// InQueryLeader defines model for inQueryLeader.
type InQueryLeader = bool

// InQueryMaster Act on the host instance of the service, and don't act on encap instance if not asked for explicitely.
type InQueryMaster = bool

// InQueryMoveTo defines model for inQueryMoveTo.
type InQueryMoveTo = string

// InQueryNodeSelector defines model for inQueryNodeSelector.
type InQueryNodeSelector = string

// InQueryOption defines model for inQueryOption.
type InQueryOption = string

// InQueryPoolName defines model for inQueryPoolName.
type InQueryPoolName = string

// InQueryRequesterSid defines model for inQueryRequesterSid.
type InQueryRequesterSid = openapi_types.UUID

// InQueryResourceFileName defines model for inQueryResourceFileName.
type InQueryResourceFileName = string

// InQueryResourceFileRid defines model for inQueryResourceFileRid.
type InQueryResourceFileRid = string

// InQueryRid defines model for inQueryRid.
type InQueryRid = string

// InQuerySeats defines model for inQuerySeats.
type InQuerySeats = int

// InQuerySection defines model for inQuerySection.
type InQuerySection = string

// InQuerySets defines model for inQuerySets.
type InQuerySets = []string

// InQuerySlaves defines model for inQuerySlaves.
type InQuerySlaves = []string

// InQueryStateOnly defines model for inQueryStateOnly.
type InQueryStateOnly = bool

// InQuerySubset defines model for inQuerySubset.
type InQuerySubset = string

// InQueryTag defines model for inQueryTag.
type InQueryTag = string

// InQueryTo defines model for inQueryTo.
type InQueryTo = string

// InQueryUnsets defines model for inQueryUnsets.
type InQueryUnsets = []string

// N200 defines model for 200.
type N200 = Problem

// N400 defines model for 400.
type N400 = Problem

// N401 defines model for 401.
type N401 = Problem

// N403 defines model for 403.
type N403 = Problem

// N404 defines model for 404.
type N404 = Problem

// N408 defines model for 408.
type N408 = Problem

// N409 defines model for 409.
type N409 = Problem

// N413 defines model for 413.
type N413 = Problem

// N500 defines model for 500.
type N500 = Problem

// N503 defines model for 503.
type N503 = Problem

// GetArrayParams defines parameters for GetArray.
type GetArrayParams struct {
	// Name the name of a backend storage array
	Name *InQueryArrayName `form:"name,omitempty" json:"name,omitempty"`
}

// PostAuthRefreshParams defines parameters for PostAuthRefresh.
type PostAuthRefreshParams struct {
	// Role list of api role
	Role *Roles `form:"role,omitempty" json:"role,omitempty"`

	// AccessDuration max access token duration, maximum value 24h
	AccessDuration *string `form:"access_duration,omitempty" json:"access_duration,omitempty"`

	// Scope the scope value used to create the token grant claim
	Scope *string `form:"scope,omitempty" json:"scope,omitempty"`
}

// PostAuthTokenParams defines parameters for PostAuthToken.
type PostAuthTokenParams struct {
	// Role list of api role
	Role *Roles `form:"role,omitempty" json:"role,omitempty"`

	// AccessDuration max access token duration, maximum value 24h
	AccessDuration *string `form:"access_duration,omitempty" json:"access_duration,omitempty"`

	// Subject the token subject claim, must be an existing cluster user
	Subject *string `form:"subject,omitempty" json:"subject,omitempty"`

	// Scope the scope value used to create the token grant claim
	Scope *string `form:"scope,omitempty" json:"scope,omitempty"`

	// Refresh If `true`, the response will include a refresh token in addition to the access token. If omitted or `false`, only an access token is returned.
	Refresh *bool `form:"refresh,omitempty" json:"refresh,omitempty"`

	// RefreshDuration max refresh token duration, maximum value 30 days
	RefreshDuration *string `form:"refresh_duration,omitempty" json:"refresh_duration,omitempty"`
}

// GetClusterConfigParams defines parameters for GetClusterConfig.
type GetClusterConfigParams struct {
	Evaluate    *InQueryEvaluate    `form:"evaluate,omitempty" json:"evaluate,omitempty"`
	Impersonate *InQueryImpersonate `form:"impersonate,omitempty" json:"impersonate,omitempty"`
	Kw          *InQueryKeywords    `form:"kw,omitempty" json:"kw,omitempty"`
}

// PatchClusterConfigParams defines parameters for PatchClusterConfig.
type PatchClusterConfigParams struct {
	Delete *InQueryDeletes `form:"delete,omitempty" json:"delete,omitempty"`
	Unset  *InQueryUnsets  `form:"unset,omitempty" json:"unset,omitempty"`
	Set    *InQuerySets    `form:"set,omitempty" json:"set,omitempty"`
}

// GetClusterConfigKeywordsParams defines parameters for GetClusterConfigKeywords.
type GetClusterConfigKeywordsParams struct {
	// Driver show only keywords of this driver
	Driver *InQueryDriver `form:"driver,omitempty" json:"driver,omitempty"`

	// Section show supported keywords of this configuration section
	Section *InQuerySection `form:"section,omitempty" json:"section,omitempty"`

	// Option show the keyword referenced by section and option
	Option *InQueryOption `form:"option,omitempty" json:"option,omitempty"`
}

// PostClusterJoinParams defines parameters for PostClusterJoin.
type PostClusterJoinParams struct {
	// Node The candidate node to add to cluster nodes
	Node string `form:"node" json:"node"`
}

// PostClusterLeaveParams defines parameters for PostClusterLeave.
type PostClusterLeaveParams struct {
	// Node The leaving cluster node
	Node string `form:"node" json:"node"`
}

// GetClusterStatusParams defines parameters for GetClusterStatus.
type GetClusterStatusParams struct {
	// Namespace namespace
	Namespace *NamespaceOptional `form:"namespace,omitempty" json:"namespace,omitempty"`

	// Selector selector
	Selector *SelectorOptional `form:"selector,omitempty" json:"selector,omitempty"`
}

// GetInstancesParams defines parameters for GetInstances.
type GetInstancesParams struct {
	// Path object selector expression.
	Path *PathOptional `form:"path,omitempty" json:"path,omitempty"`

	// Node node selector expression.
	Node *NodeOptional `form:"node,omitempty" json:"node,omitempty"`
}

// GetNetworksParams defines parameters for GetNetworks.
type GetNetworksParams struct {
	// Name the name of a cluster backend network
	Name *string `form:"name,omitempty" json:"name,omitempty"`
}

// GetNetworkIPParams defines parameters for GetNetworkIP.
type GetNetworkIPParams struct {
	// Name the name of a cluster backend network
	Name *string `form:"name,omitempty" json:"name,omitempty"`
}

// GetNodesParams defines parameters for GetNodes.
type GetNodesParams struct {
	// Node node selector expression.
	Node *NodeOptional `form:"node,omitempty" json:"node,omitempty"`
}

// PostPeerActionFreezeParams defines parameters for PostPeerActionFreeze.
type PostPeerActionFreezeParams struct {
	RequesterSid *InQueryRequesterSid `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
}

// PostNodeActionPushAssetParams defines parameters for PostNodeActionPushAsset.
type PostNodeActionPushAssetParams struct {
	RequesterSid *InQueryRequesterSid `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
}

// PostNodeActionPushDiskParams defines parameters for PostNodeActionPushDisk.
type PostNodeActionPushDiskParams struct {
	RequesterSid *InQueryRequesterSid `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
}

// PostNodeActionPushPatchParams defines parameters for PostNodeActionPushPatch.
type PostNodeActionPushPatchParams struct {
	RequesterSid *InQueryRequesterSid `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
}

// PostNodeActionPushPkgParams defines parameters for PostNodeActionPushPkg.
type PostNodeActionPushPkgParams struct {
	RequesterSid *InQueryRequesterSid `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
}

// PostNodeActionScanCapabilitiesParams defines parameters for PostNodeActionScanCapabilities.
type PostNodeActionScanCapabilitiesParams struct {
	RequesterSid *InQueryRequesterSid `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
}

// PostNodeActionSysreportParams defines parameters for PostNodeActionSysreport.
type PostNodeActionSysreportParams struct {
	Force        *InQueryForce        `form:"force,omitempty" json:"force,omitempty"`
	RequesterSid *InQueryRequesterSid `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
}

// PostPeerActionUnfreezeParams defines parameters for PostPeerActionUnfreeze.
type PostPeerActionUnfreezeParams struct {
	RequesterSid *InQueryRequesterSid `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
}

// GetNodeConfigParams defines parameters for GetNodeConfig.
type GetNodeConfigParams struct {
	Kw          *InQueryKeywords    `form:"kw,omitempty" json:"kw,omitempty"`
	Evaluate    *InQueryEvaluate    `form:"evaluate,omitempty" json:"evaluate,omitempty"`
	Impersonate *InQueryImpersonate `form:"impersonate,omitempty" json:"impersonate,omitempty"`
}

// PatchNodeConfigParams defines parameters for PatchNodeConfig.
type PatchNodeConfigParams struct {
	Delete *InQueryDeletes `form:"delete,omitempty" json:"delete,omitempty"`
	Unset  *InQueryUnsets  `form:"unset,omitempty" json:"unset,omitempty"`
	Set    *InQuerySets    `form:"set,omitempty" json:"set,omitempty"`
}

// GetNodeConfigKeywordsParams defines parameters for GetNodeConfigKeywords.
type GetNodeConfigKeywordsParams struct {
	// Driver show only keywords of this driver
	Driver *InQueryDriver `form:"driver,omitempty" json:"driver,omitempty"`

	// Section show supported keywords of this configuration section
	Section *InQuerySection `form:"section,omitempty" json:"section,omitempty"`

	// Option show the keyword referenced by section and option
	Option *InQueryOption `form:"option,omitempty" json:"option,omitempty"`
}

// PostDaemonShutdownParams defines parameters for PostDaemonShutdown.
type PostDaemonShutdownParams struct {
	// Duration max duration
	Duration *Duration `form:"duration,omitempty" json:"duration,omitempty"`
}

// GetDaemonEventsParams defines parameters for GetDaemonEvents.
type GetDaemonEventsParams struct {
	// Duration max duration
	Duration *Duration `form:"duration,omitempty" json:"duration,omitempty"`

	// Limit limit items count
	Limit *Limit `form:"limit,omitempty" json:"limit,omitempty"`

	// Filter list of event filter
	Filter *EventFilter `form:"filter,omitempty" json:"filter,omitempty"`

	// Cache start the event feed using the latest past events from the cache that match the specified kind and labels.
	Cache *EventCache `form:"cache,omitempty" json:"cache,omitempty"`

	// Selector selector
	Selector *SelectorOptional `form:"selector,omitempty" json:"selector,omitempty"`
}

// GetNodeDRBDConfigParams defines parameters for GetNodeDRBDConfig.
type GetNodeDRBDConfigParams struct {
	// Name drbd resource name
	Name DRBDResourceName `form:"name" json:"name"`
}

// PostNodeDRBDConfigParams defines parameters for PostNodeDRBDConfig.
type PostNodeDRBDConfigParams struct {
	// Name drbd resource name
	Name DRBDResourceName `form:"name" json:"name"`
}

// PostNodeDRBDConnectParams defines parameters for PostNodeDRBDConnect.
type PostNodeDRBDConnectParams struct {
	// Name drbd resource name
	Name DRBDResourceName `form:"name" json:"name"`

	// NodeId drbd resource connection node-id
	NodeId *DRBDResourceNodeID `form:"node_id,omitempty" json:"node_id,omitempty"`
}

// PostNodeDRBDPrimaryParams defines parameters for PostNodeDRBDPrimary.
type PostNodeDRBDPrimaryParams struct {
	// Name drbd resource name
	Name DRBDResourceName `form:"name" json:"name"`
}

// PostNodeDRBDSecondaryParams defines parameters for PostNodeDRBDSecondary.
type PostNodeDRBDSecondaryParams struct {
	// Name drbd resource name
	Name DRBDResourceName `form:"name" json:"name"`
}

// PostInstanceActionBootParams defines parameters for PostInstanceActionBoot.
type PostInstanceActionBootParams struct {
	Slaves       *InQueryAllSlaves    `form:"slaves,omitempty" json:"slaves,omitempty"`
	Master       *InQueryMaster       `form:"master,omitempty" json:"master,omitempty"`
	RequesterSid *InQueryRequesterSid `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
	Rid          *InQueryRid          `form:"rid,omitempty" json:"rid,omitempty"`
	Slave        *InQuerySlaves       `form:"slave,omitempty" json:"slave,omitempty"`
	Subset       *InQuerySubset       `form:"subset,omitempty" json:"subset,omitempty"`
	Tag          *InQueryTag          `form:"tag,omitempty" json:"tag,omitempty"`
	To           *InQueryTo           `form:"to,omitempty" json:"to,omitempty"`
}

// PostInstanceActionDeleteParams defines parameters for PostInstanceActionDelete.
type PostInstanceActionDeleteParams struct {
	RequesterSid *InQueryRequesterSid `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
}

// PostInstanceActionFreezeParams defines parameters for PostInstanceActionFreeze.
type PostInstanceActionFreezeParams struct {
	Slaves       *InQueryAllSlaves    `form:"slaves,omitempty" json:"slaves,omitempty"`
	Master       *InQueryMaster       `form:"master,omitempty" json:"master,omitempty"`
	Slave        *InQuerySlaves       `form:"slave,omitempty" json:"slave,omitempty"`
	RequesterSid *InQueryRequesterSid `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
}

// PostInstanceActionProvisionParams defines parameters for PostInstanceActionProvision.
type PostInstanceActionProvisionParams struct {
	Slaves          *InQueryAllSlaves       `form:"slaves,omitempty" json:"slaves,omitempty"`
	DisableRollback *InQueryDisableRollback `form:"disable_rollback,omitempty" json:"disable_rollback,omitempty"`
	Force           *InQueryForce           `form:"force,omitempty" json:"force,omitempty"`
	Leader          *InQueryLeader          `form:"leader,omitempty" json:"leader,omitempty"`
	Master          *InQueryMaster          `form:"master,omitempty" json:"master,omitempty"`
	RequesterSid    *InQueryRequesterSid    `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
	Rid             *InQueryRid             `form:"rid,omitempty" json:"rid,omitempty"`
	Slave           *InQuerySlaves          `form:"slave,omitempty" json:"slave,omitempty"`
	StateOnly       *InQueryStateOnly       `form:"state_only,omitempty" json:"state_only,omitempty"`
	Subset          *InQuerySubset          `form:"subset,omitempty" json:"subset,omitempty"`
	Tag             *InQueryTag             `form:"tag,omitempty" json:"tag,omitempty"`
	To              *InQueryTo              `form:"to,omitempty" json:"to,omitempty"`
}

// PostInstanceActionPRStartParams defines parameters for PostInstanceActionPRStart.
type PostInstanceActionPRStartParams struct {
	Slaves          *InQueryAllSlaves       `form:"slaves,omitempty" json:"slaves,omitempty"`
	DisableRollback *InQueryDisableRollback `form:"disable_rollback,omitempty" json:"disable_rollback,omitempty"`
	Force           *InQueryForce           `form:"force,omitempty" json:"force,omitempty"`
	Master          *InQueryMaster          `form:"master,omitempty" json:"master,omitempty"`
	RequesterSid    *InQueryRequesterSid    `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
	Rid             *InQueryRid             `form:"rid,omitempty" json:"rid,omitempty"`
	Slave           *InQuerySlaves          `form:"slave,omitempty" json:"slave,omitempty"`
	Subset          *InQuerySubset          `form:"subset,omitempty" json:"subset,omitempty"`
	Tag             *InQueryTag             `form:"tag,omitempty" json:"tag,omitempty"`
	To              *InQueryTo              `form:"to,omitempty" json:"to,omitempty"`
}

// PostInstanceActionPRStopParams defines parameters for PostInstanceActionPRStop.
type PostInstanceActionPRStopParams struct {
	Slaves          *InQueryAllSlaves       `form:"slaves,omitempty" json:"slaves,omitempty"`
	DisableRollback *InQueryDisableRollback `form:"disable_rollback,omitempty" json:"disable_rollback,omitempty"`
	Force           *InQueryForce           `form:"force,omitempty" json:"force,omitempty"`
	Master          *InQueryMaster          `form:"master,omitempty" json:"master,omitempty"`
	RequesterSid    *InQueryRequesterSid    `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
	Rid             *InQueryRid             `form:"rid,omitempty" json:"rid,omitempty"`
	Slave           *InQuerySlaves          `form:"slave,omitempty" json:"slave,omitempty"`
	Subset          *InQuerySubset          `form:"subset,omitempty" json:"subset,omitempty"`
	Tag             *InQueryTag             `form:"tag,omitempty" json:"tag,omitempty"`
	To              *InQueryTo              `form:"to,omitempty" json:"to,omitempty"`
}

// PostInstanceActionPushResourceInfoParams defines parameters for PostInstanceActionPushResourceInfo.
type PostInstanceActionPushResourceInfoParams struct {
	RequesterSid *InQueryRequesterSid `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
}

// PostInstanceActionRestartParams defines parameters for PostInstanceActionRestart.
type PostInstanceActionRestartParams struct {
	Slaves          *InQueryAllSlaves       `form:"slaves,omitempty" json:"slaves,omitempty"`
	DisableRollback *InQueryDisableRollback `form:"disable_rollback,omitempty" json:"disable_rollback,omitempty"`
	Force           *InQueryForce           `form:"force,omitempty" json:"force,omitempty"`
	Master          *InQueryMaster          `form:"master,omitempty" json:"master,omitempty"`
	RequesterSid    *InQueryRequesterSid    `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
	Rid             *InQueryRid             `form:"rid,omitempty" json:"rid,omitempty"`
	Slave           *InQuerySlaves          `form:"slave,omitempty" json:"slave,omitempty"`
	Subset          *InQuerySubset          `form:"subset,omitempty" json:"subset,omitempty"`
	Tag             *InQueryTag             `form:"tag,omitempty" json:"tag,omitempty"`
	To              *InQueryTo              `form:"to,omitempty" json:"to,omitempty"`
}

// PostInstanceActionRunParams defines parameters for PostInstanceActionRun.
type PostInstanceActionRunParams struct {
	Slaves       *InQueryAllSlaves    `form:"slaves,omitempty" json:"slaves,omitempty"`
	Confirm      *InQueryConfirm      `form:"confirm,omitempty" json:"confirm,omitempty"`
	Cron         *InQueryCron         `form:"cron,omitempty" json:"cron,omitempty"`
	Force        *InQueryForce        `form:"force,omitempty" json:"force,omitempty"`
	Master       *InQueryMaster       `form:"master,omitempty" json:"master,omitempty"`
	RequesterSid *InQueryRequesterSid `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
	Rid          *InQueryRid          `form:"rid,omitempty" json:"rid,omitempty"`
	Slave        *InQuerySlaves       `form:"slave,omitempty" json:"slave,omitempty"`
	Subset       *InQuerySubset       `form:"subset,omitempty" json:"subset,omitempty"`
	Tag          *InQueryTag          `form:"tag,omitempty" json:"tag,omitempty"`
	To           *InQueryTo           `form:"to,omitempty" json:"to,omitempty"`
	Env          *InQueryEnvs         `form:"env,omitempty" json:"env,omitempty"`
}

// PostInstanceActionShutdownParams defines parameters for PostInstanceActionShutdown.
type PostInstanceActionShutdownParams struct {
	Slaves       *InQueryAllSlaves    `form:"slaves,omitempty" json:"slaves,omitempty"`
	Force        *InQueryForce        `form:"force,omitempty" json:"force,omitempty"`
	Master       *InQueryMaster       `form:"master,omitempty" json:"master,omitempty"`
	RequesterSid *InQueryRequesterSid `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
	Rid          *InQueryRid          `form:"rid,omitempty" json:"rid,omitempty"`
	Slave        *InQuerySlaves       `form:"slave,omitempty" json:"slave,omitempty"`
	Subset       *InQuerySubset       `form:"subset,omitempty" json:"subset,omitempty"`
	Tag          *InQueryTag          `form:"tag,omitempty" json:"tag,omitempty"`
	To           *InQueryTo           `form:"to,omitempty" json:"to,omitempty"`
}

// PostInstanceActionStartParams defines parameters for PostInstanceActionStart.
type PostInstanceActionStartParams struct {
	Slaves          *InQueryAllSlaves       `form:"slaves,omitempty" json:"slaves,omitempty"`
	DisableRollback *InQueryDisableRollback `form:"disable_rollback,omitempty" json:"disable_rollback,omitempty"`
	Force           *InQueryForce           `form:"force,omitempty" json:"force,omitempty"`
	Master          *InQueryMaster          `form:"master,omitempty" json:"master,omitempty"`
	RequesterSid    *InQueryRequesterSid    `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
	Rid             *InQueryRid             `form:"rid,omitempty" json:"rid,omitempty"`
	Slave           *InQuerySlaves          `form:"slave,omitempty" json:"slave,omitempty"`
	Subset          *InQuerySubset          `form:"subset,omitempty" json:"subset,omitempty"`
	Tag             *InQueryTag             `form:"tag,omitempty" json:"tag,omitempty"`
	To              *InQueryTo              `form:"to,omitempty" json:"to,omitempty"`
}

// PostInstanceActionStartStandbyParams defines parameters for PostInstanceActionStartStandby.
type PostInstanceActionStartStandbyParams struct {
	Slaves          *InQueryAllSlaves       `form:"slaves,omitempty" json:"slaves,omitempty"`
	DisableRollback *InQueryDisableRollback `form:"disable_rollback,omitempty" json:"disable_rollback,omitempty"`
	Force           *InQueryForce           `form:"force,omitempty" json:"force,omitempty"`
	Master          *InQueryMaster          `form:"master,omitempty" json:"master,omitempty"`
	RequesterSid    *InQueryRequesterSid    `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
	Rid             *InQueryRid             `form:"rid,omitempty" json:"rid,omitempty"`
	Slave           *InQuerySlaves          `form:"slave,omitempty" json:"slave,omitempty"`
	Subset          *InQuerySubset          `form:"subset,omitempty" json:"subset,omitempty"`
	Tag             *InQueryTag             `form:"tag,omitempty" json:"tag,omitempty"`
	To              *InQueryTo              `form:"to,omitempty" json:"to,omitempty"`
}

// PostInstanceActionStatusParams defines parameters for PostInstanceActionStatus.
type PostInstanceActionStatusParams struct {
	RequesterSid *InQueryRequesterSid `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
}

// PostInstanceActionStopParams defines parameters for PostInstanceActionStop.
type PostInstanceActionStopParams struct {
	Slaves       *InQueryAllSlaves    `form:"slaves,omitempty" json:"slaves,omitempty"`
	Force        *InQueryForce        `form:"force,omitempty" json:"force,omitempty"`
	Master       *InQueryMaster       `form:"master,omitempty" json:"master,omitempty"`
	MoveTo       *InQueryMoveTo       `form:"move-to,omitempty" json:"move-to,omitempty"`
	RequesterSid *InQueryRequesterSid `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
	Rid          *InQueryRid          `form:"rid,omitempty" json:"rid,omitempty"`
	Slave        *InQuerySlaves       `form:"slave,omitempty" json:"slave,omitempty"`
	Subset       *InQuerySubset       `form:"subset,omitempty" json:"subset,omitempty"`
	Tag          *InQueryTag          `form:"tag,omitempty" json:"tag,omitempty"`
	To           *InQueryTo           `form:"to,omitempty" json:"to,omitempty"`
}

// PostInstanceActionSyncIngestParams defines parameters for PostInstanceActionSyncIngest.
type PostInstanceActionSyncIngestParams struct {
	RequesterSid *InQueryRequesterSid `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
	Rid          *InQueryRid          `form:"rid,omitempty" json:"rid,omitempty"`
	Subset       *InQuerySubset       `form:"subset,omitempty" json:"subset,omitempty"`
	Tag          *InQueryTag          `form:"tag,omitempty" json:"tag,omitempty"`
}

// PostInstanceActionUnfreezeParams defines parameters for PostInstanceActionUnfreeze.
type PostInstanceActionUnfreezeParams struct {
	Slaves       *InQueryAllSlaves    `form:"slaves,omitempty" json:"slaves,omitempty"`
	Master       *InQueryMaster       `form:"master,omitempty" json:"master,omitempty"`
	Slave        *InQuerySlaves       `form:"slave,omitempty" json:"slave,omitempty"`
	RequesterSid *InQueryRequesterSid `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
}

// PostInstanceActionUnprovisionParams defines parameters for PostInstanceActionUnprovision.
type PostInstanceActionUnprovisionParams struct {
	Slaves       *InQueryAllSlaves    `form:"slaves,omitempty" json:"slaves,omitempty"`
	Force        *InQueryForce        `form:"force,omitempty" json:"force,omitempty"`
	Leader       *InQueryLeader       `form:"leader,omitempty" json:"leader,omitempty"`
	Master       *InQueryMaster       `form:"master,omitempty" json:"master,omitempty"`
	RequesterSid *InQueryRequesterSid `form:"requester_sid,omitempty" json:"requester_sid,omitempty"`
	Rid          *InQueryRid          `form:"rid,omitempty" json:"rid,omitempty"`
	StateOnly    *InQueryStateOnly    `form:"state_only,omitempty" json:"state_only,omitempty"`
	Slave        *InQuerySlaves       `form:"slave,omitempty" json:"slave,omitempty"`
	Subset       *InQuerySubset       `form:"subset,omitempty" json:"subset,omitempty"`
	Tag          *InQueryTag          `form:"tag,omitempty" json:"tag,omitempty"`
	To           *InQueryTo           `form:"to,omitempty" json:"to,omitempty"`
}

// PostInstanceResourceConsoleParams defines parameters for PostInstanceResourceConsole.
type PostInstanceResourceConsoleParams struct {
	Rid          *InQueryRid          `form:"rid,omitempty" json:"rid,omitempty"`
	GreetTimeout *InQueryGreetTimeout `form:"greet_timeout,omitempty" json:"greet_timeout,omitempty"`
	Seats        *InQuerySeats        `form:"seats,omitempty" json:"seats,omitempty"`
}

// GetInstanceLogsParams defines parameters for GetInstanceLogs.
type GetInstanceLogsParams struct {
	// Filter list of log filter
	Filter *LogFilter `form:"filter,omitempty" json:"filter,omitempty"`

	// Follow follow the logs
	Follow *LogFollow `form:"follow,omitempty" json:"follow,omitempty"`

	// Lines report this number of past last log entries
	Lines *LogLines `form:"lines,omitempty" json:"lines,omitempty"`
}

// GetInstanceResourceFileParams defines parameters for GetInstanceResourceFile.
type GetInstanceResourceFileParams struct {
	// Name The path of a file explicitely shared by a resource driver that the requester wants to receive the data of.
	Name InQueryResourceFileName `form:"name" json:"name"`

	// Rid The rid that is expected to expose the requested file path.
	Rid InQueryResourceFileRid `form:"rid" json:"rid"`
}

// GetNodeLogsParams defines parameters for GetNodeLogs.
type GetNodeLogsParams struct {
	// Filter list of log filter
	Filter *LogFilter `form:"filter,omitempty" json:"filter,omitempty"`

	// Follow follow the logs
	Follow *LogFollow `form:"follow,omitempty" json:"follow,omitempty"`

	// Lines report this number of past last log entries
	Lines *LogLines `form:"lines,omitempty" json:"lines,omitempty"`

	// Paths list of object paths to send logs for
	Paths *Paths `form:"paths,omitempty" json:"paths,omitempty"`
}

// GetObjectsParams defines parameters for GetObjects.
type GetObjectsParams struct {
	// Path object selector expression.
	Path *PathOptional `form:"path,omitempty" json:"path,omitempty"`
}

// GetObjectPathsParams defines parameters for GetObjectPaths.
type GetObjectPathsParams struct {
	// Path object selector expression.
	Path Path `form:"path" json:"path"`
}

// PostSvcDisableParams defines parameters for PostSvcDisable.
type PostSvcDisableParams struct {
	Rid    *InQueryRid    `form:"rid,omitempty" json:"rid,omitempty"`
	Subset *InQuerySubset `form:"subset,omitempty" json:"subset,omitempty"`
	Tag    *InQueryTag    `form:"tag,omitempty" json:"tag,omitempty"`
}

// PostSvcEnableParams defines parameters for PostSvcEnable.
type PostSvcEnableParams struct {
	Rid    *InQueryRid    `form:"rid,omitempty" json:"rid,omitempty"`
	Subset *InQuerySubset `form:"subset,omitempty" json:"subset,omitempty"`
	Tag    *InQueryTag    `form:"tag,omitempty" json:"tag,omitempty"`
}

// GetObjectConfigParams defines parameters for GetObjectConfig.
type GetObjectConfigParams struct {
	Evaluate    *InQueryEvaluate    `form:"evaluate,omitempty" json:"evaluate,omitempty"`
	Impersonate *InQueryImpersonate `form:"impersonate,omitempty" json:"impersonate,omitempty"`
	Kw          *InQueryKeywords    `form:"kw,omitempty" json:"kw,omitempty"`
}

// PatchObjectConfigParams defines parameters for PatchObjectConfig.
type PatchObjectConfigParams struct {
	Delete *InQueryDeletes `form:"delete,omitempty" json:"delete,omitempty"`
	Unset  *InQueryUnsets  `form:"unset,omitempty" json:"unset,omitempty"`
	Set    *InQuerySets    `form:"set,omitempty" json:"set,omitempty"`
}

// GetObjectConfigKeywordsParams defines parameters for GetObjectConfigKeywords.
type GetObjectConfigKeywordsParams struct {
	// Driver show only keywords of this driver
	Driver *InQueryDriver `form:"driver,omitempty" json:"driver,omitempty"`

	// Section show supported keywords of this configuration section
	Section *InQuerySection `form:"section,omitempty" json:"section,omitempty"`

	// Option show the keyword referenced by section and option
	Option *InQueryOption `form:"option,omitempty" json:"option,omitempty"`
}

// GetObjectDataParams defines parameters for GetObjectData.
type GetObjectDataParams struct {
	Names *Names `form:"name,omitempty" json:"name,omitempty"`
}

// DeleteObjectDataKeyParams defines parameters for DeleteObjectDataKey.
type DeleteObjectDataKeyParams struct {
	Name InQueryKeyName `form:"name" json:"name"`
}

// GetObjectDataKeyParams defines parameters for GetObjectDataKey.
type GetObjectDataKeyParams struct {
	Name InQueryKeyName `form:"name" json:"name"`
}

// PostObjectDataKeyParams defines parameters for PostObjectDataKey.
type PostObjectDataKeyParams struct {
	Name InQueryKeyName `form:"name" json:"name"`
}

// PutObjectDataKeyParams defines parameters for PutObjectDataKey.
type PutObjectDataKeyParams struct {
	Name InQueryKeyName `form:"name" json:"name"`
}

// GetPoolsParams defines parameters for GetPools.
type GetPoolsParams struct {
	// Name the name of a backend storage pool
	Name *InQueryPoolName `form:"name,omitempty" json:"name,omitempty"`

	// Node a node selector expression like `n[123]`, `n*`, `mylabel=myvalue`
	Node *InQueryNodeSelector `form:"node,omitempty" json:"node,omitempty"`
}

// GetPoolVolumesParams defines parameters for GetPoolVolumes.
type GetPoolVolumesParams struct {
	// Name the name of a backend storage pool
	Name *InQueryPoolName `form:"name,omitempty" json:"name,omitempty"`
}

// GetRelayMessageParams defines parameters for GetRelayMessage.
type GetRelayMessageParams struct {
	// Nodename the nodename component of the slot id on the relay
	Nodename RelayNodename `form:"nodename" json:"nodename"`

	// ClusterID the cluster id component of the slot id on the relay
	ClusterID ClusterID `form:"cluster_id" json:"cluster_id"`

	// Username If true and the requester has the root grant, read the message from the specified user relay partition instead of the requester's partition.
	Username *RelayUsername `form:"username,omitempty" json:"username,omitempty"`
}

// GetRelayStatusParams defines parameters for GetRelayStatus.
type GetRelayStatusParams struct {
	// Relays list of relays to include in the response dataset
	Relays *Relays `form:"relay,omitempty" json:"relay,omitempty"`

	// Remote If true, report the status of relays the server is client of. If false or not set, report the status of the server embedded relay.
	Remote *RelayRemote `form:"remote,omitempty" json:"remote,omitempty"`
}

// GetResourcesParams defines parameters for GetResources.
type GetResourcesParams struct {
	// Path object selector expression.
	Path *PathOptional `form:"path,omitempty" json:"path,omitempty"`

	// Node node selector expression.
	Node *NodeOptional `form:"node,omitempty" json:"node,omitempty"`

	// Resource resource selector expression.
	Resource *RidOptional `form:"resource,omitempty" json:"resource,omitempty"`
}

// PostInstanceProgressJSONRequestBody defines body for PostInstanceProgress for application/json ContentType.
type PostInstanceProgressJSONRequestBody = PostInstanceProgress

// PostInstanceStatusJSONRequestBody defines body for PostInstanceStatus for application/json ContentType.
type PostInstanceStatusJSONRequestBody = InstanceStatus

// PostDaemonListenerLogControlJSONRequestBody defines body for PostDaemonListenerLogControl for application/json ContentType.
type PostDaemonListenerLogControlJSONRequestBody = LogControlBody

// PostDaemonLogControlJSONRequestBody defines body for PostDaemonLogControl for application/json ContentType.
type PostDaemonLogControlJSONRequestBody = LogControlBody

// PostNodeDRBDConfigJSONRequestBody defines body for PostNodeDRBDConfig for application/json ContentType.
type PostNodeDRBDConfigJSONRequestBody = PostNodeDRBDConfigRequest

// PostObjectActionRestartJSONRequestBody defines body for PostObjectActionRestart for application/json ContentType.
type PostObjectActionRestartJSONRequestBody = PostObjectActionRestart

// PostObjectActionSwitchJSONRequestBody defines body for PostObjectActionSwitch for application/json ContentType.
type PostObjectActionSwitchJSONRequestBody = PostObjectActionSwitch

// PatchObjectDataJSONRequestBody defines body for PatchObjectData for application/json ContentType.
type PatchObjectDataJSONRequestBody = PatchDataKeys

// PostRelayMessageJSONRequestBody defines body for PostRelayMessage for application/json ContentType.
type PostRelayMessageJSONRequestBody = PostRelayMessage

// AsObjectActor returns the union data inside the ObjectData as a ObjectActor
func (t ObjectData) AsObjectActor() (ObjectActor, error) {
	var body ObjectActor
	err := json.Unmarshal(t.union, &body)
	return body, err
}

// FromObjectActor overwrites any union data inside the ObjectData as the provided ObjectActor
func (t *ObjectData) FromObjectActor(v ObjectActor) error {
	b, err := json.Marshal(v)
	t.union = b
	return err
}

// MergeObjectActor performs a merge with any union data inside the ObjectData, using the provided ObjectActor
func (t *ObjectData) MergeObjectActor(v ObjectActor) error {
	b, err := json.Marshal(v)
	if err != nil {
		return err
	}

	merged, err := runtime.JSONMerge(t.union, b)
	t.union = merged
	return err
}

// AsObjectCore returns the union data inside the ObjectData as a ObjectCore
func (t ObjectData) AsObjectCore() (ObjectCore, error) {
	var body ObjectCore
	err := json.Unmarshal(t.union, &body)
	return body, err
}

// FromObjectCore overwrites any union data inside the ObjectData as the provided ObjectCore
func (t *ObjectData) FromObjectCore(v ObjectCore) error {
	b, err := json.Marshal(v)
	t.union = b
	return err
}

// MergeObjectCore performs a merge with any union data inside the ObjectData, using the provided ObjectCore
func (t *ObjectData) MergeObjectCore(v ObjectCore) error {
	b, err := json.Marshal(v)
	if err != nil {
		return err
	}

	merged, err := runtime.JSONMerge(t.union, b)
	t.union = merged
	return err
}

// AsObjectCcfg returns the union data inside the ObjectData as a ObjectCcfg
func (t ObjectData) AsObjectCcfg() (ObjectCcfg, error) {
	var body ObjectCcfg
	err := json.Unmarshal(t.union, &body)
	return body, err
}

// FromObjectCcfg overwrites any union data inside the ObjectData as the provided ObjectCcfg
func (t *ObjectData) FromObjectCcfg(v ObjectCcfg) error {
	b, err := json.Marshal(v)
	t.union = b
	return err
}

// MergeObjectCcfg performs a merge with any union data inside the ObjectData, using the provided ObjectCcfg
func (t *ObjectData) MergeObjectCcfg(v ObjectCcfg) error {
	b, err := json.Marshal(v)
	if err != nil {
		return err
	}

	merged, err := runtime.JSONMerge(t.union, b)
	t.union = merged
	return err
}

// AsObjectCfg returns the union data inside the ObjectData as a ObjectCfg
func (t ObjectData) AsObjectCfg() (ObjectCfg, error) {
	var body ObjectCfg
	err := json.Unmarshal(t.union, &body)
	return body, err
}

// FromObjectCfg overwrites any union data inside the ObjectData as the provided ObjectCfg
func (t *ObjectData) FromObjectCfg(v ObjectCfg) error {
	b, err := json.Marshal(v)
	t.union = b
	return err
}

// MergeObjectCfg performs a merge with any union data inside the ObjectData, using the provided ObjectCfg
func (t *ObjectData) MergeObjectCfg(v ObjectCfg) error {
	b, err := json.Marshal(v)
	if err != nil {
		return err
	}

	merged, err := runtime.JSONMerge(t.union, b)
	t.union = merged
	return err
}

// AsObjectSec returns the union data inside the ObjectData as a ObjectSec
func (t ObjectData) AsObjectSec() (ObjectSec, error) {
	var body ObjectSec
	err := json.Unmarshal(t.union, &body)
	return body, err
}

// FromObjectSec overwrites any union data inside the ObjectData as the provided ObjectSec
func (t *ObjectData) FromObjectSec(v ObjectSec) error {
	b, err := json.Marshal(v)
	t.union = b
	return err
}

// MergeObjectSec performs a merge with any union data inside the ObjectData, using the provided ObjectSec
func (t *ObjectData) MergeObjectSec(v ObjectSec) error {
	b, err := json.Marshal(v)
	if err != nil {
		return err
	}

	merged, err := runtime.JSONMerge(t.union, b)
	t.union = merged
	return err
}

// AsObjectSvc returns the union data inside the ObjectData as a ObjectSvc
func (t ObjectData) AsObjectSvc() (ObjectSvc, error) {
	var body ObjectSvc
	err := json.Unmarshal(t.union, &body)
	return body, err
}

// FromObjectSvc overwrites any union data inside the ObjectData as the provided ObjectSvc
func (t *ObjectData) FromObjectSvc(v ObjectSvc) error {
	b, err := json.Marshal(v)
	t.union = b
	return err
}

// MergeObjectSvc performs a merge with any union data inside the ObjectData, using the provided ObjectSvc
func (t *ObjectData) MergeObjectSvc(v ObjectSvc) error {
	b, err := json.Marshal(v)
	if err != nil {
		return err
	}

	merged, err := runtime.JSONMerge(t.union, b)
	t.union = merged
	return err
}

// AsObjectUsr returns the union data inside the ObjectData as a ObjectUsr
func (t ObjectData) AsObjectUsr() (ObjectUsr, error) {
	var body ObjectUsr
	err := json.Unmarshal(t.union, &body)
	return body, err
}

// FromObjectUsr overwrites any union data inside the ObjectData as the provided ObjectUsr
func (t *ObjectData) FromObjectUsr(v ObjectUsr) error {
	b, err := json.Marshal(v)
	t.union = b
	return err
}

// MergeObjectUsr performs a merge with any union data inside the ObjectData, using the provided ObjectUsr
func (t *ObjectData) MergeObjectUsr(v ObjectUsr) error {
	b, err := json.Marshal(v)
	if err != nil {
		return err
	}

	merged, err := runtime.JSONMerge(t.union, b)
	t.union = merged
	return err
}

// AsObjectVol returns the union data inside the ObjectData as a ObjectVol
func (t ObjectData) AsObjectVol() (ObjectVol, error) {
	var body ObjectVol
	err := json.Unmarshal(t.union, &body)
	return body, err
}

// FromObjectVol overwrites any union data inside the ObjectData as the provided ObjectVol
func (t *ObjectData) FromObjectVol(v ObjectVol) error {
	b, err := json.Marshal(v)
	t.union = b
	return err
}

// MergeObjectVol performs a merge with any union data inside the ObjectData, using the provided ObjectVol
func (t *ObjectData) MergeObjectVol(v ObjectVol) error {
	b, err := json.Marshal(v)
	if err != nil {
		return err
	}

	merged, err := runtime.JSONMerge(t.union, b)
	t.union = merged
	return err
}

// AsObjectVolConfig returns the union data inside the ObjectData as a ObjectVolConfig
func (t ObjectData) AsObjectVolConfig() (ObjectVolConfig, error) {
	var body ObjectVolConfig
	err := json.Unmarshal(t.union, &body)
	return body, err
}

// FromObjectVolConfig overwrites any union data inside the ObjectData as the provided ObjectVolConfig
func (t *ObjectData) FromObjectVolConfig(v ObjectVolConfig) error {
	b, err := json.Marshal(v)
	t.union = b
	return err
}

// MergeObjectVolConfig performs a merge with any union data inside the ObjectData, using the provided ObjectVolConfig
func (t *ObjectData) MergeObjectVolConfig(v ObjectVolConfig) error {
	b, err := json.Marshal(v)
	if err != nil {
		return err
	}

	merged, err := runtime.JSONMerge(t.union, b)
	t.union = merged
	return err
}

func (t ObjectData) MarshalJSON() ([]byte, error) {
	b, err := t.union.MarshalJSON()
	return b, err
}

func (t *ObjectData) UnmarshalJSON(b []byte) error {
	err := t.union.UnmarshalJSON(b)
	return err
}
