models

package
v0.0.0-...-9b5f440 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 27, 2026 License: MIT Imports: 26 Imported by: 0

Documentation

Index

Constants

View Source
const (
	FeatureAskAiEnabled  string = "feature-ask-ai-enabled"
	FeatureAskAiDisabled string = "feature-ask-ai-disabled"
)
View Source
const (
	ConnectionStatusOnline  string = "online"
	ConnectionStatusOffline string = "offline"
)
View Source
const (
	ReviewStatusPending    ReviewStatusType = "PENDING"
	ReviewStatusApproved   ReviewStatusType = "APPROVED"
	ReviewStatusRejected   ReviewStatusType = "REJECTED"
	ReviewStatusRevoked    ReviewStatusType = "REVOKED"
	ReviewStatusProcessing ReviewStatusType = "PROCESSING"
	ReviewStatusExecuted   ReviewStatusType = "EXECUTED"
	ReviewStatusUnknown    ReviewStatusType = "UNKNOWN"

	ReviewTypeJit     ReviewType = "jit"
	ReviewTypeOneTime ReviewType = "onetime"
)
View Source
const BlobFormatWireProtoType string = "wire-proto"

indicates the blob is stored in database wire protocol

Variables

View Source
var (
	ErrNotFound      = fmt.Errorf("resource not found")
	ErrAlreadyExists = fmt.Errorf("resource already exists")
)
View Source
var DB *gorm.DB

This makes the DB generally available to the application This is safe to access from multiple goroutines

Functions

func BuildCommonConfig

func BuildCommonConfig(config *RunbookRepositoryConfig) (*commonRunbooks.Config, error)

func CountAccessRequestRules

func CountAccessRequestRules(db *gorm.DB, orgID uuid.UUID) (int64, error)

func CreateAccessRequestRule

func CreateAccessRequestRule(db *gorm.DB, accessRequestRules *AccessRequestRule) error

func CreateAgent

func CreateAgent(orgID, name, mode, secretKeyHash string) error

func CreateAgentOrgKey

func CreateAgentOrgKey(orgID, name, mode, key, secretKeyHash string) error

func CreateAudit

func CreateAudit(orgID, event, createdBy string, metadata map[string]any) error

func CreateConnectionTag

func CreateConnectionTag(obj *ConnectionTag) error

func CreateDBRoleJob

func CreateDBRoleJob(obj *DBRole) error

func CreateGuardRailRules

func CreateGuardRailRules(rule *GuardRailRules) error

func CreateJiraIssueTemplates

func CreateJiraIssueTemplates(issue *JiraIssueTemplate) error

func CreateLogin

func CreateLogin(login *Login) error

func CreateReview

func CreateReview(rev *Review, input string) error

Create the review object, when input is not empty it generates a blob id and save the input as well.

func CreateRunbookConfigurationEntry

func CreateRunbookConfigurationEntry(db *gorm.DB, orgID, repositoryKey string, newConfig *RunbookRepositoryConfig) error

CreateRunbookConfigurationEntry creates a single runbook repository configuration entry In case the resource doesn't exists, it creates a new one with the new entry

func CreateServerSharedSigningKey

func CreateServerSharedSigningKey(encB64Key string) error

func CreateServiceAccount

func CreateServiceAccount(sa *ServiceAccount) error

func CreateUser

func CreateUser(user User) error

func CreateUserGroupWithoutUser

func CreateUserGroupWithoutUser(orgID string, name string) error

CreateUserGroupWithoutUser creates a group entry without binding it to any user

func DeleteAccessRequestRuleByName

func DeleteAccessRequestRuleByName(db *gorm.DB, name string, orgID uuid.UUID) error

func DeleteAgentByNameOrID

func DeleteAgentByNameOrID(orgID, nameOrID string) error

func DeleteConnection

func DeleteConnection(orgID, name string) error

func DeleteDataMaskingRule

func DeleteDataMaskingRule(orgID, ruleID string) error

func DeleteGuardRailRules

func DeleteGuardRailRules(orgID, ruleID string) error

func DeleteJiraIssueTemplates

func DeleteJiraIssueTemplates(orgID, id string) error

func DeletePlugin

func DeletePlugin(db *gorm.DB, plugin *Plugin) error

func DeletePluginConnection

func DeletePluginConnection(orgID, pluginName, connID string) error

func DeleteResource

func DeleteResource(db *gorm.DB, orgID, name string) error

func DeleteRunbookConfigurationByOrgID

func DeleteRunbookConfigurationByOrgID(db *gorm.DB, orgID string) error

func DeleteRunbookConfigurationEntry

func DeleteRunbookConfigurationEntry(db *gorm.DB, orgID, id string) error

DeleteRunbookConfigurationEntry deletes an existing runbook repository configuration entry

func DeleteRunbookRule

func DeleteRunbookRule(db *gorm.DB, orgID, ruleID string) error

func DeleteUser

func DeleteUser(orgID, subject string) error

func DeleteUserGroup

func DeleteUserGroup(orgID string, name string) error

DeleteUserGroup deletes all instances of a group from an organization

func GetDataMaskingEntityTypes

func GetDataMaskingEntityTypes(orgID, connID string) (json.RawMessage, error)

func GetJiraIssueTemplatesByID

func GetJiraIssueTemplatesByID(orgID, id string) (*JiraIssueTemplate, *JiraIntegration, error)

func GetSessionJiraIssueByID

func GetSessionJiraIssueByID(orgID, sid string) (string, error)

func GetSharedSigningKey

func GetSharedSigningKey() (string, error)

func IncrementSessionAnalyzedMetrics

func IncrementSessionAnalyzedMetrics(db *gorm.DB, sessionID string, analyzedMetrics map[string]int64) error

func IncrementSessionMaskedMetrics

func IncrementSessionMaskedMetrics(db *gorm.DB, sessionID string, maskedMetrics map[string]int64) error

func InitDatabaseConnection

func InitDatabaseConnection() error

func InsertUserGroups

func InsertUserGroups(userGroups []UserGroup) error

func IsFeatureAskAiEnabled

func IsFeatureAskAiEnabled(orgID string) (bool, error)

func IsUserAllowedToRunRunbook

func IsUserAllowedToRunRunbook(orgId, connection, runbookRepository, runbookName string, userGroups []string) (bool, error)

func ListConnectionsNameForRunbooks

func ListConnectionsNameForRunbooks(db *gorm.DB, orgID string) ([]string, error)

func ListReviews

func ListReviews(orgID string) (*[]Review, error)

func RotateAgentSecretKey

func RotateAgentSecretKey(orgID, nameOrID, secretKeyHash string) error

func SetSessionMetricsEndedAt

func SetSessionMetricsEndedAt(db *gorm.DB, sessionID string) error

func UpdateAccessRequestRule

func UpdateAccessRequestRule(db *gorm.DB, accessRequestRules *AccessRequestRule) error

func UpdateAgentStatus

func UpdateAgentStatus(orgID, agentID string, status AgentStatusType, metadata map[string]string) error

update the status of all agents and connections associated with it

func UpdateAllAgentsToOffline

func UpdateAllAgentsToOffline() error

update all agent resource and connections to offline status

func UpdateConnectionStatusByName

func UpdateConnectionStatusByName(orgID, connectionName, status string) error

func UpdateConnectionTagValue

func UpdateConnectionTagValue(orgID, id, val string) error

func UpdateGuardRailRules

func UpdateGuardRailRules(r *GuardRailRules) error

func UpdateJiraIssueTemplates

func UpdateJiraIssueTemplates(issue *JiraIssueTemplate) error

func UpdateLoginOutcome

func UpdateLoginOutcome(stateID, outcome string) error

func UpdateOrgLicense

func UpdateOrgLicense(orgID string, licenseDataJSON []byte) error

func UpdateReview

func UpdateReview(rev *Review) error

update the review resource, it updates the session status when the review status is approved, rejected or revoked

func UpdateReviewStatus

func UpdateReviewStatus(orgID, id string, status ReviewStatusType) error

func UpdateRunbookConfigurationEntry

func UpdateRunbookConfigurationEntry(db *gorm.DB, orgID, repositoryKey string, newConfig *RunbookRepositoryConfig) error

UpdateRunbookConfigurationEntry updates an existing runbook repository configuration entry

func UpdateServiceAccount

func UpdateServiceAccount(sa *ServiceAccount) error

func UpdateSessionAnalyzerMetrics

func UpdateSessionAnalyzerMetrics(orgID, sid string, metrics map[string]int64) error

func UpdateSessionEventStream

func UpdateSessionEventStream(sess SessionDone) error

UpdateSessionEventStream updates a session partially

func UpdateSessionInput

func UpdateSessionInput(orgID, sid, blobInput string) error

func UpdateSessionIntegrationMetadata

func UpdateSessionIntegrationMetadata(orgID, sid string, metadata map[string]any) error

func UpdateSessionMetadata

func UpdateSessionMetadata(orgID, userEmail, sid string, metadata map[string]any) error

func UpdateUser

func UpdateUser(user *User) error

func UpdateUserAndUserGroups

func UpdateUserAndUserGroups(user *User, userGroups []UserGroup) error

func UpsertBatchConnectionTags

func UpsertBatchConnectionTags(items []ConnectionTag) error

UpsertBatchConnectionTags create connection tags in batch

func UpsertBatchConnections

func UpsertBatchConnections(db *gorm.DB, connections []*Connection) error

UpsertBatchConnections updates or creates multiple connections and enable the default plugins for each connection

func UpsertEnvVar

func UpsertEnvVar(db *gorm.DB, env *EnvVar) error

func UpsertGuardRailRuleWithConnections

func UpsertGuardRailRuleWithConnections(rule *GuardRailRules, connectionIDs []string, isNew bool) error

UpsertGuardRailRuleWithConnections creates or updates a guardrail rule and its connections in a single transaction

func UpsertPlugin

func UpsertPlugin(plugin *Plugin) error

func UpsertProxyManagerState

func UpsertProxyManagerState(obj *ProxyManagerState) error

func UpsertResource

func UpsertResource(db *gorm.DB, resource *Resources, updateDependentTables bool) error

func UpsertRunbookConfiguration

func UpsertRunbookConfiguration(db *gorm.DB, runbooks *Runbooks) error

func UpsertRunbookRule

func UpsertRunbookRule(db *gorm.DB, rule *RunbookRules) error

func UpsertSession

func UpsertSession(sess Session) error

UpsertSession updates or create all attributes of a session with exception of session streams

func UpsertUserToken

func UpsertUserToken(db *gorm.DB, userID string, token string) error

func UpsertUserV2

func UpsertUserV2(user *UserV2) error

Types

type AWSDBRoleSpec

type AWSDBRoleSpec struct {
	AccountArn    string           `json:"account_arn"`
	AccountUserID string           `json:"account_user_id"`
	Region        string           `json:"region"`
	DBArn         string           `json:"db_arn"`
	DBName        string           `json:"db_name"`
	DBEngine      string           `json:"db_engine"`
	Tags          []map[string]any `json:"db_tags"`
}

type AccessRequestRule

type AccessRequestRule struct {
	ID    uuid.UUID `gorm:"type:uuid;default:gen_random_uuid();primaryKey"`
	OrgID uuid.UUID `gorm:"column:org_id;index:idx_access_request_rules_org_name,unique"`

	Name        string  `gorm:"column:name;index:idx_access_request_rules_org_name,unique"`
	Description *string `gorm:"column:description"`
	AccessType  string  `gorm:"column:access_type"`

	ConnectionNames        pq.StringArray `gorm:"column:connection_names;type:text[]"`
	ApprovalRequiredGroups pq.StringArray `gorm:"column:approval_required_groups;type:text[]"`
	AllGroupsMustApprove   bool           `gorm:"column:all_groups_must_approve;default:false"`
	ReviewersGroups        pq.StringArray `gorm:"column:reviewers_groups;type:text[]"`
	ForceApprovalGroups    pq.StringArray `gorm:"column:force_approval_groups;type:text[]"`

	AccessMaxDuration *int `gorm:"column:access_max_duration"`
	MinApprovals      *int `gorm:"column:min_approvals"`

	CreatedAt time.Time `gorm:"column:created_at;autoCreateTime"`
	UpdatedAt time.Time `gorm:"column:updated_at;autoUpdateTime"`
}

func GetAccessRequestRuleByName

func GetAccessRequestRuleByName(db *gorm.DB, name string, orgID uuid.UUID) (*AccessRequestRule, error)

func GetAccessRequestRuleByResourceNameAndAccessType

func GetAccessRequestRuleByResourceNameAndAccessType(db *gorm.DB, orgID uuid.UUID, resourceName, accessType string) (*AccessRequestRule, error)

func GetAccessRequestRuleByResourceNamesAndAccessType

func GetAccessRequestRuleByResourceNamesAndAccessType(db *gorm.DB, orgID uuid.UUID, resourceName []string, accessType string) (*AccessRequestRule, error)

func GetConnectionAccessRequestRules

func GetConnectionAccessRequestRules(db *gorm.DB, orgID uuid.UUID, connectionName string) ([]AccessRequestRule, error)

func ListAccessRequestRules

func ListAccessRequestRules(db *gorm.DB, orgID uuid.UUID, opts AccessRequestRulesFilterOption) ([]AccessRequestRule, int64, error)

func (AccessRequestRule) TableName

func (m AccessRequestRule) TableName() string

type AccessRequestRulesFilterOption

type AccessRequestRulesFilterOption struct {
	Page     int
	PageSize int
}

type Agent

type Agent struct {
	OrgID     string            `gorm:"column:org_id"`
	ID        string            `gorm:"column:id"`
	Name      string            `gorm:"column:name"`
	Mode      string            `gorm:"column:mode"`
	Key       string            `gorm:"column:key"`
	KeyHash   string            `gorm:"column:key_hash"`
	Status    string            `gorm:"column:status"`
	Metadata  map[string]string `gorm:"column:metadata;serializer:json"`
	UpdatedAt *string           `gorm:"column:updated_at"`
}

func GetAgentByNameOrID

func GetAgentByNameOrID(orgID, nameOrID string) (*Agent, error)

func GetAgentByToken

func GetAgentByToken(token string) (*Agent, error)

func ListAgents

func ListAgents(orgID string, status string) ([]Agent, error)

func (*Agent) GetMeta

func (a *Agent) GetMeta(key string) (v string)

func (Agent) String

func (a Agent) String() string

type AgentStatusType

type AgentStatusType string
var (
	AgentStatusConnected    AgentStatusType = "CONNECTED"
	AgentStatusDisconnected AgentStatusType = "DISCONNECTED"
)

type Audit

type Audit struct {
	OrgID     string         `gorm:"column:org_id"`
	Event     string         `gorm:"column:event"`
	Metadata  map[string]any `gorm:"column:metadata;serializer:json"`
	CreatedBy string         `gorm:"column:created_by"`
}

type Blob

type Blob struct {
	ID         string          `gorm:"column:id"`
	OrgID      string          `gorm:"column:org_id"`
	BlobStream json.RawMessage `gorm:"column:blob_stream"`
	Type       string          `gorm:"column:type"`
	BlobFormat *string         `gorm:"column:format"`
}

func (Blob) IsWireProtocol

func (b Blob) IsWireProtocol() bool

Report if the blob is stored as database wire protocol format

type BlobInputType

type BlobInputType string

func (*BlobInputType) Scan

func (b *BlobInputType) Scan(value any) error

type CmdbType

type CmdbType struct {
	JiraObjectType     string `json:"jira_object_type"`
	JiraObjectSchemaId string `json:"jira_object_schema_id"`
	JiraField          string `json:"jira_field"`
	Required           bool   `json:"required"`
	Description        string `json:"description"`
	Value              string `json:"value"`
}

type Connection

type Connection struct {
	OrgID               string         `gorm:"column:org_id"`
	ID                  string         `gorm:"column:id"`
	ResourceName        string         `gorm:"column:resource_name"`
	AgentID             sql.NullString `gorm:"column:agent_id"`
	Name                string         `gorm:"column:name"`
	Command             pq.StringArray `gorm:"column:command;type:text[]"`
	Type                string         `gorm:"column:type"`
	SubType             sql.NullString `gorm:"column:subtype"`
	Status              string         `gorm:"column:status"`
	ManagedBy           sql.NullString `gorm:"column:managed_by"`
	Tags                pq.StringArray `gorm:"column:_tags;type:text[]"`
	AccessModeRunbooks  string         `gorm:"column:access_mode_runbooks"`
	AccessModeExec      string         `gorm:"column:access_mode_exec"`
	AccessModeConnect   string         `gorm:"column:access_mode_connect"`
	AccessSchema        string         `gorm:"column:access_schema"`
	JiraIssueTemplateID sql.NullString `gorm:"column:jira_issue_template_id"`

	// Access control
	ForceApproveGroups pq.StringArray `gorm:"column:force_approve_groups;type:text[]"`
	AccessMaxDuration  *int           `gorm:"column:access_max_duration"`
	MinReviewApprovals *int           `gorm:"column:min_review_approvals"`

	// Read Only fields
	RedactEnabled             bool              `gorm:"column:redact_enabled;->"`
	Reviewers                 pq.StringArray    `gorm:"column:reviewers;type:text[];->"`
	RedactTypes               pq.StringArray    `gorm:"column:redact_types;type:text[];->"`
	AgentMode                 string            `gorm:"column:agent_mode;->"`
	AgentName                 string            `gorm:"column:agent_name;->"`
	JiraTransitionNameOnClose sql.NullString    `gorm:"column:issue_transition_name_on_close;->"`
	Envs                      map[string]string `gorm:"column:envs;serializer:json;->"`
	GuardRailRules            pq.StringArray    `gorm:"column:guardrail_rules;type:text[];->"`
	ConnectionTags            map[string]string `gorm:"column:connection_tags;serializer:json;->"`
}

func GetBareConnectionByNameOrID

func GetBareConnectionByNameOrID(ctx UserContext, nameOrID string, tx *gorm.DB) (*Connection, error)

GetBareConnectionByNameOrID retrieves a connection by name or ID without resource envs, etc.

func GetConnectionByNameOrID

func GetConnectionByNameOrID(ctx UserContext, nameOrID string) (*Connection, error)

GetConnectionByNameOrID retrieves a connection by name or ID. It also checks if the user has access to the connection based on the access control plugin.

func GetResourceConnections

func GetResourceConnections(db *gorm.DB, orgID, resourceName string) ([]Connection, error)

func ListConnections

func ListConnections(ctx UserContext, opts ConnectionFilterOption) ([]Connection, error)

ListConnections retrieves a list of connections based on the provided filter options. It applies access control rules based on the user's groups and the access control plugin.

func ListConnectionsPaginated

func ListConnectionsPaginated(orgID string, userGroups []string, opts ConnectionPaginationOption) ([]Connection, int64, error)

ListConnectionsPaginated retrieves a paginated list of connections based on the provided filter options.

func SearchConnectionsBySimilarity

func SearchConnectionsBySimilarity(orgID string, userGroups []string, searchTerm string) ([]Connection, error)

SearchBySimilarity searches connections by name, type, or subtype using a case-insensitive search.

func UpsertConnection

func UpsertConnection(ctx UserContext, c *Connection) (*Connection, error)

func (Connection) AsSecrets

func (c Connection) AsSecrets() map[string]any

type ConnectionCredentials

type ConnectionCredentials struct {
	ID             string    `gorm:"column:id"`
	OrgID          string    `gorm:"column:org_id"`
	UserSubject    string    `gorm:"column:user_subject"`
	ConnectionName string    `gorm:"column:connection_name"`
	ConnectionType string    `gorm:"column:connection_type"`
	SecretKeyHash  string    `gorm:"column:secret_key_hash"`
	CreatedAt      time.Time `gorm:"column:created_at"`
	ExpireAt       time.Time `gorm:"column:expire_at"`
}

func CreateConnectionCredentials

func CreateConnectionCredentials(db *ConnectionCredentials) (*ConnectionCredentials, error)

func GetConnectionByTypeAndID

func GetConnectionByTypeAndID(connectionType, id string) (*ConnectionCredentials, error)

GetConnectionByTypeAndID retrieves a connection credential by its type and ID

func GetConnectionCredentialsByID

func GetConnectionCredentialsByID(orgID, id string) (*ConnectionCredentials, error)

func GetValidConnectionCredentialsBySecretKey

func GetValidConnectionCredentialsBySecretKey(connectionTypes []string, secretKeyHash string) (*ConnectionCredentials, error)

GetValidConnectionCredentialsBySecretKey retrieves a valid connection credential by its secret key hash. if a user has a valid connection credential, it could be used to connect in the requested resource

type ConnectionFilterOption

type ConnectionFilterOption struct {
	Name          string
	Type          string
	SubType       string
	ManagedBy     string
	AgentID       string
	Tags          []string
	TagSelector   string
	Search        string
	ConnectionIDs []string
	ResourceName  string
}

ConnectionOption each attribute set applies an AND operator logic

func (ConnectionFilterOption) GetSearchPattern

func (o ConnectionFilterOption) GetSearchPattern() string

func (ConnectionFilterOption) GetTagsAsArray

func (o ConnectionFilterOption) GetTagsAsArray() any

func (ConnectionFilterOption) ParseTagSelectorQuery

func (o ConnectionFilterOption) ParseTagSelectorQuery() (selectorJsonData string, err error)

type ConnectionGuardRailRules

type ConnectionGuardRailRules struct {
	OrgID string `gorm:"column:org_id"`
	ID    string `gorm:"column:id"`
	Name  string `gorm:"column:name"`

	// Read Only Fields
	GuardRailInputRules  []byte `gorm:"column:guardrail_input_rules;->"`
	GuardRailOutputRules []byte `gorm:"column:guardrail_output_rules;->"`
}

func GetConnectionGuardRailRules

func GetConnectionGuardRailRules(orgID, name string) (*ConnectionGuardRailRules, error)

GetConnectionGuardRailRules retrieves the guard rail rules associated with a connection. It does not enforce access control rules

type ConnectionJiraIssueTemplateTypes

type ConnectionJiraIssueTemplateTypes struct {
	OrgID string `gorm:"column:org_id"`
	ID    string `gorm:"column:id"`
	Name  string `gorm:"column:name"`

	// Read Only Fields
	IssueTemplatesMappingTypes []byte `gorm:"column:mapping_types;->"`
	IssueTemplatesPromptTypes  []byte `gorm:"column:prompt_types;->"`
}

type ConnectionPaginationOption

type ConnectionPaginationOption struct {
	ConnectionFilterOption
	Page     int
	PageSize int
}

type ConnectionTag

type ConnectionTag struct {
	ID        string    `gorm:"column:id"`
	OrgID     string    `gorm:"column:org_id"`
	Key       string    `gorm:"column:key"`
	Value     string    `gorm:"column:value"`
	CreatedAt time.Time `gorm:"column:created_at"`
	UpdatedAt time.Time `gorm:"column:updated_at"`
}

func GetConnectionTagByID

func GetConnectionTagByID(orgID, id string) (*ConnectionTag, error)

func ListConnectionTags

func ListConnectionTags(orgID string) ([]ConnectionTag, error)

type Context

type Context struct {
	OrgID              string          `gorm:"column:org_id"`
	OrgName            string          `gorm:"column:org_name"`
	OrgLicenseData     json.RawMessage `gorm:"column:org_license_data"`
	UserID             string          `gorm:"column:user_id"`
	UserSubject        string          `gorm:"column:user_subject"`
	UserEmail          string          `gorm:"column:user_email"`
	UserName           string          `gorm:"column:user_name"`
	UserStatus         string          `gorm:"column:user_status"`
	UserSlackID        string          `gorm:"column:user_slack_id"`
	UserPicture        string          `gorm:"column:user_picture"`
	UserHashedPassword *string         `gorm:"column:user_hashed_password"`
	UserGroups         pq.StringArray  `gorm:"column:user_groups;type:text[]"`
}

func GetUserContext

func GetUserContext(subject string) (*Context, error)

GetUserContext retrieves user context data based on the subject claim or OIDC information.

After access token verification, it's safe to obtain user context using only the subject attribute.

This method queries both the users and service accounts tables to retrieve the existing user context information.

func (*Context) GetLicenseType

func (c *Context) GetLicenseType() string

func (*Context) GetOrgID

func (c *Context) GetOrgID() string

func (*Context) GetUserGroups

func (c *Context) GetUserGroups() []string

func (*Context) GetUserID

func (c *Context) GetUserID() string

func (*Context) IsAdmin

func (c *Context) IsAdmin() bool

func (*Context) IsAuditor

func (c *Context) IsAuditor() bool

func (*Context) IsEmpty

func (c *Context) IsEmpty() bool

IsEmpty returns true if the user is not logged in and has not signed up yet. The user is considered empty if the OrgID and UserSubject is not set.

type CustomEntityTypesEntry

type CustomEntityTypesEntry struct {
	Name     string   `json:"name"`
	Regex    string   `json:"regex"`
	DenyList []string `json:"deny_list"`
	Score    float64  `json:"score"`
}

type CustomEntityTypesList

type CustomEntityTypesList []CustomEntityTypesEntry

type DBRole

type DBRole struct {
	OrgID         string         `gorm:"column:org_id"`
	ID            string         `gorm:"column:id"`
	CreatedAt     time.Time      `gorm:"column:created_at"`
	CompletedAt   *time.Time     `gorm:"column:completed_at"`
	StatusMap     map[string]any `gorm:"column:status;serializer:json"`
	HookStatusMap map[string]any `gorm:"column:hook_status;serializer:json"`
	SpecMap       map[string]any `gorm:"column:spec;serializer:json"` // Don't export it, having a lowercase it will serialize properly?

	Status     *DBRoleStatus  `gorm:"-"`
	HookStatus *HookStatus    `gorm:"-"`
	Spec       *AWSDBRoleSpec `gorm:"-"`
}

func GetDBRoleJobByID

func GetDBRoleJobByID(orgID, jobID string) (*DBRole, error)

func ListDBRoleJobs

func ListDBRoleJobs(orgID string) ([]*DBRole, error)

func UpdateDBRoleJob

func UpdateDBRoleJob(orgID string, completedAt *time.Time, resp *pbsystem.DBProvisionerResponse) (*DBRole, error)

type DBRoleStatus

type DBRoleStatus struct {
	Phase   string               `json:"phase"`
	Message string               `json:"message"`
	Result  []DBRoleStatusResult `json:"result"`
}

type DBRoleStatusResult

type DBRoleStatusResult struct {
	UserRole        string                            `json:"user_role"`
	CredentialsInfo DBRoleStatusResultCredentialsInfo `json:"credentials_info"`
	Status          string                            `json:"phase"`
	Message         string                            `json:"message"`
	CompletedAt     time.Time                         `json:"completed_at"`
}

type DBRoleStatusResultCredentialsInfo

type DBRoleStatusResultCredentialsInfo struct {
	SecretsManagerProvider string   `json:"secrets_manager_provider"`
	SecretID               string   `json:"secret_id"`
	SecretKeys             []string `json:"secret_keys"`
}

type DataMaskingRule

type DataMaskingRule struct {
	ID                   string                   `gorm:"column:id"`
	OrgID                string                   `gorm:"column:org_id"`
	Name                 string                   `gorm:"column:name"`
	Description          string                   `gorm:"column:description"`
	SupportedEntityTypes SupportedEntityTypesList `gorm:"column:supported_entity_types;serializer:json"`
	CustomEntityTypes    CustomEntityTypesList    `gorm:"column:custom_entity_types;serializer:json"`
	ScoreThreshold       *float64                 `gorm:"column:score_threshold"`
	ConnectionIDs        pq.StringArray           `gorm:"column:connection_ids;type:text[];->"`
	UpdatedAt            time.Time                `gorm:"column:updated_at"`
}

func CreateDataMaskingRule

func CreateDataMaskingRule(rule *DataMaskingRule) (*DataMaskingRule, error)

func GetDataMaskingRuleByID

func GetDataMaskingRuleByID(orgID, ruleID string) (*DataMaskingRule, error)

func ListDataMaskingRules

func ListDataMaskingRules(orgID string) ([]DataMaskingRule, error)

func UpdateDataMaskingRule

func UpdateDataMaskingRule(rule *DataMaskingRule) (*DataMaskingRule, error)

type DataMaskingRuleConnection

type DataMaskingRuleConnection struct {
	ID           string `gorm:"column:id"`
	OrgID        string `gorm:"column:org_id"`
	RuleID       string `gorm:"column:rule_id"`
	ConnectionID string `gorm:"column:connection_id"`
	Status       string `gorm:"column:status"`
}

func UpdateDataMaskingRuleConnection

func UpdateDataMaskingRuleConnection(orgID, connectionID string, items []DataMaskingRuleConnection) ([]DataMaskingRuleConnection, error)

type EnvVar

type EnvVar struct {
	OrgID     string            `gorm:"column:org_id"`
	ID        string            `gorm:"column:id"`
	Envs      map[string]string `gorm:"column:envs;serializer:json"`
	UpdatedAt time.Time         `gorm:"column:updated_at"`
}

func GetEnvVarByID

func GetEnvVarByID(orgID, id string) (*EnvVar, error)

func (*EnvVar) GetEnv

func (e *EnvVar) GetEnv(key string) (v string)

func (*EnvVar) HasKey

func (e *EnvVar) HasKey(key string) (v bool)

func (*EnvVar) SetEnv

func (e *EnvVar) SetEnv(key string, val any)

type EnvVars

type EnvVars struct {
	ID    string            `gorm:"column:id"`
	OrgID string            `gorm:"column:org_id"`
	Envs  map[string]string `gorm:"column:envs;serializer:json"`
}

type ErrNotFoundGuardRailRules

type ErrNotFoundGuardRailRules struct {
	// contains filtered or unexported fields
}

func (*ErrNotFoundGuardRailRules) Error

func (e *ErrNotFoundGuardRailRules) Error() string

type GuardRailConnection

type GuardRailConnection struct {
	ID           string    `gorm:"column:id"`
	OrgID        string    `gorm:"column:org_id"`
	RuleID       string    `gorm:"column:rule_id"`
	ConnectionID string    `gorm:"column:connection_id"`
	CreatedAt    time.Time `gorm:"column:created_at"`
}

type GuardRailRules

type GuardRailRules struct {
	OrgID         string         `gorm:"column:org_id"`
	ID            string         `gorm:"column:id"`
	Name          string         `gorm:"column:name"`
	Description   string         `gorm:"column:description"`
	Input         map[string]any `gorm:"column:input;serializer:json"`
	Output        map[string]any `gorm:"column:output;serializer:json"`
	CreatedAt     time.Time      `gorm:"column:created_at"`
	UpdatedAt     time.Time      `gorm:"column:updated_at"`
	ConnectionIDs []string       `gorm:"-"` // Not stored in DB, populated from join query
}

func GetGuardRailRules

func GetGuardRailRules(orgID, ruleID string) (*GuardRailRules, error)

func ListGuardRailRules

func ListGuardRailRules(orgID string) ([]*GuardRailRules, error)

type HookStatus

type HookStatus struct {
	ExitCode         int    `json:"exit_code"`
	OutputBase64     string `json:"output"`
	ExecutionTimeSec int    `json:"execution_time_sec"`
}

type HttpProxyServerConfig

type HttpProxyServerConfig struct {
	ListenAddress string `json:"listen_address"`
}

type JiraIntegration

type JiraIntegration struct {
	ID        string                `json:"id"`
	OrgID     string                `json:"org_id"`
	URL       string                `json:"url"`
	User      string                `json:"user"`
	APIToken  string                `json:"api_token"`
	Status    JiraIntegrationStatus `json:"status"`
	CreatedAt time.Time             `json:"created_at"`
	UpdatedAt time.Time             `json:"updated_at"`
}

func CreateJiraIntegration

func CreateJiraIntegration(orgID string, jiraIntegration *JiraIntegration) (*JiraIntegration, error)

func GetJiraIntegration

func GetJiraIntegration(orgID string) (*JiraIntegration, error)

func UpdateJiraIntegration

func UpdateJiraIntegration(orgID string, newObj *JiraIntegration) (*JiraIntegration, error)

func (JiraIntegration) IsActive

func (j JiraIntegration) IsActive() bool

type JiraIntegrationStatus

type JiraIntegrationStatus string
const (
	JiraIntegrationStatusActive   JiraIntegrationStatus = "enabled"
	JiraIntegrationStatusInactive JiraIntegrationStatus = "disabled"
)

type JiraIssueTemplate

type JiraIssueTemplate struct {
	OrgID                      string         `gorm:"column:org_id"`
	ID                         string         `gorm:"column:id"`
	JiraIntegrationID          string         `gorm:"column:jira_integration_id"`
	Name                       string         `gorm:"column:name"`
	Description                string         `gorm:"column:description"`
	ProjectKey                 string         `gorm:"column:project_key"`
	RequestTypeID              string         `gorm:"column:request_type_id"`
	IssueTransitionNameOnClose string         `gorm:"column:issue_transition_name_on_close"`
	MappingTypes               map[string]any `gorm:"column:mapping_types;serializer:json"`
	PromptTypes                map[string]any `gorm:"column:prompt_types;serializer:json"`
	CmdbTypes                  map[string]any `gorm:"column:cmdb_types;serializer:json"`
	ConnectionIDs              pq.StringArray `gorm:"column:connection_ids;type:text[];->"`
	CreatedAt                  time.Time      `gorm:"column:created_at"`
	UpdatedAt                  time.Time      `gorm:"column:updated_at"`
}

func ListJiraIssueTemplates

func ListJiraIssueTemplates(orgID string) ([]*JiraIssueTemplate, error)

func (*JiraIssueTemplate) DecodeMappingTypes

func (t *JiraIssueTemplate) DecodeMappingTypes() (map[string]MappingType, map[string]PromptType, map[string]CmdbType, error)

type Login

type Login struct {
	ID        string    `gorm:"column:id"`
	Redirect  string    `gorm:"column:redirect"`
	Outcome   string    `gorm:"column:outcome"`
	SlackID   string    `gorm:"column:slack_id"`
	UpdatedAt time.Time `gorm:"column:updated_at"`
}

func GetLoginByState

func GetLoginByState(stateID string) (*Login, error)

GetLoginByState retrieves a login record by its state ID

type MappingType

type MappingType struct {
	Description string `json:"description"`
	Type        string `json:"type"`
	Value       string `json:"value"`
	JiraField   string `json:"jira_field"`
}

type Organization

type Organization struct {
	ID          string          `gorm:"column:id"`
	Name        string          `gorm:"column:name"`
	CreatedAt   time.Time       `gorm:"column:created_at"`
	LicenseData json.RawMessage `gorm:"column:license_data"`
	TotalUsers  int64           `gorm:"column:total_users;->"`
}

func CreateOrgGetOrganization

func CreateOrgGetOrganization(name string, licenseDataJSON []byte) (*Organization, bool, error)

func CreateOrganization

func CreateOrganization(name string, licenseDataJSON []byte) (*Organization, error)

func GetOrganizationByNameOrID

func GetOrganizationByNameOrID(nameOrID string) (*Organization, error)

func ListAllOrganizations

func ListAllOrganizations() ([]Organization, error)

type Plugin

type Plugin struct {
	ID          string              `gorm:"column:id"`
	OrgID       string              `gorm:"column:org_id"`
	Name        string              `gorm:"column:name"`
	Connections []*PluginConnection `gorm:"column:plugin_connections;serializer:json;->"`
	EnvVars     map[string]string   `gorm:"column:envvars;serializer:json;->"`
}

func GetPluginByName

func GetPluginByName(orgID, name string) (*Plugin, error)

func ListPlugins

func ListPlugins(orgID string) ([]Plugin, error)

func (*Plugin) GetEnvVars

func (p *Plugin) GetEnvVars() map[string]string

func (*Plugin) GetName

func (p *Plugin) GetName() string

func (*Plugin) GetOrgID

func (p *Plugin) GetOrgID() string

type PluginConnection

type PluginConnection struct {
	ID             string         `gorm:"column:id" json:"id"`
	OrgID          string         `gorm:"column:org_id" json:"org_id"`
	PluginID       string         `gorm:"column:plugin_id" json:"plugin_id"`
	ConnectionID   string         `gorm:"column:connection_id" json:"connection_id"`
	ConnectionName string         `gorm:"column:connection_name;->" json:"connection_name"`
	Enabled        bool           `gorm:"column:enabled" json:"enabled"`
	Config         pq.StringArray `gorm:"column:config;type:text[]" json:"config"`
	CreatedAt      time.Time      `gorm:"column:created_at" json:"created_at"`
	UpdatedAt      time.Time      `gorm:"column:updated_at" json:"updated_at"`
}

func GetPluginConnection

func GetPluginConnection(orgID, pluginName, connID string) (*PluginConnection, error)

func UpsertPluginConnection

func UpsertPluginConnection(orgID, pluginName, connID string, config pq.StringArray) (*PluginConnection, error)

UpsertPluginConnection updates an existing plugin connection by the plugin ID and connection ID.

type PostgresServerConfig

type PostgresServerConfig struct {
	ListenAddress string `json:"listen_address"`
}

type PromptType

type PromptType struct {
	Description string `json:"description"`
	Label       string `json:"label"`
	Required    bool   `json:"required"`
	JiraField   string `json:"jira_field"`
	FieldType   string `json:"field_type"`
}

type ProxyManagerState

type ProxyManagerState struct {
	ID                       string                 `gorm:"column:id"`
	OrgID                    string                 `gorm:"column:org_id"`
	Status                   ProxyManagerStatusType `gorm:"column:status"`
	RequestConnectionName    string                 `gorm:"column:connection"`
	RequestPort              string                 `gorm:"column:port"`
	RequestAccessDurationSec int                    `gorm:"column:access_duration"`
	ClientMetadata           map[string]string      `gorm:"column:metadata;serializer:json"`
	ConnectedAt              time.Time              `gorm:"connected_at"`
}

func GetProxyManagerStateByID

func GetProxyManagerStateByID(orgID, id string) (*ProxyManagerState, error)

type ProxyManagerStatusType

type ProxyManagerStatusType string
const (
	// ProxyManagerStatusReady indicates the grpc client is ready to  subscribe to a new connection
	ProxyManagerStatusReady ProxyManagerStatusType = "ready"
	// ProxyManagerStatusConnected indicates the client has opened a new session
	ProxyManagerStatusConnected ProxyManagerStatusType = "connected"
	// ProxyManagerStatusDisconnected indicates the grpc client has disconnected
	ProxyManagerStatusDisconnected ProxyManagerStatusType = "disconnected"
)

type RDPServerConfig

type RDPServerConfig struct {
	ListenAddress string `json:"listen_address"`
}

type ResourceFilterOption

type ResourceFilterOption struct {
	Page     int
	PageSize int
	Search   string
	Name     string
	SubType  string
}

type Resources

type Resources struct {
	ID        string         `gorm:"column:id"`
	OrgID     string         `gorm:"column:org_id"`
	Name      string         `gorm:"column:name"`
	Type      string         `gorm:"column:type"`
	SubType   sql.NullString `gorm:"column:subtype"`
	AgentID   sql.NullString `gorm:"column:agent_id"`
	CreatedAt time.Time      `gorm:"column:created_at"`
	UpdatedAt time.Time      `gorm:"column:updated_at"`

	// read-only fields from related tables
	Envs map[string]string `gorm:"column:envs;serializer:json;->"`
}

func GetResourceByName

func GetResourceByName(db *gorm.DB, orgID, name string, isAdminOrInternal bool) (*Resources, error)

func ListResources

func ListResources(db *gorm.DB, orgID string, userGroups []string, isAdminOrInternal bool, opts ResourceFilterOption) ([]Resources, int64, error)

type Review

type Review struct {
	ID                string            `gorm:"column:id"`
	OrgID             string            `gorm:"column:org_id"`
	SessionID         string            `gorm:"column:session_id"`
	Type              ReviewType        `gorm:"column:type"`
	Status            ReviewStatusType  `gorm:"column:status"`
	ConnectionName    string            `gorm:"column:connection_name"`
	ConnectionID      sql.NullString    `gorm:"column:connection_id"`
	BlobInputID       sql.NullString    `gorm:"column:blob_input_id"`
	InputEnvVars      map[string]string `gorm:"column:input_env_vars;serializer:json"`
	InputClientArgs   pq.StringArray    `gorm:"column:input_client_args;type:text[]"`
	AccessDurationSec int64             `gorm:"column:access_duration_sec"`
	OwnerID           string            `gorm:"column:owner_id"`
	OwnerEmail        string            `gorm:"column:owner_email"`
	OwnerName         *string           `gorm:"column:owner_name"`
	OwnerSlackID      *string           `gorm:"column:owner_slack_id"`

	ReviewGroups          []ReviewGroups `gorm:"column:review_groups;serializer:json;->"`
	AccessRequestRuleName *string        `gorm:"column:access_request_rule_name"`
	ForceApprovalGroups   pq.StringArray `gorm:"column:force_approval_groups;type:text[]"`
	MinApprovals          *int           `gorm:"column:min_approvals"`

	CreatedAt  time.Time         `gorm:"column:created_at"`
	RevokedAt  *time.Time        `gorm:"column:revoked_at"`
	TimeWindow *ReviewTimeWindow `gorm:"column:time_window;serializer:json;"`
}

func GetReviewByIdOrSid

func GetReviewByIdOrSid(orgID, id string) (*Review, error)

func (*Review) GetBlobInput

func (r *Review) GetBlobInput() (string, error)

GetBlobInput returns the input if the blob input id is set

type ReviewGroups

type ReviewGroups struct {
	ID           string           `json:"id"`
	OrgID        string           `json:"org_id"`
	ReviewID     string           `json:"review_id"`
	GroupName    string           `json:"group_name"`
	Status       ReviewStatusType `json:"status"`
	OwnerID      *string          `json:"owner_id"`
	OwnerEmail   *string          `json:"owner_email"`
	OwnerName    *string          `json:"owner_name"`
	OwnerSlackID *string          `json:"owner_slack_id"`
	ReviewedAt   *time.Time       `json:"reviewed_at"`
	ForcedReview bool             `json:"forced_review"`
}

type ReviewJit

type ReviewJit struct {
	ID                string     `gorm:"column:id"`
	OrgID             string     `gorm:"column:org_id"`
	SessionID         string     `gorm:"column:session_id"`
	Type              string     `gorm:"column:type"`
	AccessDurationSec int64      `gorm:"column:access_duration_sec"`
	OwnerEmail        string     `gorm:"column:owner_email"`
	CreatedAt         time.Time  `gorm:"column:created_at"`
	RevokedAt         *time.Time `gorm:"column:revoked_at"`
}

func GetApprovedReviewJit

func GetApprovedReviewJit(orgID, ownerUserID, connectionID string) (*ReviewJit, error)

Lookup for the latest review jit approved

type ReviewStatusType

type ReviewStatusType string

func (ReviewStatusType) Str

func (t ReviewStatusType) Str() string

type ReviewTimeWindow

type ReviewTimeWindow struct {
	Type          string            `json:"type"`
	Configuration map[string]string `json:"configuration"`
}

type ReviewType

type ReviewType string

type RunbookRepositoryConfig

type RunbookRepositoryConfig struct {
	GitUrl        string `json:"git_url"`
	GitUser       string `json:"git_user"`
	GitPassword   string `json:"git_password"`
	SSHKey        string `json:"ssh_key"`
	SSHUser       string `json:"ssh_user"`
	SSHKeyPass    string `json:"ssh_key_pass"`
	SSHKnownHosts string `json:"ssh_known_hosts"`
	GitHookTTL    int    `json:"git_hook_config_ttl"`
	GitBranch     string `json:"git_branch"`
}

type RunbookRuleFile

type RunbookRuleFile struct {
	Repository string `json:"repository"`
	Name       string `json:"name"`
}

type RunbookRuleFiles

type RunbookRuleFiles []RunbookRuleFile

func (*RunbookRuleFiles) Scan

func (r *RunbookRuleFiles) Scan(value any) error

func (RunbookRuleFiles) Value

func (r RunbookRuleFiles) Value() (driver.Value, error)

type RunbookRules

type RunbookRules struct {
	ID          string           `gorm:"column:id"`
	OrgID       string           `gorm:"column:org_id"`
	Name        string           `gorm:"column:name"`
	Description sql.NullString   `gorm:"column:description"`
	UserGroups  pq.StringArray   `gorm:"column:user_groups;type:text[]"`
	Connections pq.StringArray   `gorm:"column:connections;type:text[]"`
	Runbooks    RunbookRuleFiles `gorm:"column:runbooks;type:jsonb;serializer:json"`
	CreatedAt   time.Time        `gorm:"column:created_at"`
	UpdatedAt   time.Time        `gorm:"column:updated_at"`
}

func GetRunbookRuleByID

func GetRunbookRuleByID(db *gorm.DB, orgID, ruleID string) (*RunbookRules, error)

func GetRunbookRules

func GetRunbookRules(db *gorm.DB, orgID string, offset int, limit int) ([]RunbookRules, error)

type Runbooks

type Runbooks struct {
	ID                string                             `gorm:"column:id"`
	OrgID             string                             `gorm:"column:org_id"`
	RepositoryConfigs map[string]RunbookRepositoryConfig `gorm:"column:repository_configs;serializer:json"`
	CreatedAt         time.Time                          `gorm:"column:created_at"`
	UpdatedAt         time.Time                          `gorm:"column:updated_at"`
}

func CreateDefaultRunbookConfiguration

func CreateDefaultRunbookConfiguration(db *gorm.DB, orgID string) (*Runbooks, error)

func GetRunbookConfigurationByOrgID

func GetRunbookConfigurationByOrgID(db *gorm.DB, orgID string) (*Runbooks, error)

type SSHServerConfig

type SSHServerConfig struct {
	ListenAddress string `json:"listen_address"`
	HostsKey      string `json:"hosts_key"`
}

type ServerAuthConfig

type ServerAuthConfig struct {
	OrgID                 string                `gorm:"column:org_id"`
	AuthMethod            *string               `gorm:"column:auth_method"`
	OidcConfig            *ServerAuthOidcConfig `gorm:"column:oidc_config;serializer:json"`
	SamlConfig            *ServerAuthSamlConfig `gorm:"column:saml_config;serializer:json"`
	ProviderName          *string               `gorm:"column:provider_name"`
	ApiKey                *string               `gorm:"column:api_key"`
	RolloutApiKey         *string               `gorm:"column:rollout_api_key"`
	WebappUsersManagement *string               `gorm:"column:webapp_users_management"`
	AdminRoleName         *string               `gorm:"column:admin_role_name"`
	AuditorRoleName       *string               `gorm:"column:auditor_role_name"`
	ProductAnalytics      *string               `gorm:"column:product_analytics;->"`
	GrpcServerURL         *string               `gorm:"column:grpc_server_url;->"`
	SharedSigningKey      *string               `gorm:"column:shared_signing_key;->"`
	UpdatedAt             time.Time             `gorm:"column:updated_at"`
}

func GetServerAuthConfig

func GetServerAuthConfig() (*ServerAuthConfig, error)

func UpdateServerAuthConfig

func UpdateServerAuthConfig(newObj *ServerAuthConfig) (*ServerAuthConfig, error)

Create or update the server auth config. If the config already exists, it will be updated with the new values. The api_key attribute is optional, if not provided it will not be updated or created

Updating roles performs a global update on the user_groups table to change the previous role names to the new ones.

type ServerAuthOidcConfig

type ServerAuthOidcConfig struct {
	IssuerURL    string         `json:"issuer_url"`
	ClientID     string         `json:"client_id"`
	ClientSecret string         `json:"client_secret"`
	Scopes       pq.StringArray `json:"scopes"`
	Audience     string         `json:"audience"`
	GroupsClaim  string         `json:"groups_claim"`
}

type ServerAuthSamlConfig

type ServerAuthSamlConfig struct {
	IdpMetadataURL string `json:"idp_metadata_url"`
	GroupsClaim    string `json:"groups_claim"`
}

type ServerMiscConfig

type ServerMiscConfig struct {
	ProductAnalytics      *string                `gorm:"column:product_analytics"`
	GrpcServerURL         *string                `gorm:"column:grpc_server_url"`
	PostgresServerConfig  *PostgresServerConfig  `gorm:"column:postgres_server_config;serializer:json"`
	SSHServerConfig       *SSHServerConfig       `gorm:"column:ssh_server_config;serializer:json"`
	RDPServerConfig       *RDPServerConfig       `gorm:"column:rdp_server_config;serializer:json"`
	HttpProxyServerConfig *HttpProxyServerConfig `gorm:"column:http_proxy_server_config;serializer:json"`
}

func GetServerMiscConfig

func GetServerMiscConfig() (*ServerMiscConfig, error)

func UpsertServerMiscConfig

func UpsertServerMiscConfig(newObj *ServerMiscConfig) (*ServerMiscConfig, error)

type ServiceAccount

type ServiceAccount struct {
	ID        string         `gorm:"column:id"`
	OrgID     string         `gorm:"column:org_id"`
	Subject   string         `gorm:"column:subject"`
	Name      string         `gorm:"column:name"`
	Groups    pq.StringArray `gorm:"column:groups;type:text[];->"`
	Status    string         `gorm:"column:status"`
	CreatedAt time.Time      `gorm:"column:created_at"`
	UpdatedAt time.Time      `gorm:"column:updated_at"`
}

func ListServiceAccounts

func ListServiceAccounts(orgID string) ([]ServiceAccount, error)

type Session

type Session struct {
	ID                   string            `gorm:"column:id"`
	OrgID                string            `gorm:"column:org_id"`
	Connection           string            `gorm:"column:connection"`
	ResourceName         string            `gorm:"column:resource_name;->"`
	ConnectionType       string            `gorm:"column:connection_type"`
	ConnectionSubtype    string            `gorm:"column:connection_subtype"`
	ConnectionTags       map[string]string `gorm:"column:connection_tags;serializer:json"`
	Verb                 string            `gorm:"column:verb"`
	Labels               map[string]string `gorm:"column:labels;serializer:json"`
	Metadata             map[string]any    `gorm:"column:metadata;serializer:json"`
	IntegrationsMetadata map[string]any    `gorm:"column:integrations_metadata;serializer:json"`
	Metrics              map[string]any    `gorm:"column:metrics;serializer:json"`
	BlobInputID          sql.NullString    `gorm:"column:blob_input_id"`
	BlobInput            BlobInputType     `gorm:"-"`
	BlobInputSize        int64             `gorm:"column:blob_input_size;->"`
	BlobStream           *Blob             `gorm:"-"`
	BlobStreamSize       int64             `gorm:"column:blob_stream_size;->"`
	UserID               string            `gorm:"column:user_id"`
	UserName             string            `gorm:"column:user_name"`
	UserEmail            string            `gorm:"column:user_email"`
	Status               string            `gorm:"column:status"`
	ExitCode             *int              `gorm:"column:exit_code"`
	Review               *SessionReview    `gorm:"column:review;->"`
	SessionBatchID       *string           `gorm:"column:session_batch_id"`

	CreatedAt  time.Time  `gorm:"column:created_at"`
	EndSession *time.Time `gorm:"column:ended_at"`
}

func GetSessionByID

func GetSessionByID(orgID, sid string) (*Session, error)

func (*Session) GetBlobInput

func (s *Session) GetBlobInput() (BlobInputType, error)

func (*Session) GetBlobStream

func (s *Session) GetBlobStream() (*Blob, error)

GetBlobStream retrieves the blob stream associated with the session It returns nil if the session does not have a blob stream associated with it.

type SessionDone

type SessionDone struct {
	ID         string
	OrgID      string
	Metrics    map[string]any
	BlobStream json.RawMessage
	BlobFormat *string
	ExitCode   *int
	Status     string
	EndSession *time.Time
}

type SessionList

type SessionList struct {
	Total       int64
	HasNextPage bool
	Items       []Session
}

func ListSessions

func ListSessions(orgID string, userId string, isAuditorOrAdmin bool, opt SessionOption) (*SessionList, error)

type SessionMetrics

type SessionMetrics struct {
	ID        string `gorm:"column:id;->"`
	OrgID     string `gorm:"column:org_id"`
	SessionID string `gorm:"column:session_id"`

	InfoType      string `gorm:"column:info_type"`
	CountMasked   int64  `gorm:"column:count_masked"`
	CountAnalyzed int64  `gorm:"column:count_analyzed"`

	ConnectionType    string         `gorm:"column:connection_type"`
	ConnectionSubtype sql.NullString `gorm:"column:connection_subtype"`

	SessionCreatedAt time.Time  `gorm:"column:session_created_at"`
	SessionEndedAt   *time.Time `gorm:"column:session_ended_at"`
}

type SessionMetricsAggregatedResult

type SessionMetricsAggregatedResult struct {
	TotalSessions         int64    `gorm:"column:total_sessions"`
	UniqueInfoTypes       int64    `gorm:"column:unique_info_types"`
	TotalMasked           int64    `gorm:"column:total_masked"`
	TotalAnalyzed         int64    `gorm:"column:total_analyzed"`
	SessionsWithMasking   int64    `gorm:"column:sessions_with_masking"`
	AvgSessionDurationSec *float64 `gorm:"column:avg_session_duration_sec"`
}

func GetSessionMetricsAggregated

func GetSessionMetricsAggregated(orgID string, filter SessionMetricsFilter) (*SessionMetricsAggregatedResult, error)

type SessionMetricsFilter

type SessionMetricsFilter struct {
	// Resource filters
	ConnectionTypes    []string `form:"connection_type"`
	ConnectionSubtypes []string `form:"connection_subtype"`
	ConnectionNames    []string `form:"connection_name"`

	// Data type filters (Presidio entity types)
	InfoTypes []string `form:"info_type"`

	// Masked/unmasked differentiation
	OnlyMasked   bool `form:"only_masked"`
	OnlyUnmasked bool `form:"only_unmasked"`

	// Date filters
	StartDate *time.Time `form:"start_date" time_format:"2006-01-02"`
	EndDate   *time.Time `form:"end_date" time_format:"2006-01-02"`

	// Session filters
	SessionIDs          []string   `form:"session_id"`
	SessionStartDate    *time.Time `form:"session_start_date" time_format:"2006-01-02"`
	SessionEndDate      *time.Time `form:"session_end_date" time_format:"2006-01-02"`
	MinDurationSec      *int       `form:"min_duration_sec"`
	MaxDurationSec      *int       `form:"max_duration_sec"`
	IncludeOpenSessions bool       `form:"include_open_sessions"`

	// Logic operator (AND/OR)
	LogicOperator string `form:"logic_operator"` // "and" or "or", default "and"

	// Pagination
	Page  int `form:"page"`
	Limit int `form:"limit"`
}

SessionMetricsFilter represents the filter parameters for querying session metrics

type SessionMetricsQueryResult

type SessionMetricsQueryResult struct {
	SessionID          string     `gorm:"column:session_id"`
	OrgID              string     `gorm:"column:org_id"`
	ConnectionType     string     `gorm:"column:connection_type"`
	ConnectionSubtype  *string    `gorm:"column:connection_subtype"`
	ConnectionName     string     `gorm:"column:connection_name"`
	InfoType           string     `gorm:"column:info_type"`
	CountMasked        int64      `gorm:"column:count_masked"`
	CountAnalyzed      int64      `gorm:"column:count_analyzed"`
	IsMasked           bool       `gorm:"column:is_masked"`
	SessionCreatedAt   time.Time  `gorm:"column:session_created_at"`
	SessionEndedAt     *time.Time `gorm:"column:session_ended_at"`
	SessionDurationSec *int       `gorm:"column:session_duration_sec"`
}

type SessionOption

type SessionOption struct {
	User                string
	ConnectionType      string
	ConnectionName      string
	ReviewStatus        string
	ReviewApproverEmail *string
	BatchID             *string
	JiraIssueKey        []string
	StartDate           sql.NullString
	EndDate             sql.NullString
	Offset              int
	Limit               int
}

func NewSessionOption

func NewSessionOption() SessionOption

type SessionReport

type SessionReport struct {
	Items                 []SessionReportItem `gorm:"column:items"`
	TotalRedactCount      int64               `gorm:"column:total_redact_count"`
	TotalTransformedBytes int64               `gorm:"column:total_transformed_bytes"`
}

func GetSessionReport

func GetSessionReport(orgID string, opts map[string]any) (*SessionReport, error)

type SessionReportItem

type SessionReportItem struct {
	ResourceName     string `gorm:"column:resource"`
	InfoType         string `gorm:"column:info_type"`
	RedactTotal      int64  `gorm:"column:redact_total"`
	TransformedBytes int64  `gorm:"column:transformed_bytes"`
}

type SessionReview

type SessionReview struct {
	ID                    string            `json:"id"`
	SessionID             string            `json:"session_id"`
	Type                  string            `json:"type"`
	Status                string            `json:"status"`
	CreatedAt             time.Time         `json:"created_at"`
	RevokedAt             *time.Time        `json:"revoked_at"`
	AccessDurationSec     int64             `json:"access_duration_sec"`
	ReviewGroups          []ReviewGroups    `json:"review_groups" gorm:"review_groups;serializer:json"`
	TimeWindow            *ReviewTimeWindow `json:"time_window" gorm:"time_window;serializer:json;"`
	AccessRequestRuleName *string           `json:"access_request_rule_name"`
	ForceApprovalGroups   pq.StringArray    `json:"force_approval_groups" gorm:"force_approval_groups;serializer:json;"`
	MinApprovals          *int              `json:"min_approvals"`
}

func (*SessionReview) Scan

func (r *SessionReview) Scan(value any) error

type SupportedEntityTypesEntry

type SupportedEntityTypesEntry struct {
	Name        string   `json:"name"`
	EntityTypes []string `json:"entity_types"`
}

type SupportedEntityTypesList

type SupportedEntityTypesList []SupportedEntityTypesEntry

func (*SupportedEntityTypesList) Scan

func (r *SupportedEntityTypesList) Scan(value any) error

type User

type User struct {
	ID             string `gorm:"column:id"`
	OrgID          string `gorm:"column:org_id"`
	Subject        string `gorm:"column:subject"`
	Name           string `gorm:"column:name"`
	Picture        string `gorm:"column:picture"`
	Email          string `gorm:"column:email"`
	Verified       bool   `gorm:"column:verified"`
	Status         string `gorm:"column:status"`
	SlackID        string `gorm:"column:slack_id"`
	HashedPassword string `gorm:"column:hashed_password"`
}

func GetInvitedUserByEmail

func GetInvitedUserByEmail(email string) (*User, error)

func GetUserByEmail

func GetUserByEmail(email string) (*User, error)

func GetUserByEmailAndOrg

func GetUserByEmailAndOrg(email, orgID string) (*User, error)

func GetUserByOrgIDAndSlackID

func GetUserByOrgIDAndSlackID(orgID, slackID string) (*User, error)

func GetUserBySubjectAndOrg

func GetUserBySubjectAndOrg(subject, orgID string) (*User, error)

func ListUsers

func ListUsers(orgID string) ([]User, error)

type UserContext

type UserContext interface {
	GetUserID() string
	GetOrgID() string
	IsAdmin() bool
	GetUserGroups() []string
}

func NewAdminContext

func NewAdminContext(orgID string) UserContext

NewAdminContext creates a new UserContext with admin privileges. It should when a component needs to perform actions that require admin access.

type UserGroup

type UserGroup struct {
	OrgID            string
	UserID           string
	ServiceAccountId sql.NullString
	Name             string
}

func GetUserGroupsByOrgID

func GetUserGroupsByOrgID(orgID string) ([]UserGroup, error)

func GetUserGroupsByUserID

func GetUserGroupsByUserID(userID string) ([]UserGroup, error)

type UserToken

type UserToken struct {
	UserID string `gorm:"column:user_id"`
	Token  string `gorm:"column:token"`
}

func GetUserToken

func GetUserToken(db *gorm.DB, userID string) (*UserToken, error)

type UserV2

type UserV2 struct {
	ID             string         `gorm:"column:id"`
	OrgID          string         `gorm:"column:org_id"`
	Subject        string         `gorm:"column:subject"`
	Email          string         `gorm:"column:email"`
	Name           string         `gorm:"column:name"`
	Verified       bool           `gorm:"column:verified"`
	Status         string         `gorm:"column:status"`
	Groups         pq.StringArray `gorm:"column:groups;type:text[];->"`
	SlackID        *string        `gorm:"column:slack_id"`
	Picture        *string        `gorm:"column:picture"`
	HashedPassword *string        `gorm:"column:hashed_password"`
}

func GetUserByEmailV2

func GetUserByEmailV2(email string) (*UserV2, error)

Directories

Path Synopsis

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL