// Copyright IBM Corp. 2020, 2026
// SPDX-License-Identifier: MPL-2.0

// Code generated by protoc-gen-go. DO NOT EDIT.
// versions:
// 	protoc-gen-go v1.36.11
// 	protoc        (unknown)
// source: controller/api/resources/sessions/v1/session.proto

package sessions

import (
	scopes "github.com/hashicorp/boundary/sdk/pbs/controller/api/resources/scopes"
	protoreflect "google.golang.org/protobuf/reflect/protoreflect"
	protoimpl "google.golang.org/protobuf/runtime/protoimpl"
	timestamppb "google.golang.org/protobuf/types/known/timestamppb"
	reflect "reflect"
	sync "sync"
	unsafe "unsafe"
)

const (
	// Verify that this generated code is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
	// Verify that runtime/protoimpl is sufficiently up-to-date.
	_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
)

type SessionState struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// The status of the Session, e.g. "pending", "active", "canceling", "terminated".
	Status string `protobuf:"bytes,10,opt,name=status,proto3" json:"status,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"`
	// Output only. The time the Session entered this state.
	StartTime *timestamppb.Timestamp `protobuf:"bytes,20,opt,name=start_time,proto3" json:"start_time,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"`
	// Output only. The time the Session stopped being in this state.
	EndTime       *timestamppb.Timestamp `protobuf:"bytes,30,opt,name=end_time,proto3" json:"end_time,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *SessionState) Reset() {
	*x = SessionState{}
	mi := &file_controller_api_resources_sessions_v1_session_proto_msgTypes[0]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *SessionState) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*SessionState) ProtoMessage() {}

func (x *SessionState) ProtoReflect() protoreflect.Message {
	mi := &file_controller_api_resources_sessions_v1_session_proto_msgTypes[0]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use SessionState.ProtoReflect.Descriptor instead.
func (*SessionState) Descriptor() ([]byte, []int) {
	return file_controller_api_resources_sessions_v1_session_proto_rawDescGZIP(), []int{0}
}

func (x *SessionState) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *SessionState) GetStartTime() *timestamppb.Timestamp {
	if x != nil {
		return x.StartTime
	}
	return nil
}

func (x *SessionState) GetEndTime() *timestamppb.Timestamp {
	if x != nil {
		return x.EndTime
	}
	return nil
}

// Connection contains information about a specific connection in a session
type Connection struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// client_tcp_address of the connection
	ClientTcpAddress string `protobuf:"bytes,3,opt,name=client_tcp_address,json=clientTcpAddress,proto3" json:"client_tcp_address,omitempty" class:"public"` // @gotags: `class:"public"`
	// client_tcp_port of the connection
	ClientTcpPort uint32 `protobuf:"varint,4,opt,name=client_tcp_port,json=clientTcpPort,proto3" json:"client_tcp_port,omitempty" class:"public"` // @gotags: `class:"public"`
	// endpoint_tcp_address of the connection
	EndpointTcpAddress string `protobuf:"bytes,5,opt,name=endpoint_tcp_address,json=endpointTcpAddress,proto3" json:"endpoint_tcp_address,omitempty" class:"public"` // @gotags: `class:"public"`
	// endpoint_tcp_port of the connection
	EndpointTcpPort uint32 `protobuf:"varint,6,opt,name=endpoint_tcp_port,json=endpointTcpPort,proto3" json:"endpoint_tcp_port,omitempty" class:"public"` // @gotags: `class:"public"`
	// bytes_up of the connection
	BytesUp int64 `protobuf:"varint,7,opt,name=bytes_up,json=bytesUp,proto3" json:"bytes_up,omitempty" class:"public"` // @gotags: `class:"public"`
	// bytes_down of the connection
	BytesDown int64 `protobuf:"varint,8,opt,name=bytes_down,json=bytesDown,proto3" json:"bytes_down,omitempty" class:"public"` // @gotags: `class:"public"`
	// closed_reason of the connection
	ClosedReason  string `protobuf:"bytes,9,opt,name=closed_reason,json=closedReason,proto3" json:"closed_reason,omitempty" class:"public"` // @gotags: `class:"public"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Connection) Reset() {
	*x = Connection{}
	mi := &file_controller_api_resources_sessions_v1_session_proto_msgTypes[1]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Connection) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Connection) ProtoMessage() {}

func (x *Connection) ProtoReflect() protoreflect.Message {
	mi := &file_controller_api_resources_sessions_v1_session_proto_msgTypes[1]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Connection.ProtoReflect.Descriptor instead.
func (*Connection) Descriptor() ([]byte, []int) {
	return file_controller_api_resources_sessions_v1_session_proto_rawDescGZIP(), []int{1}
}

func (x *Connection) GetClientTcpAddress() string {
	if x != nil {
		return x.ClientTcpAddress
	}
	return ""
}

func (x *Connection) GetClientTcpPort() uint32 {
	if x != nil {
		return x.ClientTcpPort
	}
	return 0
}

func (x *Connection) GetEndpointTcpAddress() string {
	if x != nil {
		return x.EndpointTcpAddress
	}
	return ""
}

func (x *Connection) GetEndpointTcpPort() uint32 {
	if x != nil {
		return x.EndpointTcpPort
	}
	return 0
}

func (x *Connection) GetBytesUp() int64 {
	if x != nil {
		return x.BytesUp
	}
	return 0
}

func (x *Connection) GetBytesDown() int64 {
	if x != nil {
		return x.BytesDown
	}
	return 0
}

func (x *Connection) GetClosedReason() string {
	if x != nil {
		return x.ClosedReason
	}
	return ""
}

// Session contains all fields related to a Session resource
type Session struct {
	state protoimpl.MessageState `protogen:"open.v1"`
	// Output only. The ID of the Session.
	Id string `protobuf:"bytes,10,opt,name=id,proto3" json:"id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"`
	// Output only. The ID of the Target that created this Session.
	TargetId string `protobuf:"bytes,20,opt,name=target_id,proto3" json:"target_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"`
	// Output only. Scope information for this resource.
	Scope *scopes.ScopeInfo `protobuf:"bytes,30,opt,name=scope,proto3" json:"scope,omitempty"`
	// Output only. The time this resource was created.
	CreatedTime *timestamppb.Timestamp `protobuf:"bytes,60,opt,name=created_time,proto3" json:"created_time,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"`
	// Output only. The time this resource was last updated.
	UpdatedTime *timestamppb.Timestamp `protobuf:"bytes,70,opt,name=updated_time,proto3" json:"updated_time,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"`
	// Version is used when canceling this Session to ensure that the operation is acting on a known session state.
	Version uint32 `protobuf:"varint,80,opt,name=version,proto3" json:"version,omitempty" class:"public"` // @gotags: `class:"public"`
	// Output only. Type of the Session (e.g. tcp).
	Type string `protobuf:"bytes,90,opt,name=type,proto3" json:"type,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"`
	// Output only. After this time the connection will be expired, e.g. forcefully terminated.
	ExpirationTime *timestamppb.Timestamp `protobuf:"bytes,100,opt,name=expiration_time,proto3" json:"expiration_time,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"`
	// Output only. The ID of the Auth Token used to authenticate.
	AuthTokenId string `protobuf:"bytes,110,opt,name=auth_token_id,proto3" json:"auth_token_id,omitempty" class:"public"` // @gotags: `class:"public"`
	// Output only. The ID of the User that requested the Session.
	UserId string `protobuf:"bytes,120,opt,name=user_id,proto3" json:"user_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"`
	// Output only. The Host Set sourcing the Host for this Session.
	HostSetId string `protobuf:"bytes,130,opt,name=host_set_id,proto3" json:"host_set_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"`
	// Output only. The Host used by the Session.
	HostId string `protobuf:"bytes,140,opt,name=host_id,proto3" json:"host_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"`
	// Output only. The Scope of the Session.
	ScopeId string `protobuf:"bytes,150,opt,name=scope_id,proto3" json:"scope_id,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"`
	// Output only. The endpoint of the Session; that is, the address to which the worker is proxying data.
	Endpoint string `protobuf:"bytes,160,opt,name=endpoint,proto3" json:"endpoint,omitempty" class:"public"` // @gotags: `class:"public"`
	// Output only. The states of this Session in descending order from the current state to the first.
	States []*SessionState `protobuf:"bytes,170,rep,name=states,proto3" json:"states,omitempty"`
	// Output only. The current status of this Session.
	Status string `protobuf:"bytes,180,opt,name=status,proto3" json:"status,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"`
	// Output only. The certificate generated for the session. Raw DER bytes.
	Certificate []byte `protobuf:"bytes,200,opt,name=certificate,proto3" json:"certificate,omitempty" class:"public"` // @gotags: `class:"public"`
	// Output only. If the session is terminated, this provides a short description as to why.
	TerminationReason string `protobuf:"bytes,210,opt,name=termination_reason,proto3" json:"termination_reason,omitempty" class:"public" eventstream:"observation"` // @gotags: `class:"public" eventstream:"observation"`
	// Output only. The available actions on this resource for this user.
	AuthorizedActions []string `protobuf:"bytes,300,rep,name=authorized_actions,proto3" json:"authorized_actions,omitempty" class:"public"` // @gotags: `class:"public"`
	// Output only. The associated connections with this session.
	Connections   []*Connection `protobuf:"bytes,310,rep,name=connections,proto3" json:"connections,omitempty"`
	unknownFields protoimpl.UnknownFields
	sizeCache     protoimpl.SizeCache
}

func (x *Session) Reset() {
	*x = Session{}
	mi := &file_controller_api_resources_sessions_v1_session_proto_msgTypes[2]
	ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
	ms.StoreMessageInfo(mi)
}

func (x *Session) String() string {
	return protoimpl.X.MessageStringOf(x)
}

func (*Session) ProtoMessage() {}

func (x *Session) ProtoReflect() protoreflect.Message {
	mi := &file_controller_api_resources_sessions_v1_session_proto_msgTypes[2]
	if x != nil {
		ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
		if ms.LoadMessageInfo() == nil {
			ms.StoreMessageInfo(mi)
		}
		return ms
	}
	return mi.MessageOf(x)
}

// Deprecated: Use Session.ProtoReflect.Descriptor instead.
func (*Session) Descriptor() ([]byte, []int) {
	return file_controller_api_resources_sessions_v1_session_proto_rawDescGZIP(), []int{2}
}

func (x *Session) GetId() string {
	if x != nil {
		return x.Id
	}
	return ""
}

func (x *Session) GetTargetId() string {
	if x != nil {
		return x.TargetId
	}
	return ""
}

func (x *Session) GetScope() *scopes.ScopeInfo {
	if x != nil {
		return x.Scope
	}
	return nil
}

func (x *Session) GetCreatedTime() *timestamppb.Timestamp {
	if x != nil {
		return x.CreatedTime
	}
	return nil
}

func (x *Session) GetUpdatedTime() *timestamppb.Timestamp {
	if x != nil {
		return x.UpdatedTime
	}
	return nil
}

func (x *Session) GetVersion() uint32 {
	if x != nil {
		return x.Version
	}
	return 0
}

func (x *Session) GetType() string {
	if x != nil {
		return x.Type
	}
	return ""
}

func (x *Session) GetExpirationTime() *timestamppb.Timestamp {
	if x != nil {
		return x.ExpirationTime
	}
	return nil
}

func (x *Session) GetAuthTokenId() string {
	if x != nil {
		return x.AuthTokenId
	}
	return ""
}

func (x *Session) GetUserId() string {
	if x != nil {
		return x.UserId
	}
	return ""
}

func (x *Session) GetHostSetId() string {
	if x != nil {
		return x.HostSetId
	}
	return ""
}

func (x *Session) GetHostId() string {
	if x != nil {
		return x.HostId
	}
	return ""
}

func (x *Session) GetScopeId() string {
	if x != nil {
		return x.ScopeId
	}
	return ""
}

func (x *Session) GetEndpoint() string {
	if x != nil {
		return x.Endpoint
	}
	return ""
}

func (x *Session) GetStates() []*SessionState {
	if x != nil {
		return x.States
	}
	return nil
}

func (x *Session) GetStatus() string {
	if x != nil {
		return x.Status
	}
	return ""
}

func (x *Session) GetCertificate() []byte {
	if x != nil {
		return x.Certificate
	}
	return nil
}

func (x *Session) GetTerminationReason() string {
	if x != nil {
		return x.TerminationReason
	}
	return ""
}

func (x *Session) GetAuthorizedActions() []string {
	if x != nil {
		return x.AuthorizedActions
	}
	return nil
}

func (x *Session) GetConnections() []*Connection {
	if x != nil {
		return x.Connections
	}
	return nil
}

var File_controller_api_resources_sessions_v1_session_proto protoreflect.FileDescriptor

const file_controller_api_resources_sessions_v1_session_proto_rawDesc = "" +
	"\n" +
	"2controller/api/resources/sessions/v1/session.proto\x12$controller.api.resources.sessions.v1\x1a.controller/api/resources/scopes/v1/scope.proto\x1a\x1fgoogle/protobuf/timestamp.proto\"\x9a\x01\n" +
	"\fSessionState\x12\x16\n" +
	"\x06status\x18\n" +
	" \x01(\tR\x06status\x12:\n" +
	"\n" +
	"start_time\x18\x14 \x01(\v2\x1a.google.protobuf.TimestampR\n" +
	"start_time\x126\n" +
	"\bend_time\x18\x1e \x01(\v2\x1a.google.protobuf.TimestampR\bend_time\"\x9f\x02\n" +
	"\n" +
	"Connection\x12,\n" +
	"\x12client_tcp_address\x18\x03 \x01(\tR\x10clientTcpAddress\x12&\n" +
	"\x0fclient_tcp_port\x18\x04 \x01(\rR\rclientTcpPort\x120\n" +
	"\x14endpoint_tcp_address\x18\x05 \x01(\tR\x12endpointTcpAddress\x12*\n" +
	"\x11endpoint_tcp_port\x18\x06 \x01(\rR\x0fendpointTcpPort\x12\x19\n" +
	"\bbytes_up\x18\a \x01(\x03R\abytesUp\x12\x1d\n" +
	"\n" +
	"bytes_down\x18\b \x01(\x03R\tbytesDown\x12#\n" +
	"\rclosed_reason\x18\t \x01(\tR\fclosedReason\"\xf5\x06\n" +
	"\aSession\x12\x0e\n" +
	"\x02id\x18\n" +
	" \x01(\tR\x02id\x12\x1c\n" +
	"\ttarget_id\x18\x14 \x01(\tR\ttarget_id\x12C\n" +
	"\x05scope\x18\x1e \x01(\v2-.controller.api.resources.scopes.v1.ScopeInfoR\x05scope\x12>\n" +
	"\fcreated_time\x18< \x01(\v2\x1a.google.protobuf.TimestampR\fcreated_time\x12>\n" +
	"\fupdated_time\x18F \x01(\v2\x1a.google.protobuf.TimestampR\fupdated_time\x12\x18\n" +
	"\aversion\x18P \x01(\rR\aversion\x12\x12\n" +
	"\x04type\x18Z \x01(\tR\x04type\x12D\n" +
	"\x0fexpiration_time\x18d \x01(\v2\x1a.google.protobuf.TimestampR\x0fexpiration_time\x12$\n" +
	"\rauth_token_id\x18n \x01(\tR\rauth_token_id\x12\x18\n" +
	"\auser_id\x18x \x01(\tR\auser_id\x12!\n" +
	"\vhost_set_id\x18\x82\x01 \x01(\tR\vhost_set_id\x12\x19\n" +
	"\ahost_id\x18\x8c\x01 \x01(\tR\ahost_id\x12\x1b\n" +
	"\bscope_id\x18\x96\x01 \x01(\tR\bscope_id\x12\x1b\n" +
	"\bendpoint\x18\xa0\x01 \x01(\tR\bendpoint\x12K\n" +
	"\x06states\x18\xaa\x01 \x03(\v22.controller.api.resources.sessions.v1.SessionStateR\x06states\x12\x17\n" +
	"\x06status\x18\xb4\x01 \x01(\tR\x06status\x12!\n" +
	"\vcertificate\x18\xc8\x01 \x01(\fR\vcertificate\x12/\n" +
	"\x12termination_reason\x18\xd2\x01 \x01(\tR\x12termination_reason\x12/\n" +
	"\x12authorized_actions\x18\xac\x02 \x03(\tR\x12authorized_actions\x12S\n" +
	"\vconnections\x18\xb6\x02 \x03(\v20.controller.api.resources.sessions.v1.ConnectionR\vconnectionsR\vworker_infoBRZPgithub.com/hashicorp/boundary/sdk/pbs/controller/api/resources/sessions;sessionsb\x06proto3"

var (
	file_controller_api_resources_sessions_v1_session_proto_rawDescOnce sync.Once
	file_controller_api_resources_sessions_v1_session_proto_rawDescData []byte
)

func file_controller_api_resources_sessions_v1_session_proto_rawDescGZIP() []byte {
	file_controller_api_resources_sessions_v1_session_proto_rawDescOnce.Do(func() {
		file_controller_api_resources_sessions_v1_session_proto_rawDescData = protoimpl.X.CompressGZIP(unsafe.Slice(unsafe.StringData(file_controller_api_resources_sessions_v1_session_proto_rawDesc), len(file_controller_api_resources_sessions_v1_session_proto_rawDesc)))
	})
	return file_controller_api_resources_sessions_v1_session_proto_rawDescData
}

var file_controller_api_resources_sessions_v1_session_proto_msgTypes = make([]protoimpl.MessageInfo, 3)
var file_controller_api_resources_sessions_v1_session_proto_goTypes = []any{
	(*SessionState)(nil),          // 0: controller.api.resources.sessions.v1.SessionState
	(*Connection)(nil),            // 1: controller.api.resources.sessions.v1.Connection
	(*Session)(nil),               // 2: controller.api.resources.sessions.v1.Session
	(*timestamppb.Timestamp)(nil), // 3: google.protobuf.Timestamp
	(*scopes.ScopeInfo)(nil),      // 4: controller.api.resources.scopes.v1.ScopeInfo
}
var file_controller_api_resources_sessions_v1_session_proto_depIdxs = []int32{
	3, // 0: controller.api.resources.sessions.v1.SessionState.start_time:type_name -> google.protobuf.Timestamp
	3, // 1: controller.api.resources.sessions.v1.SessionState.end_time:type_name -> google.protobuf.Timestamp
	4, // 2: controller.api.resources.sessions.v1.Session.scope:type_name -> controller.api.resources.scopes.v1.ScopeInfo
	3, // 3: controller.api.resources.sessions.v1.Session.created_time:type_name -> google.protobuf.Timestamp
	3, // 4: controller.api.resources.sessions.v1.Session.updated_time:type_name -> google.protobuf.Timestamp
	3, // 5: controller.api.resources.sessions.v1.Session.expiration_time:type_name -> google.protobuf.Timestamp
	0, // 6: controller.api.resources.sessions.v1.Session.states:type_name -> controller.api.resources.sessions.v1.SessionState
	1, // 7: controller.api.resources.sessions.v1.Session.connections:type_name -> controller.api.resources.sessions.v1.Connection
	8, // [8:8] is the sub-list for method output_type
	8, // [8:8] is the sub-list for method input_type
	8, // [8:8] is the sub-list for extension type_name
	8, // [8:8] is the sub-list for extension extendee
	0, // [0:8] is the sub-list for field type_name
}

func init() { file_controller_api_resources_sessions_v1_session_proto_init() }
func file_controller_api_resources_sessions_v1_session_proto_init() {
	if File_controller_api_resources_sessions_v1_session_proto != nil {
		return
	}
	type x struct{}
	out := protoimpl.TypeBuilder{
		File: protoimpl.DescBuilder{
			GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
			RawDescriptor: unsafe.Slice(unsafe.StringData(file_controller_api_resources_sessions_v1_session_proto_rawDesc), len(file_controller_api_resources_sessions_v1_session_proto_rawDesc)),
			NumEnums:      0,
			NumMessages:   3,
			NumExtensions: 0,
			NumServices:   0,
		},
		GoTypes:           file_controller_api_resources_sessions_v1_session_proto_goTypes,
		DependencyIndexes: file_controller_api_resources_sessions_v1_session_proto_depIdxs,
		MessageInfos:      file_controller_api_resources_sessions_v1_session_proto_msgTypes,
	}.Build()
	File_controller_api_resources_sessions_v1_session_proto = out.File
	file_controller_api_resources_sessions_v1_session_proto_goTypes = nil
	file_controller_api_resources_sessions_v1_session_proto_depIdxs = nil
}
