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

import (
	"time"

	openapi_types "github.com/oapi-codegen/runtime/types"
)

const (
	BearerAuthScopes = "bearerAuth.Scopes"
)

// Defines values for AddTeamMemberRequestRole.
const (
	AddTeamMemberRequestRoleAdmin     AddTeamMemberRequestRole = "admin"
	AddTeamMemberRequestRoleBuilder   AddTeamMemberRequestRole = "builder"
	AddTeamMemberRequestRoleDeveloper AddTeamMemberRequestRole = "developer"
	AddTeamMemberRequestRoleViewer    AddTeamMemberRequestRole = "viewer"
)

// Defines values for CredentialProjectionType.
const (
	HttpHeaders          CredentialProjectionType = "http_headers"
	SshProxy             CredentialProjectionType = "ssh_proxy"
	TlsClientCertificate CredentialProjectionType = "tls_client_certificate"
	UsernamePassword     CredentialProjectionType = "username_password"
)

// Defines values for CredentialSourceResolverKind.
const (
	StaticHeaders              CredentialSourceResolverKind = "static_headers"
	StaticSshPrivateKey        CredentialSourceResolverKind = "static_ssh_private_key"
	StaticTlsClientCertificate CredentialSourceResolverKind = "static_tls_client_certificate"
	StaticUsernamePassword     CredentialSourceResolverKind = "static_username_password"
)

// Defines values for DeviceLoginPollResponseStatus.
const (
	DeviceLoginPollResponseStatusCompleted DeviceLoginPollResponseStatus = "completed"
	DeviceLoginPollResponseStatusPending   DeviceLoginPollResponseStatus = "pending"
	DeviceLoginPollResponseStatusSlowDown  DeviceLoginPollResponseStatus = "slow_down"
)

// Defines values for EgressAuthFailurePolicy.
const (
	FailClosed EgressAuthFailurePolicy = "fail-closed"
	FailOpen   EgressAuthFailurePolicy = "fail-open"
)

// Defines values for EgressAuthProtocol.
const (
	EgressAuthProtocolGrpc   EgressAuthProtocol = "grpc"
	EgressAuthProtocolHttp   EgressAuthProtocol = "http"
	EgressAuthProtocolHttps  EgressAuthProtocol = "https"
	EgressAuthProtocolMqtt   EgressAuthProtocol = "mqtt"
	EgressAuthProtocolRedis  EgressAuthProtocol = "redis"
	EgressAuthProtocolSocks5 EgressAuthProtocol = "socks5"
	EgressAuthProtocolSsh    EgressAuthProtocol = "ssh"
	EgressAuthProtocolTls    EgressAuthProtocol = "tls"
)

// Defines values for EgressAuthRolloutMode.
const (
	EgressAuthRolloutModeDisabled EgressAuthRolloutMode = "disabled"
	EgressAuthRolloutModeEnabled  EgressAuthRolloutMode = "enabled"
)

// Defines values for EgressProxyType.
const (
	EgressProxyTypeSocks5 EgressProxyType = "socks5"
)

// Defines values for EgressTLSMode.
const (
	Passthrough          EgressTLSMode = "passthrough"
	TerminateReoriginate EgressTLSMode = "terminate-reoriginate"
)

// Defines values for ErrorEnvelopeSuccess.
const (
	False ErrorEnvelopeSuccess = false
)

// Defines values for FileContentResponseEncoding.
const (
	Base64 FileContentResponseEncoding = "base64"
)

// Defines values for FileInfoType.
const (
	Dir     FileInfoType = "dir"
	File    FileInfoType = "file"
	Symlink FileInfoType = "symlink"
)

// Defines values for GatewayMetadataGatewayMode.
const (
	Direct GatewayMetadataGatewayMode = "direct"
	Global GatewayMetadataGatewayMode = "global"
)

// Defines values for MountStatusState.
const (
	MountStatusStateFailed   MountStatusState = "failed"
	MountStatusStateMounted  MountStatusState = "mounted"
	MountStatusStateMounting MountStatusState = "mounting"
	MountStatusStatePending  MountStatusState = "pending"
)

// Defines values for ProcessType.
const (
	ProcessTypeCmd  ProcessType = "cmd"
	ProcessTypeRepl ProcessType = "repl"
)

// Defines values for ProtocolRuleProtocol.
const (
	ProtocolRuleProtocolMcp ProtocolRuleProtocol = "mcp"
)

// Defines values for QuotaDimension.
const (
	ActiveSandboxes   QuotaDimension = "active_sandboxes"
	CpuMillicpu       QuotaDimension = "cpu_millicpu"
	Egress            QuotaDimension = "egress"
	Ingress           QuotaDimension = "ingress"
	MemoryMib         QuotaDimension = "memory_mib"
	SnapshotStorageGb QuotaDimension = "snapshot_storage_gb"
	VolumeStorageGb   QuotaDimension = "volume_storage_gb"
)

// Defines values for REPLReadyMode.
const (
	PromptToken  REPLReadyMode = "prompt_token"
	StartupDelay REPLReadyMode = "startup_delay"
)

// Defines values for SandboxAppServiceRouteAuthMode.
const (
	Bearer SandboxAppServiceRouteAuthMode = "bearer"
	Header SandboxAppServiceRouteAuthMode = "header"
	None   SandboxAppServiceRouteAuthMode = "none"
)

// Defines values for SandboxAppServiceRuntimeType.
const (
	SandboxAppServiceRuntimeTypeCmd         SandboxAppServiceRuntimeType = "cmd"
	SandboxAppServiceRuntimeTypeManual      SandboxAppServiceRuntimeType = "manual"
	SandboxAppServiceRuntimeTypeWarmProcess SandboxAppServiceRuntimeType = "warm_process"
)

// Defines values for SandboxLifecycleStatus.
const (
	SandboxLifecycleStatusCleaned     SandboxLifecycleStatus = "cleaned"
	SandboxLifecycleStatusCompleted   SandboxLifecycleStatus = "completed"
	SandboxLifecycleStatusFailed      SandboxLifecycleStatus = "failed"
	SandboxLifecycleStatusRunning     SandboxLifecycleStatus = "running"
	SandboxLifecycleStatusStarting    SandboxLifecycleStatus = "starting"
	SandboxLifecycleStatusTerminating SandboxLifecycleStatus = "terminating"
)

// Defines values for SandboxNetworkPolicyMode.
const (
	AllowAll SandboxNetworkPolicyMode = "allow-all"
	BlockAll SandboxNetworkPolicyMode = "block-all"
)

// Defines values for SandboxPowerStateDesired.
const (
	Active SandboxPowerStateDesired = "active"
	Paused SandboxPowerStateDesired = "paused"
)

// Defines values for SandboxPowerStateObserved.
const (
	SandboxPowerStateObservedActive SandboxPowerStateObserved = "active"
	SandboxPowerStateObservedPaused SandboxPowerStateObserved = "paused"
)

// Defines values for SandboxPowerStatePhase.
const (
	Pausing  SandboxPowerStatePhase = "pausing"
	Resuming SandboxPowerStatePhase = "resuming"
	Stable   SandboxPowerStatePhase = "stable"
)

// Defines values for SuccessAPIKeyListResponseSuccess.
const (
	SuccessAPIKeyListResponseSuccessTrue SuccessAPIKeyListResponseSuccess = true
)

// Defines values for SuccessAuthProvidersResponseSuccess.
const (
	SuccessAuthProvidersResponseSuccessTrue SuccessAuthProvidersResponseSuccess = true
)

// Defines values for SuccessClaimResponseSuccess.
const (
	SuccessClaimResponseSuccessTrue SuccessClaimResponseSuccess = true
)

// Defines values for SuccessContextExecResponseSuccess.
const (
	SuccessContextExecResponseSuccessTrue SuccessContextExecResponseSuccess = true
)

// Defines values for SuccessContextListResponseSuccess.
const (
	SuccessContextListResponseSuccessTrue SuccessContextListResponseSuccess = true
)

// Defines values for SuccessContextResponseSuccess.
const (
	SuccessContextResponseSuccessTrue SuccessContextResponseSuccess = true
)

// Defines values for SuccessContextStatsResponseSuccess.
const (
	SuccessContextStatsResponseSuccessTrue SuccessContextStatsResponseSuccess = true
)

// Defines values for SuccessCreateAPIKeyResponseSuccess.
const (
	SuccessCreateAPIKeyResponseSuccessTrue SuccessCreateAPIKeyResponseSuccess = true
)

// Defines values for SuccessCreatedResponseSuccess.
const (
	SuccessCreatedResponseSuccessTrue SuccessCreatedResponseSuccess = true
)

// Defines values for SuccessCredentialSourceListResponseSuccess.
const (
	SuccessCredentialSourceListResponseSuccessTrue SuccessCredentialSourceListResponseSuccess = true
)

// Defines values for SuccessCredentialSourceResponseSuccess.
const (
	SuccessCredentialSourceResponseSuccessTrue SuccessCredentialSourceResponseSuccess = true
)

// Defines values for SuccessCurrentAPIKeyResponseSuccess.
const (
	SuccessCurrentAPIKeyResponseSuccessTrue SuccessCurrentAPIKeyResponseSuccess = true
)

// Defines values for SuccessDeletedResponseSuccess.
const (
	SuccessDeletedResponseSuccessTrue SuccessDeletedResponseSuccess = true
)

// Defines values for SuccessDeviceLoginPollResponseSuccess.
const (
	SuccessDeviceLoginPollResponseSuccessTrue SuccessDeviceLoginPollResponseSuccess = true
)

// Defines values for SuccessDeviceLoginStartResponseSuccess.
const (
	SuccessDeviceLoginStartResponseSuccessTrue SuccessDeviceLoginStartResponseSuccess = true
)

// Defines values for SuccessEnvelopeSuccess.
const (
	SuccessEnvelopeSuccessTrue SuccessEnvelopeSuccess = true
)

// Defines values for SuccessFileListResponseSuccess.
const (
	SuccessFileListResponseSuccessTrue SuccessFileListResponseSuccess = true
)

// Defines values for SuccessFileStatResponseSuccess.
const (
	SuccessFileStatResponseSuccessTrue SuccessFileStatResponseSuccess = true
)

// Defines values for SuccessGatewayMetadataResponseSuccess.
const (
	SuccessGatewayMetadataResponseSuccessTrue SuccessGatewayMetadataResponseSuccess = true
)

// Defines values for SuccessHealthResponseSuccess.
const (
	SuccessHealthResponseSuccessTrue SuccessHealthResponseSuccess = true
)

// Defines values for SuccessIdentityListResponseSuccess.
const (
	SuccessIdentityListResponseSuccessTrue SuccessIdentityListResponseSuccess = true
)

// Defines values for SuccessLoginResponseSuccess.
const (
	SuccessLoginResponseSuccessTrue SuccessLoginResponseSuccess = true
)

// Defines values for SuccessMessageResponseSuccess.
const (
	SuccessMessageResponseSuccessTrue SuccessMessageResponseSuccess = true
)

// Defines values for SuccessMovedResponseSuccess.
const (
	SuccessMovedResponseSuccessTrue SuccessMovedResponseSuccess = true
)

// Defines values for SuccessPauseSandboxResponseSuccess.
const (
	SuccessPauseSandboxResponseSuccessTrue SuccessPauseSandboxResponseSuccess = true
)

// Defines values for SuccessRefreshResponseSuccess.
const (
	SuccessRefreshResponseSuccessTrue SuccessRefreshResponseSuccess = true
)

// Defines values for SuccessRegionListResponseSuccess.
const (
	SuccessRegionListResponseSuccessTrue SuccessRegionListResponseSuccess = true
)

// Defines values for SuccessRegionResponseSuccess.
const (
	SuccessRegionResponseSuccessTrue SuccessRegionResponseSuccess = true
)

// Defines values for SuccessRegistryCredentialsResponseSuccess.
const (
	SuccessRegistryCredentialsResponseSuccessTrue SuccessRegistryCredentialsResponseSuccess = true
)

// Defines values for SuccessResizedResponseSuccess.
const (
	SuccessResizedResponseSuccessTrue SuccessResizedResponseSuccess = true
)

// Defines values for SuccessRestoreResponseSuccess.
const (
	SuccessRestoreResponseSuccessTrue SuccessRestoreResponseSuccess = true
)

// Defines values for SuccessResumeSandboxResponseSuccess.
const (
	SuccessResumeSandboxResponseSuccessTrue SuccessResumeSandboxResponseSuccess = true
)

// Defines values for SuccessSSHPublicKeyListResponseSuccess.
const (
	SuccessSSHPublicKeyListResponseSuccessTrue SuccessSSHPublicKeyListResponseSuccess = true
)

// Defines values for SuccessSSHPublicKeyResponseSuccess.
const (
	SuccessSSHPublicKeyResponseSuccessTrue SuccessSSHPublicKeyResponseSuccess = true
)

// Defines values for SuccessSandboxListResponseSuccess.
const (
	SuccessSandboxListResponseSuccessTrue SuccessSandboxListResponseSuccess = true
)

// Defines values for SuccessSandboxNetworkPolicyResponseSuccess.
const (
	SuccessSandboxNetworkPolicyResponseSuccessTrue SuccessSandboxNetworkPolicyResponseSuccess = true
)

// Defines values for SuccessSandboxResponseSuccess.
const (
	SuccessSandboxResponseSuccessTrue SuccessSandboxResponseSuccess = true
)

// Defines values for SuccessSandboxServicesResponseSuccess.
const (
	SuccessSandboxServicesResponseSuccessTrue SuccessSandboxServicesResponseSuccess = true
)

// Defines values for SuccessSandboxStatusResponseSuccess.
const (
	SuccessSandboxStatusResponseSuccessTrue SuccessSandboxStatusResponseSuccess = true
)

// Defines values for SuccessSandboxVolumeListResponseSuccess.
const (
	SuccessSandboxVolumeListResponseSuccessTrue SuccessSandboxVolumeListResponseSuccess = true
)

// Defines values for SuccessSandboxVolumeResponseSuccess.
const (
	SuccessSandboxVolumeResponseSuccessTrue SuccessSandboxVolumeResponseSuccess = true
)

// Defines values for SuccessSignaledResponseSuccess.
const (
	SuccessSignaledResponseSuccessTrue SuccessSignaledResponseSuccess = true
)

// Defines values for SuccessSnapshotListResponseSuccess.
const (
	SuccessSnapshotListResponseSuccessTrue SuccessSnapshotListResponseSuccess = true
)

// Defines values for SuccessSnapshotResponseSuccess.
const (
	SuccessSnapshotResponseSuccessTrue SuccessSnapshotResponseSuccess = true
)

// Defines values for SuccessTeamListResponseSuccess.
const (
	SuccessTeamListResponseSuccessTrue SuccessTeamListResponseSuccess = true
)

// Defines values for SuccessTeamMemberListResponseSuccess.
const (
	SuccessTeamMemberListResponseSuccessTrue SuccessTeamMemberListResponseSuccess = true
)

// Defines values for SuccessTeamMemberResponseSuccess.
const (
	SuccessTeamMemberResponseSuccessTrue SuccessTeamMemberResponseSuccess = true
)

// Defines values for SuccessTeamQuotaResponseSuccess.
const (
	SuccessTeamQuotaResponseSuccessTrue SuccessTeamQuotaResponseSuccess = true
)

// Defines values for SuccessTeamResponseSuccess.
const (
	SuccessTeamResponseSuccessTrue SuccessTeamResponseSuccess = true
)

// Defines values for SuccessTemplateListResponseSuccess.
const (
	SuccessTemplateListResponseSuccessTrue SuccessTemplateListResponseSuccess = true
)

// Defines values for SuccessTemplateResponseSuccess.
const (
	SuccessTemplateResponseSuccessTrue SuccessTemplateResponseSuccess = true
)

// Defines values for SuccessUserResponseSuccess.
const (
	SuccessUserResponseSuccessTrue SuccessUserResponseSuccess = true
)

// Defines values for SuccessVolumeFileArchiveImportResponseSuccess.
const (
	SuccessVolumeFileArchiveImportResponseSuccessTrue SuccessVolumeFileArchiveImportResponseSuccess = true
)

// Defines values for SuccessWrittenResponseSuccess.
const (
	SuccessWrittenResponseSuccessTrue SuccessWrittenResponseSuccess = true
)

// Defines values for TrafficRuleAction.
const (
	Allow TrafficRuleAction = "allow"
	Deny  TrafficRuleAction = "deny"
)

// Defines values for TrafficRuleAppProtocol.
const (
	TrafficRuleAppProtocolAmqp    TrafficRuleAppProtocol = "amqp"
	TrafficRuleAppProtocolDns     TrafficRuleAppProtocol = "dns"
	TrafficRuleAppProtocolHttp    TrafficRuleAppProtocol = "http"
	TrafficRuleAppProtocolMongodb TrafficRuleAppProtocol = "mongodb"
	TrafficRuleAppProtocolMqtt    TrafficRuleAppProtocol = "mqtt"
	TrafficRuleAppProtocolRedis   TrafficRuleAppProtocol = "redis"
	TrafficRuleAppProtocolSocks5  TrafficRuleAppProtocol = "socks5"
	TrafficRuleAppProtocolSsh     TrafficRuleAppProtocol = "ssh"
	TrafficRuleAppProtocolTls     TrafficRuleAppProtocol = "tls"
	TrafficRuleAppProtocolUdp     TrafficRuleAppProtocol = "udp"
)

// Defines values for UpdateTeamMemberRequestRole.
const (
	UpdateTeamMemberRequestRoleAdmin     UpdateTeamMemberRequestRole = "admin"
	UpdateTeamMemberRequestRoleBuilder   UpdateTeamMemberRequestRole = "builder"
	UpdateTeamMemberRequestRoleDeveloper UpdateTeamMemberRequestRole = "developer"
	UpdateTeamMemberRequestRoleViewer    UpdateTeamMemberRequestRole = "viewer"
)

// Defines values for VolumeAccessMode.
const (
	ROX VolumeAccessMode = "ROX"
	RWO VolumeAccessMode = "RWO"
	RWX VolumeAccessMode = "RWX"
)

// Defines values for WarmProcessSpecType.
const (
	WarmProcessSpecTypeCmd  WarmProcessSpecType = "cmd"
	WarmProcessSpecTypeRepl WarmProcessSpecType = "repl"
)

// APIKey defines model for APIKey.
type APIKey struct {
	CreatedAt  time.Time  `json:"created_at"`
	CreatedBy  string     `json:"created_by"`
	ExpiresAt  time.Time  `json:"expires_at"`
	Id         string     `json:"id"`
	IsActive   bool       `json:"is_active"`
	KeyValue   *string    `json:"key_value,omitempty"`
	LastUsedAt *time.Time `json:"last_used_at,omitempty"`
	Name       string     `json:"name"`
	Roles      []string   `json:"roles"`

	// Scope API key scope. team keys use roles for team-scoped access. platform keys grant system admin access and can only be created or managed by system admin user sessions.
	Scope      string    `json:"scope"`
	TeamId     string    `json:"team_id"`
	UpdatedAt  time.Time `json:"updated_at"`
	UsageCount *int64    `json:"usage_count,omitempty"`
	UserId     *string   `json:"user_id"`
}

// AddTeamMemberRequest defines model for AddTeamMemberRequest.
type AddTeamMemberRequest struct {
	Email openapi_types.Email      `json:"email"`
	Role  AddTeamMemberRequestRole `json:"role"`
}

// AddTeamMemberRequestRole defines model for AddTeamMemberRequest.Role.
type AddTeamMemberRequestRole string

// Affinity defines model for Affinity.
type Affinity struct {
	NodeAffinity *NodeAffinity `json:"nodeAffinity,omitempty"`
	PodAffinity  *PodAffinity  `json:"podAffinity,omitempty"`
}

// AuthProvider defines model for AuthProvider.
type AuthProvider struct {
	BrowserLoginEnabled bool `json:"browser_login_enabled"`
	DeviceLoginEnabled  bool `json:"device_login_enabled"`

	// ExternalAuthPortalUrl When set, browser login for this provider should redirect to this external URL instead of initiating the OIDC flow directly. Used for deployments that host their own authorization portal.
	ExternalAuthPortalUrl *string `json:"external_auth_portal_url,omitempty"`
	Id                    string  `json:"id"`
	Name                  string  `json:"name"`
	Type                  string  `json:"type"`
}

// CachePolicySpec defines model for CachePolicySpec.
type CachePolicySpec struct {
	// Ttl Override for the broker-side cache TTL of resolved auth material.
	Ttl *string `json:"ttl,omitempty"`
}

// Capabilities defines model for Capabilities.
type Capabilities struct {
	Drop *[]string `json:"drop,omitempty"`
}

// ChangePasswordRequest defines model for ChangePasswordRequest.
type ChangePasswordRequest struct {
	NewPassword string `json:"new_password"`
	OldPassword string `json:"old_password"`
}

// ClaimMountRequest defines model for ClaimMountRequest.
type ClaimMountRequest struct {
	MountPoint      string `json:"mount_point"`
	SandboxvolumeId string `json:"sandboxvolume_id"`
}

// ClaimRequest defines model for ClaimRequest.
type ClaimRequest struct {
	Config   *SandboxConfig       `json:"config,omitempty"`
	Mounts   *[]ClaimMountRequest `json:"mounts,omitempty"`
	Template *string              `json:"template,omitempty"`
}

// ClaimResponse defines model for ClaimResponse.
type ClaimResponse struct {
	BootstrapMounts *[]MountStatus         `json:"bootstrap_mounts,omitempty"`
	ClusterId       *string                `json:"cluster_id"`
	PodName         string                 `json:"pod_name"`
	SandboxId       string                 `json:"sandbox_id"`
	Status          SandboxLifecycleStatus `json:"status"`
	Template        string                 `json:"template"`
}

// ContainerSpec defines model for ContainerSpec.
type ContainerSpec struct {
	Env             *[]EnvVar        `json:"env,omitempty"`
	Image           string           `json:"image"`
	ImagePullPolicy *string          `json:"imagePullPolicy,omitempty"`
	Resources       ResourceQuota    `json:"resources"`
	SecurityContext *SecurityContext `json:"securityContext,omitempty"`
}

// ContextExecResponse defines model for ContextExecResponse.
type ContextExecResponse struct {
	// OutputRaw Raw PTY output, may contain terminal control characters (e.g. \r)
	OutputRaw string `json:"output_raw"`
}

// ContextInputRequest defines model for ContextInputRequest.
type ContextInputRequest struct {
	// Data Input bytes encoded as a string. The /input endpoint writes this value exactly as provided. The /exec endpoint appends a trailing newline for REPL contexts when missing.
	Data string `json:"data"`
}

// ContextResourceUsage defines model for ContextResourceUsage.
type ContextResourceUsage struct {
	// Alias Alias for the REPL or CLI tool (e.g., python, node, bash, redis-cli)
	Alias     *string        `json:"alias,omitempty"`
	ContextId *string        `json:"context_id,omitempty"`
	Paused    *bool          `json:"paused,omitempty"`
	Running   *bool          `json:"running,omitempty"`
	Type      *string        `json:"type,omitempty"`
	Usage     *ResourceUsage `json:"usage,omitempty"`
}

// ContextResponse defines model for ContextResponse.
type ContextResponse struct {
	// Alias Alias for the REPL or CLI tool (e.g., python, node, bash, redis-cli)
	Alias     *string            `json:"alias,omitempty"`
	CreatedAt string             `json:"created_at"`
	Cwd       *string            `json:"cwd,omitempty"`
	EnvVars   *map[string]string `json:"env_vars,omitempty"`
	Id        string             `json:"id"`

	// OutputRaw Raw PTY output for CMD contexts with wait=true, may contain terminal control characters
	OutputRaw *string     `json:"output_raw,omitempty"`
	Paused    bool        `json:"paused"`
	Running   bool        `json:"running"`
	Type      ProcessType `json:"type"`
}

// ContextStatsResponse defines model for ContextStatsResponse.
type ContextStatsResponse struct {
	// Alias Alias for the REPL or CLI tool (e.g., python, node, bash, redis-cli)
	Alias     *string        `json:"alias,omitempty"`
	ContextId *string        `json:"context_id,omitempty"`
	Paused    *bool          `json:"paused,omitempty"`
	Running   *bool          `json:"running,omitempty"`
	Type      *string        `json:"type,omitempty"`
	Usage     *ResourceUsage `json:"usage,omitempty"`
}

// CreateAPIKeyRequest defines model for CreateAPIKeyRequest.
type CreateAPIKeyRequest struct {
	// ExpiresIn 30d, 90d, 180d, 365d, or never
	ExpiresIn *string `json:"expires_in,omitempty"`
	Name      string  `json:"name"`

	// Roles Requested API key roles. Supported roles: admin, developer, builder, viewer. The roles must not grant permissions outside the authenticated caller's permissions.
	Roles *[]string `json:"roles,omitempty"`

	// Scope API key scope: team or platform. Defaults to team. platform keys grant system admin access, require a system admin user session, and do not support roles.
	Scope *string `json:"scope,omitempty"`
}

// CreateAPIKeyResponse defines model for CreateAPIKeyResponse.
type CreateAPIKeyResponse struct {
	CreatedAt time.Time `json:"created_at"`
	ExpiresAt time.Time `json:"expires_at"`
	Id        string    `json:"id"`
	Key       *string   `json:"key,omitempty"`
	Name      string    `json:"name"`
	Roles     []string  `json:"roles"`
	Scope     string    `json:"scope"`
	TeamId    string    `json:"team_id"`
}

// CreateCMDContextRequest defines model for CreateCMDContextRequest.
type CreateCMDContextRequest struct {
	Command []string `json:"command"`
}

// CreateContextRequest defines model for CreateContextRequest.
type CreateContextRequest struct {
	Cmd            *CreateCMDContextRequest  `json:"cmd,omitempty"`
	Cwd            *string                   `json:"cwd,omitempty"`
	EnvVars        *map[string]string        `json:"env_vars,omitempty"`
	IdleTimeoutSec *int32                    `json:"idle_timeout_sec,omitempty"`
	PtySize        *PTYSize                  `json:"pty_size,omitempty"`
	Repl           *CreateREPLContextRequest `json:"repl,omitempty"`
	TtlSec         *int32                    `json:"ttl_sec,omitempty"`
	Type           *ProcessType              `json:"type,omitempty"`
	WaitUntilDone  *bool                     `json:"wait_until_done,omitempty"`
}

// CreateREPLContextRequest defines model for CreateREPLContextRequest.
type CreateREPLContextRequest struct {
	// Alias Alias for the REPL or CLI tool (e.g., python, node, bash, redis-cli)
	Alias      *string     `json:"alias,omitempty"`
	Input      *string     `json:"input,omitempty"`
	ReplConfig *REPLConfig `json:"repl_config,omitempty"`
}

// CreateRegionRequest defines model for CreateRegionRequest.
type CreateRegionRequest struct {
	DisplayName        *string `json:"display_name,omitempty"`
	Enabled            *bool   `json:"enabled,omitempty"`
	Id                 string  `json:"id"`
	MeteringExportUrl  *string `json:"metering_export_url"`
	RegionalGatewayUrl string  `json:"regional_gateway_url"`
}

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

// CreateSandboxVolumeRequest defines model for CreateSandboxVolumeRequest.
type CreateSandboxVolumeRequest struct {
	// AccessMode Access mode for sandbox volumes. Enforcement is scoped to storage-proxy instances. RWO allows read-write mounts on a single instance; ROX allows read-only mounts across instances; RWX allows read-write mounts across instances.
	AccessMode *VolumeAccessMode `json:"access_mode,omitempty"`

	// DefaultPosixGid Default POSIX GID used by external volume access paths that do not carry caller identity. Defaults to 0 when omitted on create.
	DefaultPosixGid *int64 `json:"default_posix_gid,omitempty"`

	// DefaultPosixUid Default POSIX UID used by external volume access paths that do not carry caller identity. Defaults to 0 when omitted on create.
	DefaultPosixUid *int64 `json:"default_posix_uid,omitempty"`

	// SnapshotId Optional snapshot ID used to initialize the new volume from immutable snapshot state.
	SnapshotId *string `json:"snapshot_id,omitempty"`
}

// CreateSnapshotRequest defines model for CreateSnapshotRequest.
type CreateSnapshotRequest struct {
	Description *string `json:"description,omitempty"`
	Name        string  `json:"name"`
}

// CreateTeamRequest defines model for CreateTeamRequest.
type CreateTeamRequest struct {
	HomeRegionId *string `json:"home_region_id"`
	Name         string  `json:"name"`
	Slug         *string `json:"slug,omitempty"`
}

// CredentialBinding defines model for CredentialBinding.
type CredentialBinding struct {
	CachePolicy *CachePolicySpec `json:"cachePolicy,omitempty"`
	Projection  ProjectionSpec   `json:"projection"`

	// Ref Stable binding identifier matched by `credentialRef`.
	Ref string `json:"ref"`

	// SourceRef Region-scoped credential source reference resolved by `manager`.
	SourceRef string `json:"sourceRef"`
}

// CredentialProjectionType defines model for CredentialProjectionType.
type CredentialProjectionType string

// CredentialSourceMetadata defines model for CredentialSourceMetadata.
type CredentialSourceMetadata struct {
	CreatedAt      *time.Time                   `json:"createdAt"`
	CurrentVersion *int64                       `json:"currentVersion,omitempty"`
	Name           string                       `json:"name"`
	ResolverKind   CredentialSourceResolverKind `json:"resolverKind"`
	Status         *string                      `json:"status,omitempty"`
	UpdatedAt      *time.Time                   `json:"updatedAt"`
}

// CredentialSourceResolverKind defines model for CredentialSourceResolverKind.
type CredentialSourceResolverKind string

// CredentialSourceWriteRequest defines model for CredentialSourceWriteRequest.
type CredentialSourceWriteRequest struct {
	Name         string                       `json:"name"`
	ResolverKind CredentialSourceResolverKind `json:"resolverKind"`
	Spec         CredentialSourceWriteSpec    `json:"spec"`
}

// CredentialSourceWriteSpec defines model for CredentialSourceWriteSpec.
type CredentialSourceWriteSpec struct {
	StaticHeaders              *StaticHeadersSourceSpec              `json:"staticHeaders,omitempty"`
	StaticSSHPrivateKey        *StaticSSHPrivateKeySourceSpec        `json:"staticSSHPrivateKey,omitempty"`
	StaticTLSClientCertificate *StaticTLSClientCertificateSourceSpec `json:"staticTLSClientCertificate,omitempty"`
	StaticUsernamePassword     *StaticUsernamePasswordSourceSpec     `json:"staticUsernamePassword,omitempty"`
}

// CurrentAPIKeyResponse defines model for CurrentAPIKeyResponse.
type CurrentAPIKeyResponse struct {
	CreatedBy   string    `json:"created_by"`
	ExpiresAt   time.Time `json:"expires_at"`
	Id          string    `json:"id"`
	IsActive    bool      `json:"is_active"`
	Permissions []string  `json:"permissions"`
	Roles       []string  `json:"roles"`
	Scope       string    `json:"scope"`
	TeamId      string    `json:"team_id"`
}

// DeviceLoginPollRequest defines model for DeviceLoginPollRequest.
type DeviceLoginPollRequest struct {
	DeviceLoginId string `json:"device_login_id"`
}

// DeviceLoginPollResponse defines model for DeviceLoginPollResponse.
type DeviceLoginPollResponse struct {
	ExpiresAt       *int64                        `json:"expires_at,omitempty"`
	IntervalSeconds *int                          `json:"interval_seconds,omitempty"`
	Login           *LoginResponse                `json:"login,omitempty"`
	Status          DeviceLoginPollResponseStatus `json:"status"`
}

// DeviceLoginPollResponseStatus defines model for DeviceLoginPollResponse.Status.
type DeviceLoginPollResponseStatus string

// DeviceLoginStartResponse defines model for DeviceLoginStartResponse.
type DeviceLoginStartResponse struct {
	DeviceLoginId           string  `json:"device_login_id"`
	ExpiresAt               int64   `json:"expires_at"`
	IntervalSeconds         int     `json:"interval_seconds"`
	UserCode                string  `json:"user_code"`
	VerificationUri         string  `json:"verification_uri"`
	VerificationUriComplete *string `json:"verification_uri_complete,omitempty"`
}

// EgressAuthFailurePolicy defines model for EgressAuthFailurePolicy.
type EgressAuthFailurePolicy string

// EgressAuthProtocol defines model for EgressAuthProtocol.
type EgressAuthProtocol string

// EgressAuthRolloutMode defines model for EgressAuthRolloutMode.
type EgressAuthRolloutMode string

// EgressCredentialRule defines model for EgressCredentialRule.
type EgressCredentialRule struct {
	// CredentialRef Stable binding ref to resolve when this traffic rule matches.
	// The referenced binding must be present in `network.credentialBindings`.
	CredentialRef string `json:"credentialRef"`

	// Domains Domain match list for the rule.
	Domains       *[]string                `json:"domains,omitempty"`
	FailurePolicy *EgressAuthFailurePolicy `json:"failurePolicy,omitempty"`

	// HttpMatch Request-level matcher for HTTP-family egress credential rules.
	HttpMatch *HTTPMatch `json:"httpMatch,omitempty"`

	// Name Optional stable identifier used for merge and replacement.
	Name *string `json:"name,omitempty"`

	// Ports Port/protocol constraints for the rule.
	Ports    *[]PortSpec            `json:"ports,omitempty"`
	Protocol *EgressAuthProtocol    `json:"protocol,omitempty"`
	Rollout  *EgressAuthRolloutMode `json:"rollout,omitempty"`
	TlsMode  *EgressTLSMode         `json:"tlsMode,omitempty"`
}

// EgressProxyPolicy Customer-managed transparent egress proxy for allowed TCP traffic.
type EgressProxyPolicy struct {
	// Address SOCKS5 proxy endpoint in host:port form.
	Address string `json:"address"`

	// CredentialRef Optional credential binding ref using a username_password projection.
	CredentialRef *string         `json:"credentialRef,omitempty"`
	Type          EgressProxyType `json:"type"`
}

// EgressProxyType defines model for EgressProxyType.
type EgressProxyType string

// EgressTLSMode defines model for EgressTLSMode.
type EgressTLSMode string

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

// Error defines model for Error.
type Error struct {
	Code    string       `json:"code"`
	Details *interface{} `json:"details,omitempty"`
	Message string       `json:"message"`
}

// ErrorEnvelope defines model for ErrorEnvelope.
type ErrorEnvelope struct {
	Error   Error                `json:"error"`
	Success ErrorEnvelopeSuccess `json:"success"`
}

// ErrorEnvelopeSuccess defines model for ErrorEnvelope.Success.
type ErrorEnvelopeSuccess bool

// ExecAction defines model for ExecAction.
type ExecAction struct {
	Command *[]string `json:"command,omitempty"`
}

// ExecCandidate defines model for ExecCandidate.
type ExecCandidate struct {
	Args *[]string `json:"args,omitempty"`
	Name string    `json:"name"`
}

// FileContentResponse defines model for FileContentResponse.
type FileContentResponse struct {
	Content  *string                      `json:"content,omitempty"`
	Encoding *FileContentResponseEncoding `json:"encoding,omitempty"`
}

// FileContentResponseEncoding defines model for FileContentResponse.Encoding.
type FileContentResponseEncoding string

// FileInfo defines model for FileInfo.
type FileInfo struct {
	IsLink     *bool         `json:"is_link,omitempty"`
	LinkTarget *string       `json:"link_target,omitempty"`
	ModTime    *time.Time    `json:"mod_time,omitempty"`
	Mode       *string       `json:"mode,omitempty"`
	Name       *string       `json:"name,omitempty"`
	Path       *string       `json:"path,omitempty"`
	Size       *int64        `json:"size,omitempty"`
	Type       *FileInfoType `json:"type,omitempty"`
}

// FileInfoType defines model for FileInfo.Type.
type FileInfoType string

// ForkVolumeRequest defines model for ForkVolumeRequest.
type ForkVolumeRequest struct {
	// AccessMode Access mode for sandbox volumes. Enforcement is scoped to storage-proxy instances. RWO allows read-write mounts on a single instance; ROX allows read-only mounts across instances; RWX allows read-write mounts across instances.
	AccessMode *VolumeAccessMode `json:"access_mode,omitempty"`

	// DefaultPosixGid Override the default POSIX GID for external volume access paths. Inherits from the source volume when omitted.
	DefaultPosixGid *int64 `json:"default_posix_gid,omitempty"`

	// DefaultPosixUid Override the default POSIX UID for external volume access paths. Inherits from the source volume when omitted.
	DefaultPosixUid *int64 `json:"default_posix_uid,omitempty"`
}

// GatewayMetadata defines model for GatewayMetadata.
type GatewayMetadata struct {
	GatewayMode GatewayMetadataGatewayMode `json:"gateway_mode"`
	Service     string                     `json:"service"`
}

// GatewayMetadataGatewayMode defines model for GatewayMetadata.GatewayMode.
type GatewayMetadataGatewayMode string

// HTTPGetAction defines model for HTTPGetAction.
type HTTPGetAction struct {
	Host        *string       `json:"host,omitempty"`
	HttpHeaders *[]HTTPHeader `json:"httpHeaders,omitempty"`
	Path        *string       `json:"path,omitempty"`
	Port        ProbePort     `json:"port"`
	Scheme      *string       `json:"scheme,omitempty"`
}

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

// HTTPHeadersProjection defines model for HTTPHeadersProjection.
type HTTPHeadersProjection struct {
	// Headers Outbound headers synthesized from the resolved credential source.
	Headers *[]ProjectedHeader `json:"headers,omitempty"`
}

// HTTPMatch Request-level matcher for HTTP-family egress credential rules.
type HTTPMatch struct {
	// Headers HTTP request header matchers.
	Headers *[]HTTPValueMatch `json:"headers,omitempty"`

	// Methods HTTP methods matched case-insensitively after uppercasing.
	Methods *[]string `json:"methods,omitempty"`

	// PathPrefixes URL path prefix matches.
	PathPrefixes *[]string `json:"pathPrefixes,omitempty"`

	// Paths Exact URL path matches.
	Paths *[]string `json:"paths,omitempty"`

	// Query Decoded query parameter matchers.
	Query *[]HTTPValueMatch `json:"query,omitempty"`
}

// HTTPValueMatch defines model for HTTPValueMatch.
type HTTPValueMatch struct {
	// Name Header or query parameter name.
	Name string `json:"name"`

	// Present When true and values is empty, only parameter/header presence is required.
	Present *bool `json:"present,omitempty"`

	// Values Accepted values. Empty with present=true requires only presence.
	Values *[]string `json:"values,omitempty"`
}

// Identity defines model for Identity.
type Identity struct {
	CreatedAt int64  `json:"created_at"`
	Id        string `json:"id"`
	Provider  string `json:"provider"`
}

// LabelSelector defines model for LabelSelector.
type LabelSelector struct {
	MatchExpressions *[]LabelSelectorRequirement `json:"matchExpressions,omitempty"`
	MatchLabels      *map[string]string          `json:"matchLabels,omitempty"`
}

// LabelSelectorRequirement defines model for LabelSelectorRequirement.
type LabelSelectorRequirement struct {
	Key      string    `json:"key"`
	Operator string    `json:"operator"`
	Values   *[]string `json:"values,omitempty"`
}

// LifecyclePolicy defines model for LifecyclePolicy.
type LifecyclePolicy struct {
	DefaultTTL  *int32       `json:"defaultTTL,omitempty"`
	IdleTimeout *int32       `json:"idleTimeout,omitempty"`
	MaxTTL      *int32       `json:"maxTTL,omitempty"`
	PreStop     *PreStopHook `json:"preStop,omitempty"`
}

// LoginRequest defines model for LoginRequest.
type LoginRequest struct {
	Email    openapi_types.Email `json:"email"`
	Password string              `json:"password"`
}

// LoginResponse defines model for LoginResponse.
type LoginResponse struct {
	AccessToken  string `json:"access_token"`
	ExpiresAt    int64  `json:"expires_at"`
	RefreshToken string `json:"refresh_token"`
	User         User   `json:"user"`
}

// MCPProtocolRule Model Context Protocol operation policy.
type MCPProtocolRule struct {
	// Tools Tool-name allow and deny lists for MCP tools/call requests.
	Tools *MCPToolPolicy `json:"tools,omitempty"`
}

// MCPToolPolicy Tool-name allow and deny lists for MCP tools/call requests.
type MCPToolPolicy struct {
	// Allowed When non-empty, only listed tool names are allowed.
	Allowed *[]string `json:"allowed,omitempty"`

	// Denied Tool names denied before the allowed list is evaluated.
	Denied *[]string `json:"denied,omitempty"`
}

// MountStatus defines model for MountStatus.
type MountStatus struct {
	ErrorCode          *string          `json:"error_code,omitempty"`
	ErrorMessage       *string          `json:"error_message,omitempty"`
	MountPoint         string           `json:"mount_point"`
	MountedAt          *string          `json:"mounted_at,omitempty"`
	MountedDurationSec *int64           `json:"mounted_duration_sec,omitempty"`
	SandboxvolumeId    string           `json:"sandboxvolume_id"`
	State              MountStatusState `json:"state"`
}

// MountStatusState defines model for MountStatus.State.
type MountStatusState string

// MoveFileRequest defines model for MoveFileRequest.
type MoveFileRequest struct {
	Destination string `json:"destination"`
	Source      string `json:"source"`
}

// NetworkEgressPolicy Egress rule set interpreted by the selected network mode.
// In `allow-all`, only `denied*` fields are enforced.
// In `block-all`, only `allowed*` fields are enforced.
// `trafficRules` is a rule-based alternative and must not be combined
// with the legacy `allowed*`/`denied*` fields.
type NetworkEgressPolicy struct {
	// AllowedCidrs Legacy CIDR allowlist used only when mode is `block-all`. Use `trafficRules` instead.
	// Deprecated:
	AllowedCidrs *[]string `json:"allowedCidrs,omitempty"`

	// AllowedDomains Legacy domain allowlist used only when mode is `block-all`. Use `trafficRules` instead.
	// Deprecated:
	AllowedDomains *[]string `json:"allowedDomains,omitempty"`

	// AllowedPorts Legacy port/protocol allowlist used only when mode is `block-all`. Use `trafficRules` instead.
	// Deprecated:
	AllowedPorts *[]PortSpec `json:"allowedPorts,omitempty"`

	// CredentialRules Structured egress auth injection rules resolved by the manager runtime egress auth path.
	// These rules are orthogonal to allow/deny matching and are intended for
	// destination-scoped outbound auth behavior.
	CredentialRules *[]EgressCredentialRule `json:"credentialRules,omitempty"`

	// DeniedCidrs Legacy CIDR denylist used only when mode is `allow-all`. Use `trafficRules` instead.
	// Deprecated:
	DeniedCidrs *[]string `json:"deniedCidrs,omitempty"`

	// DeniedDomains Legacy domain denylist used only when mode is `allow-all`. Use `trafficRules` instead.
	// Deprecated:
	DeniedDomains *[]string `json:"deniedDomains,omitempty"`

	// DeniedPorts Legacy port/protocol denylist used only when mode is `allow-all`. Use `trafficRules` instead.
	// Deprecated:
	DeniedPorts *[]PortSpec `json:"deniedPorts,omitempty"`

	// ProtocolRules Protocol-aware controls applied after traffic is allowed by
	// `trafficRules` or legacy allow/deny fields.
	ProtocolRules *[]ProtocolRule `json:"protocolRules,omitempty"`

	// Proxy Customer-managed transparent egress proxy for allowed TCP traffic.
	Proxy *EgressProxyPolicy `json:"proxy,omitempty"`

	// TrafficRules Ordered egress allow/deny rules. The first matching rule wins and
	// unmatched traffic falls back to `mode`.
	TrafficRules *[]TrafficRule `json:"trafficRules,omitempty"`
}

// NodeAffinity defines model for NodeAffinity.
type NodeAffinity struct {
	PreferredDuringSchedulingIgnoredDuringExecution *[]PreferredSchedulingTerm `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty"`
	RequiredDuringSchedulingIgnoredDuringExecution  *NodeSelector              `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty"`
}

// NodeSelector defines model for NodeSelector.
type NodeSelector struct {
	NodeSelectorTerms *[]NodeSelectorTerm `json:"nodeSelectorTerms,omitempty"`
}

// NodeSelectorRequirement defines model for NodeSelectorRequirement.
type NodeSelectorRequirement struct {
	Key      string    `json:"key"`
	Operator string    `json:"operator"`
	Values   *[]string `json:"values,omitempty"`
}

// NodeSelectorTerm defines model for NodeSelectorTerm.
type NodeSelectorTerm struct {
	MatchExpressions *[]NodeSelectorRequirement `json:"matchExpressions,omitempty"`
	MatchFields      *[]NodeSelectorRequirement `json:"matchFields,omitempty"`
}

// PTYSize defines model for PTYSize.
type PTYSize struct {
	Cols *int32 `json:"cols,omitempty"`
	Rows *int32 `json:"rows,omitempty"`
}

// PauseSandboxResponse defines model for PauseSandboxResponse.
type PauseSandboxResponse struct {
	Paused        bool                  `json:"paused"`
	PowerState    SandboxPowerState     `json:"power_state"`
	ResourceUsage *SandboxResourceUsage `json:"resource_usage,omitempty"`
	SandboxId     string                `json:"sandbox_id"`
	UpdatedCpu    *string               `json:"updated_cpu,omitempty"`
	UpdatedMemory *string               `json:"updated_memory,omitempty"`
}

// PodAffinity defines model for PodAffinity.
type PodAffinity struct {
	PreferredDuringSchedulingIgnoredDuringExecution *[]WeightedPodAffinityTerm `json:"preferredDuringSchedulingIgnoredDuringExecution,omitempty"`
	RequiredDuringSchedulingIgnoredDuringExecution  *[]PodAffinityTerm         `json:"requiredDuringSchedulingIgnoredDuringExecution,omitempty"`
}

// PodAffinityTerm defines model for PodAffinityTerm.
type PodAffinityTerm struct {
	LabelSelector *LabelSelector `json:"labelSelector,omitempty"`
	Namespaces    *[]string      `json:"namespaces,omitempty"`
	TopologyKey   string         `json:"topologyKey"`
}

// PodSpecOverride defines model for PodSpecOverride.
type PodSpecOverride struct {
	Affinity           *Affinity          `json:"affinity,omitempty"`
	NodeSelector       *map[string]string `json:"nodeSelector,omitempty"`
	ServiceAccountName *string            `json:"serviceAccountName,omitempty"`
	Tolerations        *[]Toleration      `json:"tolerations,omitempty"`
}

// PoolStrategy defines model for PoolStrategy.
type PoolStrategy struct {
	MaxIdle int32 `json:"maxIdle"`
	MinIdle int32 `json:"minIdle"`
}

// PortSpec defines model for PortSpec.
type PortSpec struct {
	EndPort  *int32  `json:"endPort,omitempty"`
	Port     int32   `json:"port"`
	Protocol *string `json:"protocol,omitempty"`
}

// PreStopHook defines model for PreStopHook.
type PreStopHook struct {
	Command        *[]string `json:"command,omitempty"`
	TimeoutSeconds *int32    `json:"timeoutSeconds,omitempty"`
}

// PreferredSchedulingTerm defines model for PreferredSchedulingTerm.
type PreferredSchedulingTerm struct {
	Preference NodeSelectorTerm `json:"preference"`
	Weight     int32            `json:"weight"`
}

// ProbePort defines model for ProbePort.
type ProbePort = int32

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

// ProcessType defines model for ProcessType.
type ProcessType string

// ProjectedHeader defines model for ProjectedHeader.
type ProjectedHeader struct {
	// Name Outbound header name.
	Name string `json:"name"`

	// ValueTemplate Template rendered against the resolved credential source payload.
	ValueTemplate string `json:"valueTemplate"`
}

// ProjectionSpec defines model for ProjectionSpec.
type ProjectionSpec struct {
	HttpHeaders *HTTPHeadersProjection `json:"httpHeaders,omitempty"`

	// SshProxy Transparent SSH proxy projection used for SSH egress re-origination.
	SshProxy *SSHProxyProjection `json:"sshProxy,omitempty"`

	// TlsClientCertificate Client certificate projection used for TLS terminate-reoriginate auth.
	TlsClientCertificate *TLSClientCertificateProjection `json:"tlsClientCertificate,omitempty"`
	Type                 CredentialProjectionType        `json:"type"`

	// UsernamePassword Username/password projection used for SOCKS5 and MQTT auth handshakes.
	UsernamePassword *UsernamePasswordProjection `json:"usernamePassword,omitempty"`
}

// ProtocolRule Protocol-aware egress controls applied after destination traffic is allowed.
type ProtocolRule struct {
	// Domains Domain match list for the rule.
	Domains *[]string `json:"domains,omitempty"`

	// HttpMatch Request-level matcher for HTTP-family egress credential rules.
	HttpMatch *HTTPMatch `json:"httpMatch,omitempty"`

	// Mcp Model Context Protocol operation policy.
	Mcp *MCPProtocolRule `json:"mcp,omitempty"`

	// Name Optional stable identifier used for merge and replacement.
	Name *string `json:"name,omitempty"`

	// Ports Port/protocol constraints for the rule.
	Ports    *[]PortSpec          `json:"ports,omitempty"`
	Protocol ProtocolRuleProtocol `json:"protocol"`
	TlsMode  *EgressTLSMode       `json:"tlsMode,omitempty"`
}

// ProtocolRuleProtocol defines model for ProtocolRuleProtocol.
type ProtocolRuleProtocol string

// PutTeamQuotaRequest defines model for PutTeamQuotaRequest.
type PutTeamQuotaRequest struct {
	LimitValue int64 `json:"limit_value"`
}

// QuotaDimension defines model for QuotaDimension.
type QuotaDimension string

// REPLConfig defines model for REPLConfig.
type REPLConfig struct {
	Candidates  []ExecCandidate   `json:"candidates"`
	DefaultTerm *string           `json:"default_term,omitempty"`
	Description *string           `json:"description,omitempty"`
	DisplayName *string           `json:"display_name,omitempty"`
	Env         *[]REPLEnvVar     `json:"env,omitempty"`
	Name        string            `json:"name"`
	Prompt      *REPLPromptConfig `json:"prompt,omitempty"`
	Ready       *REPLReadyConfig  `json:"ready,omitempty"`
}

// REPLEnvVar defines model for REPLEnvVar.
type REPLEnvVar struct {
	Name      string  `json:"name"`
	Value     *string `json:"value,omitempty"`
	ValueFrom *string `json:"value_from,omitempty"`
}

// REPLPromptConfig defines model for REPLPromptConfig.
type REPLPromptConfig struct {
	CustomPrompt *string `json:"custom_prompt,omitempty"`
}

// REPLReadyConfig defines model for REPLReadyConfig.
type REPLReadyConfig struct {
	Mode           *REPLReadyMode `json:"mode,omitempty"`
	StartupDelayMs *int32         `json:"startup_delay_ms,omitempty"`
	Token          *string        `json:"token,omitempty"`
}

// REPLReadyMode defines model for REPLReadyMode.
type REPLReadyMode string

// RefreshRequest defines model for RefreshRequest.
type RefreshRequest struct {
	RefreshToken string `json:"refresh_token"`
}

// RefreshResponse defines model for RefreshResponse.
type RefreshResponse struct {
	ExpiresAt time.Time `json:"expires_at"`

	// HardExpiresAt Hard expiration timestamp. Zero value means not set.
	HardExpiresAt time.Time `json:"hard_expires_at"`
	SandboxId     string    `json:"sandbox_id"`
}

// Region defines model for Region.
type Region struct {
	DisplayName        *string `json:"display_name,omitempty"`
	Enabled            bool    `json:"enabled"`
	Id                 string  `json:"id"`
	MeteringExportUrl  *string `json:"metering_export_url"`
	RegionalGatewayUrl string  `json:"regional_gateway_url"`
}

// RegisterRequest defines model for RegisterRequest.
type RegisterRequest struct {
	Email openapi_types.Email `json:"email"`

	// HomeRegionId Required in global-gateway mode because registration creates the user's initial team.
	HomeRegionId *string `json:"home_region_id"`
	Name         string  `json:"name"`
	Password     string  `json:"password"`
}

// RegistryCredentials defines model for RegistryCredentials.
type RegistryCredentials struct {
	ExpiresAt    *time.Time `json:"expiresAt,omitempty"`
	Password     string     `json:"password"`
	Provider     string     `json:"provider"`
	PullRegistry string     `json:"pullRegistry"`
	PushRegistry string     `json:"pushRegistry"`
	Username     string     `json:"username"`
}

// RegistryCredentialsRequest defines model for RegistryCredentialsRequest.
type RegistryCredentialsRequest struct {
	// TargetImage Target image name and tag requested for push, without credentials.
	TargetImage *string `json:"targetImage,omitempty"`
}

// ResizeContextRequest defines model for ResizeContextRequest.
type ResizeContextRequest struct {
	Cols int32 `json:"cols"`
	Rows int32 `json:"rows"`
}

// ResourceQuota defines model for ResourceQuota.
type ResourceQuota struct {
	Cpu    *string `json:"cpu,omitempty"`
	Memory *string `json:"memory,omitempty"`
}

// ResourceUsage defines model for ResourceUsage.
type ResourceUsage struct {
	ContainerMemoryLimit      *int64   `json:"container_memory_limit,omitempty"`
	ContainerMemoryUsage      *int64   `json:"container_memory_usage,omitempty"`
	ContainerMemoryWorkingSet *int64   `json:"container_memory_working_set,omitempty"`
	CpuPercent                *float64 `json:"cpu_percent,omitempty"`
	IoReadBytes               *int64   `json:"io_read_bytes,omitempty"`
	IoWriteBytes              *int64   `json:"io_write_bytes,omitempty"`
	MemoryBytes               *int64   `json:"memory_bytes,omitempty"`
	MemoryRss                 *int64   `json:"memory_rss,omitempty"`
	MemoryVms                 *int64   `json:"memory_vms,omitempty"`
	OpenFiles                 *int     `json:"open_files,omitempty"`
	ThreadCount               *int     `json:"thread_count,omitempty"`
}

// ResumeSandboxResponse defines model for ResumeSandboxResponse.
type ResumeSandboxResponse struct {
	PowerState     SandboxPowerState `json:"power_state"`
	RestoredMemory *string           `json:"restored_memory,omitempty"`
	Resumed        bool              `json:"resumed"`
	SandboxId      string            `json:"sandbox_id"`
}

// SSHProxyProjection Transparent SSH proxy projection used for SSH egress re-origination.
type SSHProxyProjection struct {
	// KnownHosts OpenSSH known_hosts entries used to verify upstream host keys.
	KnownHosts *[]string `json:"knownHosts,omitempty"`

	// SandboxPublicKeys Fake public keys accepted from sandbox-side SSH clients.
	SandboxPublicKeys *[]string `json:"sandboxPublicKeys,omitempty"`

	// UpstreamUsername Username used by netd when authenticating to the upstream SSH server.
	UpstreamUsername *string `json:"upstreamUsername,omitempty"`
}

// SSHPublicKey defines model for SSHPublicKey.
type SSHPublicKey struct {
	Comment           *string   `json:"comment,omitempty"`
	CreatedAt         time.Time `json:"created_at"`
	FingerprintSha256 string    `json:"fingerprint_sha256"`
	Id                string    `json:"id"`
	KeyType           string    `json:"key_type"`
	Name              string    `json:"name"`
	PublicKey         string    `json:"public_key"`
	UpdatedAt         time.Time `json:"updated_at"`
}

// Sandbox defines model for Sandbox.
type Sandbox struct {
	AutoResume bool      `json:"auto_resume"`
	ClaimedAt  time.Time `json:"claimed_at"`
	CreatedAt  time.Time `json:"created_at"`

	// ExpiresAt Soft expiration timestamp. Zero value means not set.
	ExpiresAt time.Time `json:"expires_at"`

	// HardExpiresAt Hard expiration timestamp. Zero value means not set.
	HardExpiresAt time.Time              `json:"hard_expires_at"`
	Id            string                 `json:"id"`
	Mounts        *[]ClaimMountRequest   `json:"mounts,omitempty"`
	Paused        bool                   `json:"paused"`
	PodName       string                 `json:"pod_name"`
	PowerState    SandboxPowerState      `json:"power_state"`
	Services      *[]SandboxAppService   `json:"services,omitempty"`
	Ssh           *SandboxSSHConnection  `json:"ssh,omitempty"`
	Status        SandboxLifecycleStatus `json:"status"`
	TeamId        string                 `json:"team_id"`
	TemplateId    string                 `json:"template_id"`
	UserId        *string                `json:"user_id,omitempty"`
}

// SandboxAppService Canonical service model for sandbox exposure.
type SandboxAppService struct {
	DisplayName *string                  `json:"display_name,omitempty"`
	HealthCheck *SandboxAppServiceHealth `json:"health_check,omitempty"`

	// Id Stable service ID. Must be a DNS label.
	Id      string                    `json:"id"`
	Ingress SandboxAppServiceIngress  `json:"ingress"`
	Port    int32                     `json:"port"`
	Runtime *SandboxAppServiceRuntime `json:"runtime,omitempty"`
}

// SandboxAppServiceHealth defines model for SandboxAppServiceHealth.
type SandboxAppServiceHealth struct {
	Path *string `json:"path,omitempty"`
}

// SandboxAppServiceIngress defines model for SandboxAppServiceIngress.
type SandboxAppServiceIngress struct {
	Public bool                      `json:"public"`
	Routes *[]SandboxAppServiceRoute `json:"routes,omitempty"`
}

// SandboxAppServiceRoute defines model for SandboxAppServiceRoute.
type SandboxAppServiceRoute struct {
	Auth           *SandboxAppServiceRouteAuth      `json:"auth,omitempty"`
	Cors           *SandboxAppServiceRouteCORS      `json:"cors,omitempty"`
	Id             string                           `json:"id"`
	Methods        *[]string                        `json:"methods,omitempty"`
	PathPrefix     *string                          `json:"path_prefix,omitempty"`
	RateLimit      *SandboxAppServiceRouteRateLimit `json:"rate_limit,omitempty"`
	Resume         bool                             `json:"resume"`
	RewritePrefix  *string                          `json:"rewrite_prefix"`
	TimeoutSeconds *int32                           `json:"timeout_seconds,omitempty"`
}

// SandboxAppServiceRouteAuth defines model for SandboxAppServiceRouteAuth.
type SandboxAppServiceRouteAuth struct {
	// BearerTokenSha256 Hex SHA-256 of the accepted bearer token. Required when mode is bearer.
	BearerTokenSha256 *string `json:"bearer_token_sha256,omitempty"`

	// HeaderName Required header name when mode is header.
	HeaderName *string `json:"header_name,omitempty"`

	// HeaderValueSha256 Hex SHA-256 of the required header value when mode is header.
	HeaderValueSha256 *string                        `json:"header_value_sha256,omitempty"`
	Mode              SandboxAppServiceRouteAuthMode `json:"mode"`
}

// SandboxAppServiceRouteAuthMode defines model for SandboxAppServiceRouteAuth.Mode.
type SandboxAppServiceRouteAuthMode string

// SandboxAppServiceRouteCORS defines model for SandboxAppServiceRouteCORS.
type SandboxAppServiceRouteCORS struct {
	AllowCredentials *bool     `json:"allow_credentials,omitempty"`
	AllowedHeaders   *[]string `json:"allowed_headers,omitempty"`
	AllowedMethods   *[]string `json:"allowed_methods,omitempty"`
	AllowedOrigins   *[]string `json:"allowed_origins,omitempty"`
	ExposeHeaders    *[]string `json:"expose_headers,omitempty"`
	MaxAgeSeconds    *int32    `json:"max_age_seconds,omitempty"`
}

// SandboxAppServiceRouteRateLimit defines model for SandboxAppServiceRouteRateLimit.
type SandboxAppServiceRouteRateLimit struct {
	Burst int32 `json:"burst"`
	Rps   int32 `json:"rps"`
}

// SandboxAppServiceRuntime defines model for SandboxAppServiceRuntime.
type SandboxAppServiceRuntime struct {
	// Command Process argv used when type is cmd.
	Command *[]string          `json:"command,omitempty"`
	Cwd     *string            `json:"cwd,omitempty"`
	EnvVars *map[string]string `json:"env_vars,omitempty"`

	// Type Runtime strategy for restarting a service process.
	Type SandboxAppServiceRuntimeType `json:"type"`

	// WarmProcessName Warm process alias or context ID used when type is warm_process.
	WarmProcessName *string `json:"warm_process_name,omitempty"`
}

// SandboxAppServiceRuntimeType Runtime strategy for restarting a service process.
type SandboxAppServiceRuntimeType string

// SandboxAppServiceView defines model for SandboxAppServiceView.
type SandboxAppServiceView struct {
	DisplayName *string                  `json:"display_name,omitempty"`
	HealthCheck *SandboxAppServiceHealth `json:"health_check,omitempty"`

	// Id Stable service ID. Must be a DNS label.
	Id      string                   `json:"id"`
	Ingress SandboxAppServiceIngress `json:"ingress"`
	Port    int32                    `json:"port"`

	// PublicUrl Public HTTPS URL for this service when public exposure is enabled.
	PublicUrl       *string                   `json:"public_url,omitempty"`
	PublishBlockers *[]string                 `json:"publish_blockers,omitempty"`
	Publishable     bool                      `json:"publishable"`
	Runtime         *SandboxAppServiceRuntime `json:"runtime,omitempty"`
}

// SandboxConfig defines model for SandboxConfig.
type SandboxConfig struct {
	// AutoResume Sandbox-level resume gate for paused sandboxes. When false, any inbound request
	// (API or public exposure) must not auto resume the sandbox.
	AutoResume *bool              `json:"auto_resume,omitempty"`
	EnvVars    *map[string]string `json:"env_vars,omitempty"`

	// HardTtl Hard time-to-live in seconds. When it expires, Sandbox0 cleans the runtime pod and preserves the sandbox identity, services, and public URLs until the sandbox is explicitly deleted.
	HardTtl  *int32                `json:"hard_ttl,omitempty"`
	Network  *SandboxNetworkPolicy `json:"network,omitempty"`
	Services *[]SandboxAppService  `json:"services,omitempty"`
	Ttl      *int32                `json:"ttl,omitempty"`

	// Webhook Per-sandbox webhook configuration. Sandbox0 delivers webhook events at least once and consumers should deduplicate by event_id. For sandbox lifecycle events, procd persists signed delivery records to a manager-owned SandboxVolume outside the workspace before dispatch; manager also emits sandbox.deleted during pod deletion cleanup.
	Webhook *WebhookConfig `json:"webhook,omitempty"`
}

// SandboxLifecycleStatus defines model for SandboxLifecycleStatus.
type SandboxLifecycleStatus string

// SandboxNetworkPolicy defines model for SandboxNetworkPolicy.
type SandboxNetworkPolicy struct {
	CredentialBindings *[]CredentialBinding `json:"credentialBindings,omitempty"`

	// Egress Egress rule set interpreted by the selected network mode.
	// In `allow-all`, only `denied*` fields are enforced.
	// In `block-all`, only `allowed*` fields are enforced.
	// `trafficRules` is a rule-based alternative and must not be combined
	// with the legacy `allowed*`/`denied*` fields.
	Egress *NetworkEgressPolicy     `json:"egress,omitempty"`
	Mode   SandboxNetworkPolicyMode `json:"mode"`
}

// SandboxNetworkPolicyMode defines model for SandboxNetworkPolicy.Mode.
type SandboxNetworkPolicyMode string

// SandboxPowerState defines model for SandboxPowerState.
type SandboxPowerState struct {
	Desired            SandboxPowerStateDesired  `json:"desired"`
	DesiredGeneration  int64                     `json:"desired_generation"`
	Observed           SandboxPowerStateObserved `json:"observed"`
	ObservedGeneration int64                     `json:"observed_generation"`
	Phase              SandboxPowerStatePhase    `json:"phase"`
}

// SandboxPowerStateDesired defines model for SandboxPowerState.Desired.
type SandboxPowerStateDesired string

// SandboxPowerStateObserved defines model for SandboxPowerState.Observed.
type SandboxPowerStateObserved string

// SandboxPowerStatePhase defines model for SandboxPowerState.Phase.
type SandboxPowerStatePhase string

// SandboxProbeSet defines model for SandboxProbeSet.
type SandboxProbeSet struct {
	Liveness  *SandboxProbeSpec `json:"liveness,omitempty"`
	Readiness *SandboxProbeSpec `json:"readiness,omitempty"`
	Startup   *SandboxProbeSpec `json:"startup,omitempty"`
}

// SandboxProbeSpec defines model for SandboxProbeSpec.
type SandboxProbeSpec struct {
	Exec                *ExecAction         `json:"exec,omitempty"`
	HttpGet             *HTTPGetAction      `json:"httpGet,omitempty"`
	InitialDelaySeconds *int32              `json:"initialDelaySeconds,omitempty"`
	Process             *ProcessProbeAction `json:"process,omitempty"`
	TcpSocket           *TCPSocketAction    `json:"tcpSocket,omitempty"`
	TimeoutSeconds      *int32              `json:"timeoutSeconds,omitempty"`
}

// SandboxRefreshRequest defines model for SandboxRefreshRequest.
type SandboxRefreshRequest struct {
	// Duration Duration to extend TTL in seconds (optional, defaults to original TTL)
	Duration *int32 `json:"duration,omitempty"`
}

// SandboxResourceUsage defines model for SandboxResourceUsage.
type SandboxResourceUsage struct {
	ContainerMemoryLimit      *int64                  `json:"container_memory_limit,omitempty"`
	ContainerMemoryUsage      *int64                  `json:"container_memory_usage,omitempty"`
	ContainerMemoryWorkingSet *int64                  `json:"container_memory_working_set,omitempty"`
	ContextCount              *int                    `json:"context_count,omitempty"`
	Contexts                  *[]ContextResourceUsage `json:"contexts,omitempty"`
	PausedContextCount        *int                    `json:"paused_context_count,omitempty"`
	RunningContextCount       *int                    `json:"running_context_count,omitempty"`
	TotalIoReadBytes          *int64                  `json:"total_io_read_bytes,omitempty"`
	TotalIoWriteBytes         *int64                  `json:"total_io_write_bytes,omitempty"`
	TotalMemoryRss            *int64                  `json:"total_memory_rss,omitempty"`
	TotalMemoryVms            *int64                  `json:"total_memory_vms,omitempty"`
	TotalOpenFiles            *int                    `json:"total_open_files,omitempty"`
	TotalThreadCount          *int                    `json:"total_thread_count,omitempty"`
}

// SandboxSSHConnection defines model for SandboxSSHConnection.
type SandboxSSHConnection struct {
	Host     string `json:"host"`
	Port     int    `json:"port"`
	Username string `json:"username"`
}

// SandboxServicesUpdateRequest defines model for SandboxServicesUpdateRequest.
type SandboxServicesUpdateRequest struct {
	Services []SandboxAppService `json:"services"`
}

// SandboxStatus defines model for SandboxStatus.
type SandboxStatus struct {
	ClaimedAt     *string                 `json:"claimed_at,omitempty"`
	CreatedAt     *string                 `json:"created_at,omitempty"`
	ExpiresAt     *string                 `json:"expires_at,omitempty"`
	HardExpiresAt *string                 `json:"hard_expires_at,omitempty"`
	PodName       *string                 `json:"pod_name,omitempty"`
	SandboxId     *string                 `json:"sandbox_id,omitempty"`
	Status        *SandboxLifecycleStatus `json:"status,omitempty"`
	TeamId        *string                 `json:"team_id,omitempty"`
	TemplateId    *string                 `json:"template_id,omitempty"`
	UserId        *string                 `json:"user_id,omitempty"`
}

// SandboxSummary defines model for SandboxSummary.
type SandboxSummary struct {
	// ClusterId Cluster where sandbox runs (multi-cluster only)
	ClusterId *string   `json:"cluster_id"`
	CreatedAt time.Time `json:"created_at"`
	ExpiresAt time.Time `json:"expires_at"`

	// HardExpiresAt Hard expiration timestamp. Zero value means not set.
	HardExpiresAt time.Time              `json:"hard_expires_at"`
	Id            string                 `json:"id"`
	Paused        bool                   `json:"paused"`
	PowerState    SandboxPowerState      `json:"power_state"`
	Status        SandboxLifecycleStatus `json:"status"`
	TemplateId    string                 `json:"template_id"`
}

// SandboxTemplateCondition defines model for SandboxTemplateCondition.
type SandboxTemplateCondition struct {
	LastTransitionTime *time.Time `json:"lastTransitionTime,omitempty"`
	Message            *string    `json:"message,omitempty"`
	Reason             *string    `json:"reason,omitempty"`
	Status             *string    `json:"status,omitempty"`
	Type               *string    `json:"type,omitempty"`
}

// SandboxTemplateSpec defines model for SandboxTemplateSpec.
type SandboxTemplateSpec struct {
	AllowedTeams  *[]string             `json:"allowedTeams,omitempty"`
	ClusterId     *string               `json:"clusterId,omitempty"`
	Description   *string               `json:"description,omitempty"`
	DisplayName   *string               `json:"displayName,omitempty"`
	EnvVars       *map[string]string    `json:"envVars,omitempty"`
	Lifecycle     *LifecyclePolicy      `json:"lifecycle,omitempty"`
	MainContainer *ContainerSpec        `json:"mainContainer,omitempty"`
	Network       *SandboxNetworkPolicy `json:"network,omitempty"`
	Pod           *PodSpecOverride      `json:"pod,omitempty"`
	Pool          *PoolStrategy         `json:"pool,omitempty"`
	Public        *bool                 `json:"public,omitempty"`
	Tags          *[]string             `json:"tags,omitempty"`
	VolumeMounts  *[]VolumeMountSpec    `json:"volumeMounts,omitempty"`
	WarmProcesses *[]WarmProcessSpec    `json:"warmProcesses,omitempty"`
}

// SandboxTemplateStatus defines model for SandboxTemplateStatus.
type SandboxTemplateStatus struct {
	ActiveCount    *int32                      `json:"activeCount,omitempty"`
	Conditions     *[]SandboxTemplateCondition `json:"conditions,omitempty"`
	IdleCount      *int32                      `json:"idleCount,omitempty"`
	LastUpdateTime *time.Time                  `json:"lastUpdateTime"`
}

// SandboxUpdateConfig Subset of SandboxConfig fields that can be updated at runtime without restarting the sandbox.
// Note: env_vars and webhook are not included as they only affect new processes or require restart.
type SandboxUpdateConfig struct {
	// AutoResume Sandbox-level resume gate for paused sandboxes. When false, any inbound request
	// (API or public exposure) must not auto resume the sandbox.
	AutoResume *bool `json:"auto_resume,omitempty"`

	// HardTtl Hard time-to-live in seconds. When it expires, Sandbox0 cleans the runtime pod and preserves the sandbox identity, services, and public URLs until the sandbox is explicitly deleted.
	HardTtl  *int32                `json:"hard_ttl,omitempty"`
	Network  *SandboxNetworkPolicy `json:"network,omitempty"`
	Services *[]SandboxAppService  `json:"services,omitempty"`
	Ttl      *int32                `json:"ttl,omitempty"`
}

// SandboxUpdateRequest defines model for SandboxUpdateRequest.
type SandboxUpdateRequest struct {
	// Config Subset of SandboxConfig fields that can be updated at runtime without restarting the sandbox.
	// Note: env_vars and webhook are not included as they only affect new processes or require restart.
	Config *SandboxUpdateConfig `json:"config,omitempty"`
}

// SandboxVolume defines model for SandboxVolume.
type SandboxVolume struct {
	// AccessMode Access mode for sandbox volumes. Enforcement is scoped to storage-proxy instances. RWO allows read-write mounts on a single instance; ROX allows read-only mounts across instances; RWX allows read-write mounts across instances.
	AccessMode      *VolumeAccessMode `json:"access_mode,omitempty"`
	CreatedAt       time.Time         `json:"created_at"`
	DefaultPosixGid *int64            `json:"default_posix_gid"`
	DefaultPosixUid *int64            `json:"default_posix_uid"`
	Id              string            `json:"id"`
	SourceVolumeId  *string           `json:"source_volume_id"`
	TeamId          string            `json:"team_id"`
	UpdatedAt       time.Time         `json:"updated_at"`
	UserId          string            `json:"user_id"`
}

// SecurityContext defines model for SecurityContext.
type SecurityContext struct {
	Capabilities *Capabilities `json:"capabilities,omitempty"`
	RunAsGroup   *int64        `json:"runAsGroup,omitempty"`
	RunAsUser    *int64        `json:"runAsUser,omitempty"`
}

// SignalContextRequest defines model for SignalContextRequest.
type SignalContextRequest struct {
	Signal string `json:"signal"`
}

// Snapshot defines model for Snapshot.
type Snapshot struct {
	CreatedAt   string  `json:"created_at"`
	Description *string `json:"description,omitempty"`
	ExpiresAt   *string `json:"expires_at"`
	Id          string  `json:"id"`
	Name        string  `json:"name"`
	SizeBytes   int64   `json:"size_bytes"`
	VolumeId    string  `json:"volume_id"`
}

// StaticHeadersSourceSpec defines model for StaticHeadersSourceSpec.
type StaticHeadersSourceSpec struct {
	Values *map[string]string `json:"values,omitempty"`
}

// StaticSSHPrivateKeySourceSpec defines model for StaticSSHPrivateKeySourceSpec.
type StaticSSHPrivateKeySourceSpec struct {
	Passphrase    *string `json:"passphrase,omitempty"`
	PrivateKeyPem *string `json:"privateKeyPem,omitempty"`
}

// StaticTLSClientCertificateSourceSpec defines model for StaticTLSClientCertificateSourceSpec.
type StaticTLSClientCertificateSourceSpec struct {
	CaPem          *string `json:"caPem,omitempty"`
	CertificatePem *string `json:"certificatePem,omitempty"`
	PrivateKeyPem  *string `json:"privateKeyPem,omitempty"`
}

// StaticUsernamePasswordSourceSpec defines model for StaticUsernamePasswordSourceSpec.
type StaticUsernamePasswordSourceSpec struct {
	Password *string `json:"password,omitempty"`
	Username *string `json:"username,omitempty"`
}

// SuccessAPIKeyListResponse defines model for SuccessAPIKeyListResponse.
type SuccessAPIKeyListResponse struct {
	Data *struct {
		ApiKeys *[]APIKey `json:"api_keys,omitempty"`
	} `json:"data,omitempty"`
	Success SuccessAPIKeyListResponseSuccess `json:"success"`
}

// SuccessAPIKeyListResponseSuccess defines model for SuccessAPIKeyListResponse.Success.
type SuccessAPIKeyListResponseSuccess bool

// SuccessAuthProvidersResponse defines model for SuccessAuthProvidersResponse.
type SuccessAuthProvidersResponse struct {
	Data *struct {
		Providers *[]AuthProvider `json:"providers,omitempty"`
	} `json:"data,omitempty"`
	Success SuccessAuthProvidersResponseSuccess `json:"success"`
}

// SuccessAuthProvidersResponseSuccess defines model for SuccessAuthProvidersResponse.Success.
type SuccessAuthProvidersResponseSuccess bool

// SuccessClaimResponse defines model for SuccessClaimResponse.
type SuccessClaimResponse struct {
	Data    *ClaimResponse              `json:"data,omitempty"`
	Success SuccessClaimResponseSuccess `json:"success"`
}

// SuccessClaimResponseSuccess defines model for SuccessClaimResponse.Success.
type SuccessClaimResponseSuccess bool

// SuccessContextExecResponse defines model for SuccessContextExecResponse.
type SuccessContextExecResponse struct {
	Data    *ContextExecResponse              `json:"data,omitempty"`
	Success SuccessContextExecResponseSuccess `json:"success"`
}

// SuccessContextExecResponseSuccess defines model for SuccessContextExecResponse.Success.
type SuccessContextExecResponseSuccess bool

// SuccessContextListResponse defines model for SuccessContextListResponse.
type SuccessContextListResponse struct {
	Data *struct {
		Contexts *[]ContextResponse `json:"contexts,omitempty"`
	} `json:"data,omitempty"`
	Success SuccessContextListResponseSuccess `json:"success"`
}

// SuccessContextListResponseSuccess defines model for SuccessContextListResponse.Success.
type SuccessContextListResponseSuccess bool

// SuccessContextResponse defines model for SuccessContextResponse.
type SuccessContextResponse struct {
	Data    *ContextResponse              `json:"data,omitempty"`
	Success SuccessContextResponseSuccess `json:"success"`
}

// SuccessContextResponseSuccess defines model for SuccessContextResponse.Success.
type SuccessContextResponseSuccess bool

// SuccessContextStatsResponse defines model for SuccessContextStatsResponse.
type SuccessContextStatsResponse struct {
	Data    *ContextStatsResponse              `json:"data,omitempty"`
	Success SuccessContextStatsResponseSuccess `json:"success"`
}

// SuccessContextStatsResponseSuccess defines model for SuccessContextStatsResponse.Success.
type SuccessContextStatsResponseSuccess bool

// SuccessCreateAPIKeyResponse defines model for SuccessCreateAPIKeyResponse.
type SuccessCreateAPIKeyResponse struct {
	Data    *CreateAPIKeyResponse              `json:"data,omitempty"`
	Success SuccessCreateAPIKeyResponseSuccess `json:"success"`
}

// SuccessCreateAPIKeyResponseSuccess defines model for SuccessCreateAPIKeyResponse.Success.
type SuccessCreateAPIKeyResponseSuccess bool

// SuccessCreatedResponse defines model for SuccessCreatedResponse.
type SuccessCreatedResponse struct {
	Data *struct {
		Created *bool `json:"created,omitempty"`
	} `json:"data,omitempty"`
	Success SuccessCreatedResponseSuccess `json:"success"`
}

// SuccessCreatedResponseSuccess defines model for SuccessCreatedResponse.Success.
type SuccessCreatedResponseSuccess bool

// SuccessCredentialSourceListResponse defines model for SuccessCredentialSourceListResponse.
type SuccessCredentialSourceListResponse struct {
	Data    *[]CredentialSourceMetadata                `json:"data,omitempty"`
	Success SuccessCredentialSourceListResponseSuccess `json:"success"`
}

// SuccessCredentialSourceListResponseSuccess defines model for SuccessCredentialSourceListResponse.Success.
type SuccessCredentialSourceListResponseSuccess bool

// SuccessCredentialSourceResponse defines model for SuccessCredentialSourceResponse.
type SuccessCredentialSourceResponse struct {
	Data    *CredentialSourceMetadata              `json:"data,omitempty"`
	Success SuccessCredentialSourceResponseSuccess `json:"success"`
}

// SuccessCredentialSourceResponseSuccess defines model for SuccessCredentialSourceResponse.Success.
type SuccessCredentialSourceResponseSuccess bool

// SuccessCurrentAPIKeyResponse defines model for SuccessCurrentAPIKeyResponse.
type SuccessCurrentAPIKeyResponse struct {
	Data *struct {
		ApiKey *CurrentAPIKeyResponse `json:"api_key,omitempty"`
	} `json:"data,omitempty"`
	Success SuccessCurrentAPIKeyResponseSuccess `json:"success"`
}

// SuccessCurrentAPIKeyResponseSuccess defines model for SuccessCurrentAPIKeyResponse.Success.
type SuccessCurrentAPIKeyResponseSuccess bool

// SuccessDeletedResponse defines model for SuccessDeletedResponse.
type SuccessDeletedResponse struct {
	Data *struct {
		Deleted *bool `json:"deleted,omitempty"`
	} `json:"data,omitempty"`
	Success SuccessDeletedResponseSuccess `json:"success"`
}

// SuccessDeletedResponseSuccess defines model for SuccessDeletedResponse.Success.
type SuccessDeletedResponseSuccess bool

// SuccessDeviceLoginPollResponse defines model for SuccessDeviceLoginPollResponse.
type SuccessDeviceLoginPollResponse struct {
	Data    *DeviceLoginPollResponse              `json:"data,omitempty"`
	Success SuccessDeviceLoginPollResponseSuccess `json:"success"`
}

// SuccessDeviceLoginPollResponseSuccess defines model for SuccessDeviceLoginPollResponse.Success.
type SuccessDeviceLoginPollResponseSuccess bool

// SuccessDeviceLoginStartResponse defines model for SuccessDeviceLoginStartResponse.
type SuccessDeviceLoginStartResponse struct {
	Data    *DeviceLoginStartResponse              `json:"data,omitempty"`
	Success SuccessDeviceLoginStartResponseSuccess `json:"success"`
}

// SuccessDeviceLoginStartResponseSuccess defines model for SuccessDeviceLoginStartResponse.Success.
type SuccessDeviceLoginStartResponseSuccess bool

// SuccessEnvelope defines model for SuccessEnvelope.
type SuccessEnvelope struct {
	Data    *interface{}           `json:"data,omitempty"`
	Success SuccessEnvelopeSuccess `json:"success"`
}

// SuccessEnvelopeSuccess defines model for SuccessEnvelope.Success.
type SuccessEnvelopeSuccess bool

// SuccessFileListResponse defines model for SuccessFileListResponse.
type SuccessFileListResponse struct {
	Data *struct {
		Entries *[]FileInfo `json:"entries,omitempty"`
	} `json:"data,omitempty"`
	Success SuccessFileListResponseSuccess `json:"success"`
}

// SuccessFileListResponseSuccess defines model for SuccessFileListResponse.Success.
type SuccessFileListResponseSuccess bool

// SuccessFileStatResponse defines model for SuccessFileStatResponse.
type SuccessFileStatResponse struct {
	Data    *FileInfo                      `json:"data,omitempty"`
	Success SuccessFileStatResponseSuccess `json:"success"`
}

// SuccessFileStatResponseSuccess defines model for SuccessFileStatResponse.Success.
type SuccessFileStatResponseSuccess bool

// SuccessGatewayMetadataResponse defines model for SuccessGatewayMetadataResponse.
type SuccessGatewayMetadataResponse struct {
	Data    *GatewayMetadata                      `json:"data,omitempty"`
	Success SuccessGatewayMetadataResponseSuccess `json:"success"`
}

// SuccessGatewayMetadataResponseSuccess defines model for SuccessGatewayMetadataResponse.Success.
type SuccessGatewayMetadataResponseSuccess bool

// SuccessHealthResponse defines model for SuccessHealthResponse.
type SuccessHealthResponse struct {
	Data *struct {
		Status    *string `json:"status,omitempty"`
		Timestamp *int64  `json:"timestamp,omitempty"`
	} `json:"data,omitempty"`
	Success SuccessHealthResponseSuccess `json:"success"`
}

// SuccessHealthResponseSuccess defines model for SuccessHealthResponse.Success.
type SuccessHealthResponseSuccess bool

// SuccessIdentityListResponse defines model for SuccessIdentityListResponse.
type SuccessIdentityListResponse struct {
	Data *struct {
		Identities *[]Identity `json:"identities,omitempty"`
	} `json:"data,omitempty"`
	Success SuccessIdentityListResponseSuccess `json:"success"`
}

// SuccessIdentityListResponseSuccess defines model for SuccessIdentityListResponse.Success.
type SuccessIdentityListResponseSuccess bool

// SuccessLoginResponse defines model for SuccessLoginResponse.
type SuccessLoginResponse struct {
	Data    *LoginResponse              `json:"data,omitempty"`
	Success SuccessLoginResponseSuccess `json:"success"`
}

// SuccessLoginResponseSuccess defines model for SuccessLoginResponse.Success.
type SuccessLoginResponseSuccess bool

// SuccessMessageResponse defines model for SuccessMessageResponse.
type SuccessMessageResponse struct {
	Data *struct {
		Message *string `json:"message,omitempty"`
	} `json:"data,omitempty"`
	Success SuccessMessageResponseSuccess `json:"success"`
}

// SuccessMessageResponseSuccess defines model for SuccessMessageResponse.Success.
type SuccessMessageResponseSuccess bool

// SuccessMovedResponse defines model for SuccessMovedResponse.
type SuccessMovedResponse struct {
	Data *struct {
		Moved *bool `json:"moved,omitempty"`
	} `json:"data,omitempty"`
	Success SuccessMovedResponseSuccess `json:"success"`
}

// SuccessMovedResponseSuccess defines model for SuccessMovedResponse.Success.
type SuccessMovedResponseSuccess bool

// SuccessPauseSandboxResponse defines model for SuccessPauseSandboxResponse.
type SuccessPauseSandboxResponse struct {
	Data    *PauseSandboxResponse              `json:"data,omitempty"`
	Success SuccessPauseSandboxResponseSuccess `json:"success"`
}

// SuccessPauseSandboxResponseSuccess defines model for SuccessPauseSandboxResponse.Success.
type SuccessPauseSandboxResponseSuccess bool

// SuccessRefreshResponse defines model for SuccessRefreshResponse.
type SuccessRefreshResponse struct {
	Data    *RefreshResponse              `json:"data,omitempty"`
	Success SuccessRefreshResponseSuccess `json:"success"`
}

// SuccessRefreshResponseSuccess defines model for SuccessRefreshResponse.Success.
type SuccessRefreshResponseSuccess bool

// SuccessRegionListResponse defines model for SuccessRegionListResponse.
type SuccessRegionListResponse struct {
	Data *struct {
		Regions *[]Region `json:"regions,omitempty"`
	} `json:"data,omitempty"`
	Success SuccessRegionListResponseSuccess `json:"success"`
}

// SuccessRegionListResponseSuccess defines model for SuccessRegionListResponse.Success.
type SuccessRegionListResponseSuccess bool

// SuccessRegionResponse defines model for SuccessRegionResponse.
type SuccessRegionResponse struct {
	Data    *Region                      `json:"data,omitempty"`
	Success SuccessRegionResponseSuccess `json:"success"`
}

// SuccessRegionResponseSuccess defines model for SuccessRegionResponse.Success.
type SuccessRegionResponseSuccess bool

// SuccessRegistryCredentialsResponse defines model for SuccessRegistryCredentialsResponse.
type SuccessRegistryCredentialsResponse struct {
	Data    *RegistryCredentials                      `json:"data,omitempty"`
	Success SuccessRegistryCredentialsResponseSuccess `json:"success"`
}

// SuccessRegistryCredentialsResponseSuccess defines model for SuccessRegistryCredentialsResponse.Success.
type SuccessRegistryCredentialsResponseSuccess bool

// SuccessResizedResponse defines model for SuccessResizedResponse.
type SuccessResizedResponse struct {
	Data *struct {
		Resized *bool `json:"resized,omitempty"`
	} `json:"data,omitempty"`
	Success SuccessResizedResponseSuccess `json:"success"`
}

// SuccessResizedResponseSuccess defines model for SuccessResizedResponse.Success.
type SuccessResizedResponseSuccess bool

// SuccessRestoreResponse defines model for SuccessRestoreResponse.
type SuccessRestoreResponse struct {
	Data *struct {
		Status *string `json:"status,omitempty"`
	} `json:"data,omitempty"`
	Success SuccessRestoreResponseSuccess `json:"success"`
}

// SuccessRestoreResponseSuccess defines model for SuccessRestoreResponse.Success.
type SuccessRestoreResponseSuccess bool

// SuccessResumeSandboxResponse defines model for SuccessResumeSandboxResponse.
type SuccessResumeSandboxResponse struct {
	Data    *ResumeSandboxResponse              `json:"data,omitempty"`
	Success SuccessResumeSandboxResponseSuccess `json:"success"`
}

// SuccessResumeSandboxResponseSuccess defines model for SuccessResumeSandboxResponse.Success.
type SuccessResumeSandboxResponseSuccess bool

// SuccessSSHPublicKeyListResponse defines model for SuccessSSHPublicKeyListResponse.
type SuccessSSHPublicKeyListResponse struct {
	Data *struct {
		SshKeys *[]SSHPublicKey `json:"ssh_keys,omitempty"`
	} `json:"data,omitempty"`
	Success SuccessSSHPublicKeyListResponseSuccess `json:"success"`
}

// SuccessSSHPublicKeyListResponseSuccess defines model for SuccessSSHPublicKeyListResponse.Success.
type SuccessSSHPublicKeyListResponseSuccess bool

// SuccessSSHPublicKeyResponse defines model for SuccessSSHPublicKeyResponse.
type SuccessSSHPublicKeyResponse struct {
	Data    *SSHPublicKey                      `json:"data,omitempty"`
	Success SuccessSSHPublicKeyResponseSuccess `json:"success"`
}

// SuccessSSHPublicKeyResponseSuccess defines model for SuccessSSHPublicKeyResponse.Success.
type SuccessSSHPublicKeyResponseSuccess bool

// SuccessSandboxListResponse defines model for SuccessSandboxListResponse.
type SuccessSandboxListResponse struct {
	Data *struct {
		// Count Total matching sandboxes
		Count int `json:"count"`

		// HasMore More results available
		HasMore   bool             `json:"has_more"`
		Sandboxes []SandboxSummary `json:"sandboxes"`
	} `json:"data,omitempty"`
	Success SuccessSandboxListResponseSuccess `json:"success"`
}

// SuccessSandboxListResponseSuccess defines model for SuccessSandboxListResponse.Success.
type SuccessSandboxListResponseSuccess bool

// SuccessSandboxNetworkPolicyResponse defines model for SuccessSandboxNetworkPolicyResponse.
type SuccessSandboxNetworkPolicyResponse struct {
	Data    *SandboxNetworkPolicy                      `json:"data,omitempty"`
	Success SuccessSandboxNetworkPolicyResponseSuccess `json:"success"`
}

// SuccessSandboxNetworkPolicyResponseSuccess defines model for SuccessSandboxNetworkPolicyResponse.Success.
type SuccessSandboxNetworkPolicyResponseSuccess bool

// SuccessSandboxResponse defines model for SuccessSandboxResponse.
type SuccessSandboxResponse struct {
	Data    *Sandbox                      `json:"data,omitempty"`
	Success SuccessSandboxResponseSuccess `json:"success"`
}

// SuccessSandboxResponseSuccess defines model for SuccessSandboxResponse.Success.
type SuccessSandboxResponseSuccess bool

// SuccessSandboxServicesResponse defines model for SuccessSandboxServicesResponse.
type SuccessSandboxServicesResponse struct {
	Data *struct {
		ExposureDomain *string                 `json:"exposure_domain,omitempty"`
		SandboxId      string                  `json:"sandbox_id"`
		Services       []SandboxAppServiceView `json:"services"`
	} `json:"data,omitempty"`
	Success SuccessSandboxServicesResponseSuccess `json:"success"`
}

// SuccessSandboxServicesResponseSuccess defines model for SuccessSandboxServicesResponse.Success.
type SuccessSandboxServicesResponseSuccess bool

// SuccessSandboxStatusResponse defines model for SuccessSandboxStatusResponse.
type SuccessSandboxStatusResponse struct {
	Data    *SandboxStatus                      `json:"data,omitempty"`
	Success SuccessSandboxStatusResponseSuccess `json:"success"`
}

// SuccessSandboxStatusResponseSuccess defines model for SuccessSandboxStatusResponse.Success.
type SuccessSandboxStatusResponseSuccess bool

// SuccessSandboxVolumeListResponse defines model for SuccessSandboxVolumeListResponse.
type SuccessSandboxVolumeListResponse struct {
	Data    *[]SandboxVolume                        `json:"data,omitempty"`
	Success SuccessSandboxVolumeListResponseSuccess `json:"success"`
}

// SuccessSandboxVolumeListResponseSuccess defines model for SuccessSandboxVolumeListResponse.Success.
type SuccessSandboxVolumeListResponseSuccess bool

// SuccessSandboxVolumeResponse defines model for SuccessSandboxVolumeResponse.
type SuccessSandboxVolumeResponse struct {
	Data    *SandboxVolume                      `json:"data,omitempty"`
	Success SuccessSandboxVolumeResponseSuccess `json:"success"`
}

// SuccessSandboxVolumeResponseSuccess defines model for SuccessSandboxVolumeResponse.Success.
type SuccessSandboxVolumeResponseSuccess bool

// SuccessSignaledResponse defines model for SuccessSignaledResponse.
type SuccessSignaledResponse struct {
	Data *struct {
		Signaled *bool `json:"signaled,omitempty"`
	} `json:"data,omitempty"`
	Success SuccessSignaledResponseSuccess `json:"success"`
}

// SuccessSignaledResponseSuccess defines model for SuccessSignaledResponse.Success.
type SuccessSignaledResponseSuccess bool

// SuccessSnapshotListResponse defines model for SuccessSnapshotListResponse.
type SuccessSnapshotListResponse struct {
	Data    *[]Snapshot                        `json:"data,omitempty"`
	Success SuccessSnapshotListResponseSuccess `json:"success"`
}

// SuccessSnapshotListResponseSuccess defines model for SuccessSnapshotListResponse.Success.
type SuccessSnapshotListResponseSuccess bool

// SuccessSnapshotResponse defines model for SuccessSnapshotResponse.
type SuccessSnapshotResponse struct {
	Data    *Snapshot                      `json:"data,omitempty"`
	Success SuccessSnapshotResponseSuccess `json:"success"`
}

// SuccessSnapshotResponseSuccess defines model for SuccessSnapshotResponse.Success.
type SuccessSnapshotResponseSuccess bool

// SuccessTeamListResponse defines model for SuccessTeamListResponse.
type SuccessTeamListResponse struct {
	Data *struct {
		Teams *[]Team `json:"teams,omitempty"`
	} `json:"data,omitempty"`
	Success SuccessTeamListResponseSuccess `json:"success"`
}

// SuccessTeamListResponseSuccess defines model for SuccessTeamListResponse.Success.
type SuccessTeamListResponseSuccess bool

// SuccessTeamMemberListResponse defines model for SuccessTeamMemberListResponse.
type SuccessTeamMemberListResponse struct {
	Data *struct {
		Members *[]TeamMember `json:"members,omitempty"`
	} `json:"data,omitempty"`
	Success SuccessTeamMemberListResponseSuccess `json:"success"`
}

// SuccessTeamMemberListResponseSuccess defines model for SuccessTeamMemberListResponse.Success.
type SuccessTeamMemberListResponseSuccess bool

// SuccessTeamMemberResponse defines model for SuccessTeamMemberResponse.
type SuccessTeamMemberResponse struct {
	Data    *TeamMember                      `json:"data,omitempty"`
	Success SuccessTeamMemberResponseSuccess `json:"success"`
}

// SuccessTeamMemberResponseSuccess defines model for SuccessTeamMemberResponse.Success.
type SuccessTeamMemberResponseSuccess bool

// SuccessTeamQuotaResponse defines model for SuccessTeamQuotaResponse.
type SuccessTeamQuotaResponse struct {
	Data    *TeamQuota                      `json:"data,omitempty"`
	Success SuccessTeamQuotaResponseSuccess `json:"success"`
}

// SuccessTeamQuotaResponseSuccess defines model for SuccessTeamQuotaResponse.Success.
type SuccessTeamQuotaResponseSuccess bool

// SuccessTeamResponse defines model for SuccessTeamResponse.
type SuccessTeamResponse struct {
	Data    *Team                      `json:"data,omitempty"`
	Success SuccessTeamResponseSuccess `json:"success"`
}

// SuccessTeamResponseSuccess defines model for SuccessTeamResponse.Success.
type SuccessTeamResponseSuccess bool

// SuccessTemplateListResponse defines model for SuccessTemplateListResponse.
type SuccessTemplateListResponse struct {
	Data *struct {
		Count     *int        `json:"count,omitempty"`
		Templates *[]Template `json:"templates,omitempty"`
	} `json:"data,omitempty"`
	Success SuccessTemplateListResponseSuccess `json:"success"`
}

// SuccessTemplateListResponseSuccess defines model for SuccessTemplateListResponse.Success.
type SuccessTemplateListResponseSuccess bool

// SuccessTemplateResponse defines model for SuccessTemplateResponse.
type SuccessTemplateResponse struct {
	Data    *Template                      `json:"data,omitempty"`
	Success SuccessTemplateResponseSuccess `json:"success"`
}

// SuccessTemplateResponseSuccess defines model for SuccessTemplateResponse.Success.
type SuccessTemplateResponseSuccess bool

// SuccessUserResponse defines model for SuccessUserResponse.
type SuccessUserResponse struct {
	Data    *User                      `json:"data,omitempty"`
	Success SuccessUserResponseSuccess `json:"success"`
}

// SuccessUserResponseSuccess defines model for SuccessUserResponse.Success.
type SuccessUserResponseSuccess bool

// SuccessVolumeFileArchiveImportResponse defines model for SuccessVolumeFileArchiveImportResponse.
type SuccessVolumeFileArchiveImportResponse struct {
	Data    *VolumeFileArchiveImportResponse              `json:"data,omitempty"`
	Success SuccessVolumeFileArchiveImportResponseSuccess `json:"success"`
}

// SuccessVolumeFileArchiveImportResponseSuccess defines model for SuccessVolumeFileArchiveImportResponse.Success.
type SuccessVolumeFileArchiveImportResponseSuccess bool

// SuccessWrittenResponse defines model for SuccessWrittenResponse.
type SuccessWrittenResponse struct {
	Data *struct {
		Written *bool `json:"written,omitempty"`
	} `json:"data,omitempty"`
	Success SuccessWrittenResponseSuccess `json:"success"`
}

// SuccessWrittenResponseSuccess defines model for SuccessWrittenResponse.Success.
type SuccessWrittenResponseSuccess bool

// TCPSocketAction defines model for TCPSocketAction.
type TCPSocketAction struct {
	Host *string   `json:"host,omitempty"`
	Port ProbePort `json:"port"`
}

// TLSClientCertificateProjection Client certificate projection used for TLS terminate-reoriginate auth.
type TLSClientCertificateProjection = map[string]interface{}

// Team defines model for Team.
type Team struct {
	CreatedAt    time.Time `json:"created_at"`
	HomeRegionId *string   `json:"home_region_id"`
	Id           string    `json:"id"`
	Name         string    `json:"name"`
	OwnerId      *string   `json:"owner_id"`
	Slug         string    `json:"slug"`
	UpdatedAt    time.Time `json:"updated_at"`
}

// TeamMember defines model for TeamMember.
type TeamMember struct {
	Id       string    `json:"id"`
	JoinedAt time.Time `json:"joined_at"`
	Role     string    `json:"role"`
	TeamId   string    `json:"team_id"`
	UserId   string    `json:"user_id"`
}

// TeamQuota defines model for TeamQuota.
type TeamQuota struct {
	Dimension  QuotaDimension `json:"dimension"`
	LimitValue *int64         `json:"limit_value"`
	TeamId     string         `json:"team_id"`
}

// Template defines model for Template.
type Template struct {
	CreatedAt  time.Time              `json:"created_at"`
	Scope      string                 `json:"scope"`
	Spec       SandboxTemplateSpec    `json:"spec"`
	Status     *SandboxTemplateStatus `json:"status,omitempty"`
	TeamId     *string                `json:"team_id,omitempty"`
	TemplateId string                 `json:"template_id"`
	UpdatedAt  time.Time              `json:"updated_at"`
	UserId     *string                `json:"user_id,omitempty"`
}

// TemplateCreateRequest defines model for TemplateCreateRequest.
type TemplateCreateRequest struct {
	Spec       SandboxTemplateSpec `json:"spec"`
	TemplateId string              `json:"template_id"`
}

// TemplateUpdateRequest defines model for TemplateUpdateRequest.
type TemplateUpdateRequest struct {
	Spec SandboxTemplateSpec `json:"spec"`
}

// Toleration defines model for Toleration.
type Toleration struct {
	Effect   *string `json:"effect,omitempty"`
	Key      *string `json:"key,omitempty"`
	Operator *string `json:"operator,omitempty"`
	Value    *string `json:"value,omitempty"`
}

// TrafficRule defines model for TrafficRule.
type TrafficRule struct {
	Action TrafficRuleAction `json:"action"`

	// AppProtocols Classified application protocols matched by the rule.
	AppProtocols *[]TrafficRuleAppProtocol `json:"appProtocols,omitempty"`

	// Cidrs CIDR match list for the rule.
	Cidrs *[]string `json:"cidrs,omitempty"`

	// Domains Domain match list for the rule.
	Domains *[]string `json:"domains,omitempty"`

	// Name Optional stable identifier used for merge and replacement.
	Name *string `json:"name,omitempty"`

	// Ports Port/protocol constraints for the rule.
	Ports *[]PortSpec `json:"ports,omitempty"`
}

// TrafficRuleAction defines model for TrafficRuleAction.
type TrafficRuleAction string

// TrafficRuleAppProtocol defines model for TrafficRuleAppProtocol.
type TrafficRuleAppProtocol string

// UpdateRegionRequest defines model for UpdateRegionRequest.
type UpdateRegionRequest struct {
	DisplayName        *string `json:"display_name,omitempty"`
	Enabled            *bool   `json:"enabled,omitempty"`
	MeteringExportUrl  *string `json:"metering_export_url"`
	RegionalGatewayUrl *string `json:"regional_gateway_url,omitempty"`
}

// UpdateTeamMemberRequest defines model for UpdateTeamMemberRequest.
type UpdateTeamMemberRequest struct {
	Role UpdateTeamMemberRequestRole `json:"role"`
}

// UpdateTeamMemberRequestRole defines model for UpdateTeamMemberRequest.Role.
type UpdateTeamMemberRequestRole string

// UpdateTeamRequest defines model for UpdateTeamRequest.
type UpdateTeamRequest struct {
	Name *string `json:"name,omitempty"`
	Slug *string `json:"slug,omitempty"`
}

// UpdateUserRequest defines model for UpdateUserRequest.
type UpdateUserRequest struct {
	AvatarUrl *string `json:"avatar_url,omitempty"`
	Name      *string `json:"name,omitempty"`
}

// User defines model for User.
type User struct {
	AvatarUrl     *string             `json:"avatar_url"`
	CreatedAt     time.Time           `json:"created_at"`
	Email         openapi_types.Email `json:"email"`
	EmailVerified bool                `json:"email_verified"`
	Id            string              `json:"id"`
	IsAdmin       bool                `json:"is_admin"`
	Name          string              `json:"name"`
	UpdatedAt     time.Time           `json:"updated_at"`
}

// UsernamePasswordProjection Username/password projection used for SOCKS5 and MQTT auth handshakes.
type UsernamePasswordProjection = map[string]interface{}

// VolumeAccessMode Access mode for sandbox volumes. Enforcement is scoped to storage-proxy instances. RWO allows read-write mounts on a single instance; ROX allows read-only mounts across instances; RWX allows read-write mounts across instances.
type VolumeAccessMode string

// VolumeFileArchiveImportResponse defines model for VolumeFileArchiveImportResponse.
type VolumeFileArchiveImportResponse struct {
	Bytes       int64 `json:"bytes"`
	Directories int64 `json:"directories"`
	Files       int64 `json:"files"`
	Symlinks    int64 `json:"symlinks"`
}

// VolumeMountSpec defines model for VolumeMountSpec.
type VolumeMountSpec struct {
	MountPath string `json:"mountPath"`
	Name      string `json:"name"`
	ReadOnly  *bool  `json:"readOnly,omitempty"`
}

// WarmProcessSpec defines model for WarmProcessSpec.
type WarmProcessSpec struct {
	Alias   *string             `json:"alias,omitempty"`
	Command *[]string           `json:"command,omitempty"`
	Cwd     *string             `json:"cwd,omitempty"`
	EnvVars *map[string]string  `json:"envVars,omitempty"`
	Name    *string             `json:"name,omitempty"`
	Probes  *SandboxProbeSet    `json:"probes,omitempty"`
	Type    WarmProcessSpecType `json:"type"`
}

// WarmProcessSpecType defines model for WarmProcessSpec.Type.
type WarmProcessSpecType string

// WebLoginExchangeRequest defines model for WebLoginExchangeRequest.
type WebLoginExchangeRequest struct {
	// LoginCode Short-lived one-time code returned to the web login callback.
	LoginCode string `json:"login_code"`

	// ReturnUrl Exact return URL used when the login code was created.
	ReturnUrl string `json:"return_url"`
}

// WebhookConfig Per-sandbox webhook configuration. Sandbox0 delivers webhook events at least once and consumers should deduplicate by event_id. For sandbox lifecycle events, procd persists signed delivery records to a manager-owned SandboxVolume outside the workspace before dispatch; manager also emits sandbox.deleted during pod deletion cleanup.
type WebhookConfig struct {
	// Secret Optional. Shared secret used to sign webhook payloads.
	Secret *string `json:"secret,omitempty"`

	// Url Required when webhook is enabled. Target URL that receives event callbacks.
	Url *string `json:"url,omitempty"`

	// WatchDir Optional. When set, procd subscribes to file events under this directory (same semantics as the file watch WebSocket API) and emits file.modified events.
	WatchDir *string `json:"watch_dir,omitempty"`
}

// WeightedPodAffinityTerm defines model for WeightedPodAffinityTerm.
type WeightedPodAffinityTerm struct {
	PodAffinityTerm PodAffinityTerm `json:"podAffinityTerm"`
	Weight          int32           `json:"weight"`
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

// GetApiV1SandboxesParams defines parameters for GetApiV1Sandboxes.
type GetApiV1SandboxesParams struct {
	// Status Filter by sandbox status
	Status *SandboxLifecycleStatus `form:"status,omitempty" json:"status,omitempty"`

	// TemplateId Filter by template ID
	TemplateId *string `form:"template_id,omitempty" json:"template_id,omitempty"`

	// Paused Filter by paused state
	Paused *bool `form:"paused,omitempty" json:"paused,omitempty"`

	// Limit Maximum number of results per page
	Limit *int `form:"limit,omitempty" json:"limit,omitempty"`

	// Offset Pagination offset
	Offset *int `form:"offset,omitempty" json:"offset,omitempty"`
}

// DeleteApiV1SandboxesIdFilesParams defines parameters for DeleteApiV1SandboxesIdFiles.
type DeleteApiV1SandboxesIdFilesParams struct {
	Path FilePath `form:"path" json:"path"`
}

// GetApiV1SandboxesIdFilesParams defines parameters for GetApiV1SandboxesIdFiles.
type GetApiV1SandboxesIdFilesParams struct {
	Path FilePath `form:"path" json:"path"`
}

// PostApiV1SandboxesIdFilesParams defines parameters for PostApiV1SandboxesIdFiles.
type PostApiV1SandboxesIdFilesParams struct {
	Path      FilePath        `form:"path" json:"path"`
	Mkdir     *QueryMkdir     `form:"mkdir,omitempty" json:"mkdir,omitempty"`
	Recursive *QueryRecursive `form:"recursive,omitempty" json:"recursive,omitempty"`
}

// GetApiV1SandboxesIdFilesListParams defines parameters for GetApiV1SandboxesIdFilesList.
type GetApiV1SandboxesIdFilesListParams struct {
	Path FilePath `form:"path" json:"path"`
}

// GetApiV1SandboxesIdFilesStatParams defines parameters for GetApiV1SandboxesIdFilesStat.
type GetApiV1SandboxesIdFilesStatParams struct {
	Path FilePath `form:"path" json:"path"`
}

// GetApiV1SandboxesIdLogsParams defines parameters for GetApiV1SandboxesIdLogs.
type GetApiV1SandboxesIdLogsParams struct {
	// Container Pod container name. Defaults to the sandbox main container.
	Container *string `form:"container,omitempty" json:"container,omitempty"`

	// TailLines Maximum number of Kubernetes log lines read from the end of the log before procd service log filtering.
	TailLines *int64 `form:"tail_lines,omitempty" json:"tail_lines,omitempty"`

	// LimitBytes Maximum response log payload bytes read from Kubernetes. Defaults only apply when follow is false.
	LimitBytes *int64 `form:"limit_bytes,omitempty" json:"limit_bytes,omitempty"`

	// Follow Stream logs as text/plain until the client disconnects. When false, return a text/plain snapshot.
	Follow *bool `form:"follow,omitempty" json:"follow,omitempty"`

	// Previous Return logs for the previously terminated container instance.
	Previous *bool `form:"previous,omitempty" json:"previous,omitempty"`

	// Timestamps Include Kubernetes log timestamps when available.
	Timestamps *bool `form:"timestamps,omitempty" json:"timestamps,omitempty"`

	// SinceSeconds Only return logs newer than this many seconds.
	SinceSeconds *int64 `form:"since_seconds,omitempty" json:"since_seconds,omitempty"`
}

// DeleteApiV1SandboxvolumesIdParams defines parameters for DeleteApiV1SandboxvolumesId.
type DeleteApiV1SandboxvolumesIdParams struct {
	// Force Force delete even if volume has active mounts
	Force *bool `form:"force,omitempty" json:"force,omitempty"`
}

// DeleteApiV1SandboxvolumesIdFilesParams defines parameters for DeleteApiV1SandboxvolumesIdFiles.
type DeleteApiV1SandboxvolumesIdFilesParams struct {
	Path FilePath `form:"path" json:"path"`
}

// GetApiV1SandboxvolumesIdFilesParams defines parameters for GetApiV1SandboxvolumesIdFiles.
type GetApiV1SandboxvolumesIdFilesParams struct {
	Path FilePath `form:"path" json:"path"`
}

// PostApiV1SandboxvolumesIdFilesParams defines parameters for PostApiV1SandboxvolumesIdFiles.
type PostApiV1SandboxvolumesIdFilesParams struct {
	Path      FilePath        `form:"path" json:"path"`
	Mkdir     *QueryMkdir     `form:"mkdir,omitempty" json:"mkdir,omitempty"`
	Recursive *QueryRecursive `form:"recursive,omitempty" json:"recursive,omitempty"`
}

// PutApiV1SandboxvolumesIdFilesArchiveParams defines parameters for PutApiV1SandboxvolumesIdFilesArchive.
type PutApiV1SandboxvolumesIdFilesArchiveParams struct {
	Path FilePath `form:"path" json:"path"`
}

// GetApiV1SandboxvolumesIdFilesListParams defines parameters for GetApiV1SandboxvolumesIdFilesList.
type GetApiV1SandboxvolumesIdFilesListParams struct {
	Path FilePath `form:"path" json:"path"`
}

// GetApiV1SandboxvolumesIdFilesStatParams defines parameters for GetApiV1SandboxvolumesIdFilesStat.
type GetApiV1SandboxvolumesIdFilesStatParams struct {
	Path FilePath `form:"path" json:"path"`
}

// GetAuthOidcProviderCallbackParams defines parameters for GetAuthOidcProviderCallback.
type GetAuthOidcProviderCallbackParams struct {
	Code  string `form:"code" json:"code"`
	State string `form:"state" json:"state"`
}

// GetAuthOidcProviderLoginParams defines parameters for GetAuthOidcProviderLogin.
type GetAuthOidcProviderLoginParams struct {
	ReturnUrl *string `form:"return_url,omitempty" json:"return_url,omitempty"`

	// WebLogin When true, the OIDC callback redirects to return_url with a short-lived login_code for server-side exchange.
	WebLogin *bool `form:"web_login,omitempty" json:"web_login,omitempty"`
}

// PostApiKeysJSONRequestBody defines body for PostApiKeys for application/json ContentType.
type PostApiKeysJSONRequestBody = CreateAPIKeyRequest

// PostApiV1CredentialSourcesJSONRequestBody defines body for PostApiV1CredentialSources for application/json ContentType.
type PostApiV1CredentialSourcesJSONRequestBody = CredentialSourceWriteRequest

// PutApiV1CredentialSourcesNameJSONRequestBody defines body for PutApiV1CredentialSourcesName for application/json ContentType.
type PutApiV1CredentialSourcesNameJSONRequestBody = CredentialSourceWriteRequest

// PutApiV1QuotasDimensionJSONRequestBody defines body for PutApiV1QuotasDimension for application/json ContentType.
type PutApiV1QuotasDimensionJSONRequestBody = PutTeamQuotaRequest

// PostApiV1RegistryCredentialsJSONRequestBody defines body for PostApiV1RegistryCredentials for application/json ContentType.
type PostApiV1RegistryCredentialsJSONRequestBody = RegistryCredentialsRequest

// PostApiV1SandboxesJSONRequestBody defines body for PostApiV1Sandboxes for application/json ContentType.
type PostApiV1SandboxesJSONRequestBody = ClaimRequest

// PutApiV1SandboxesIdJSONRequestBody defines body for PutApiV1SandboxesId for application/json ContentType.
type PutApiV1SandboxesIdJSONRequestBody = SandboxUpdateRequest

// PostApiV1SandboxesIdContextsJSONRequestBody defines body for PostApiV1SandboxesIdContexts for application/json ContentType.
type PostApiV1SandboxesIdContextsJSONRequestBody = CreateContextRequest

// PostApiV1SandboxesIdContextsCtxIdExecJSONRequestBody defines body for PostApiV1SandboxesIdContextsCtxIdExec for application/json ContentType.
type PostApiV1SandboxesIdContextsCtxIdExecJSONRequestBody = ContextInputRequest

// PostApiV1SandboxesIdContextsCtxIdInputJSONRequestBody defines body for PostApiV1SandboxesIdContextsCtxIdInput for application/json ContentType.
type PostApiV1SandboxesIdContextsCtxIdInputJSONRequestBody = ContextInputRequest

// PostApiV1SandboxesIdContextsCtxIdResizeJSONRequestBody defines body for PostApiV1SandboxesIdContextsCtxIdResize for application/json ContentType.
type PostApiV1SandboxesIdContextsCtxIdResizeJSONRequestBody = ResizeContextRequest

// PostApiV1SandboxesIdContextsCtxIdSignalJSONRequestBody defines body for PostApiV1SandboxesIdContextsCtxIdSignal for application/json ContentType.
type PostApiV1SandboxesIdContextsCtxIdSignalJSONRequestBody = SignalContextRequest

// PostApiV1SandboxesIdFilesMoveJSONRequestBody defines body for PostApiV1SandboxesIdFilesMove for application/json ContentType.
type PostApiV1SandboxesIdFilesMoveJSONRequestBody = MoveFileRequest

// PutApiV1SandboxesIdNetworkJSONRequestBody defines body for PutApiV1SandboxesIdNetwork for application/json ContentType.
type PutApiV1SandboxesIdNetworkJSONRequestBody = SandboxNetworkPolicy

// PostApiV1SandboxesIdRefreshJSONRequestBody defines body for PostApiV1SandboxesIdRefresh for application/json ContentType.
type PostApiV1SandboxesIdRefreshJSONRequestBody = SandboxRefreshRequest

// PutApiV1SandboxesIdServicesJSONRequestBody defines body for PutApiV1SandboxesIdServices for application/json ContentType.
type PutApiV1SandboxesIdServicesJSONRequestBody = SandboxServicesUpdateRequest

// PostApiV1SandboxvolumesJSONRequestBody defines body for PostApiV1Sandboxvolumes for application/json ContentType.
type PostApiV1SandboxvolumesJSONRequestBody = CreateSandboxVolumeRequest

// PostApiV1SandboxvolumesIdFilesMoveJSONRequestBody defines body for PostApiV1SandboxvolumesIdFilesMove for application/json ContentType.
type PostApiV1SandboxvolumesIdFilesMoveJSONRequestBody = MoveFileRequest

// PostApiV1SandboxvolumesIdForkJSONRequestBody defines body for PostApiV1SandboxvolumesIdFork for application/json ContentType.
type PostApiV1SandboxvolumesIdForkJSONRequestBody = ForkVolumeRequest

// PostApiV1SandboxvolumesIdSnapshotsJSONRequestBody defines body for PostApiV1SandboxvolumesIdSnapshots for application/json ContentType.
type PostApiV1SandboxvolumesIdSnapshotsJSONRequestBody = CreateSnapshotRequest

// PostApiV1TemplatesJSONRequestBody defines body for PostApiV1Templates for application/json ContentType.
type PostApiV1TemplatesJSONRequestBody = TemplateCreateRequest

// PutApiV1TemplatesIdJSONRequestBody defines body for PutApiV1TemplatesId for application/json ContentType.
type PutApiV1TemplatesIdJSONRequestBody = TemplateUpdateRequest

// PostAuthChangePasswordJSONRequestBody defines body for PostAuthChangePassword for application/json ContentType.
type PostAuthChangePasswordJSONRequestBody = ChangePasswordRequest

// PostAuthLoginJSONRequestBody defines body for PostAuthLogin for application/json ContentType.
type PostAuthLoginJSONRequestBody = LoginRequest

// PostAuthOidcProviderDevicePollJSONRequestBody defines body for PostAuthOidcProviderDevicePoll for application/json ContentType.
type PostAuthOidcProviderDevicePollJSONRequestBody = DeviceLoginPollRequest

// PostAuthRefreshJSONRequestBody defines body for PostAuthRefresh for application/json ContentType.
type PostAuthRefreshJSONRequestBody = RefreshRequest

// PostAuthRegisterJSONRequestBody defines body for PostAuthRegister for application/json ContentType.
type PostAuthRegisterJSONRequestBody = RegisterRequest

// PostAuthWebLoginExchangeJSONRequestBody defines body for PostAuthWebLoginExchange for application/json ContentType.
type PostAuthWebLoginExchangeJSONRequestBody = WebLoginExchangeRequest

// PostRegionsJSONRequestBody defines body for PostRegions for application/json ContentType.
type PostRegionsJSONRequestBody = CreateRegionRequest

// PutRegionsIdJSONRequestBody defines body for PutRegionsId for application/json ContentType.
type PutRegionsIdJSONRequestBody = UpdateRegionRequest

// PostTeamsJSONRequestBody defines body for PostTeams for application/json ContentType.
type PostTeamsJSONRequestBody = CreateTeamRequest

// PutTeamsIdJSONRequestBody defines body for PutTeamsId for application/json ContentType.
type PutTeamsIdJSONRequestBody = UpdateTeamRequest

// PostTeamsIdMembersJSONRequestBody defines body for PostTeamsIdMembers for application/json ContentType.
type PostTeamsIdMembersJSONRequestBody = AddTeamMemberRequest

// PutTeamsIdMembersUserIdJSONRequestBody defines body for PutTeamsIdMembersUserId for application/json ContentType.
type PutTeamsIdMembersUserIdJSONRequestBody = UpdateTeamMemberRequest

// PutUsersMeJSONRequestBody defines body for PutUsersMe for application/json ContentType.
type PutUsersMeJSONRequestBody = UpdateUserRequest

// PostUsersMeSshKeysJSONRequestBody defines body for PostUsersMeSshKeys for application/json ContentType.
type PostUsersMeSshKeysJSONRequestBody = CreateSSHPublicKeyRequest
