models

package
v0.0.0-...-7c170af Latest Latest
Warning

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

Go to latest
Published: Jun 3, 2024 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// BusinessCaseStatusOPEN captures enum value "OPEN"
	BusinessCaseStatusOPEN BusinessCaseStatus = "OPEN"
	// BusinessCaseStatusCLOSED captures enum value "CLOSED"
	BusinessCaseStatusCLOSED BusinessCaseStatus = "CLOSED"

	// LifecycleCostPhaseDEVELOPMENT captures enum value "Development"
	LifecycleCostPhaseDEVELOPMENT LifecycleCostPhase = "Development"
	// LifecycleCostPhaseOPERATIONMAINTENANCE captures enum value "Operations and Maintenance"
	LifecycleCostPhaseOPERATIONMAINTENANCE LifecycleCostPhase = "Operations and Maintenance"
	// LifecycleCostPhaseHELPDESK captures enum value "Help desk/call center"
	LifecycleCostPhaseHELPDESK LifecycleCostPhase = "Help desk/call center"
	// LifecycleCostPhaseSOFTWARE captures enum value "Software licenses"
	LifecycleCostPhaseSOFTWARE LifecycleCostPhase = "Software licenses"
	// LifecycleCostPhasePLANNING captures enum value "Planning, support, and professional services"
	LifecycleCostPhasePLANNING LifecycleCostPhase = "Planning, support, and professional services"
	// LifecycleCostPhaseINFRASTRUCTURE captures enum value "Infrastructure"
	LifecycleCostPhaseINFRASTRUCTURE LifecycleCostPhase = "Infrastructure"
	// LifecycleCostPhaseOIT captures enum value "OIT Services, tools, and pilots"
	LifecycleCostPhaseOIT LifecycleCostPhase = "OIT Services, tools, and pilots"
	// LifecycleCostPhaseOTHER captures enum value "Other"
	LifecycleCostPhaseOTHER LifecycleCostPhase = "Other"

	// LifecycleCostSolutionPREFERRED captures enum value "Preferred"
	LifecycleCostSolutionPREFERRED LifecycleCostSolution = "Preferred"
	// LifecycleCostSolutionA captures enum value "A"
	LifecycleCostSolutionA LifecycleCostSolution = "A"
	// LifecycleCostSolutionB captures enum value "B"
	LifecycleCostSolutionB LifecycleCostSolution = "B"

	// LifecycleCostYear1 captures enum value "1"
	LifecycleCostYear1 LifecycleCostYear = "1"
	// LifecycleCostYear2 captures enum value "2"
	LifecycleCostYear2 LifecycleCostYear = "2"
	// LifecycleCostYear3 captures enum value "3"
	LifecycleCostYear3 LifecycleCostYear = "3"
	// LifecycleCostYear4 captures enum value "4"
	LifecycleCostYear4 LifecycleCostYear = "4"
	// LifecycleCostYear5 captures enum value "5"
	LifecycleCostYear5 LifecycleCostYear = "5"
)
View Source
const (
	// SystemIntakeDocumentStatusAvailable means that the document passed the virus scanning
	SystemIntakeDocumentStatusAvailable SystemIntakeDocumentStatus = "AVAILABLE"
	// SystemIntakeDocumentStatusPending means that the document was just uploaded and hasn't yet been scanned for viruses
	SystemIntakeDocumentStatusPending SystemIntakeDocumentStatus = "PENDING"
	// SystemIntakeDocumentStatusUnavailable means that the document failed virus scanning
	SystemIntakeDocumentStatusUnavailable SystemIntakeDocumentStatus = "UNAVAILABLE"

	// SystemIntakeDocumentCommonTypeSOOSOW means the document is an SOO or SOW
	SystemIntakeDocumentCommonTypeSOOSOW SystemIntakeDocumentCommonType = "SOO_SOW"
	// SystemIntakeDocumentCommonTypeDraftICGE means the document is a draft ICGE
	SystemIntakeDocumentCommonTypeDraftICGE SystemIntakeDocumentCommonType = "DRAFT_ICGE"
	// SystemIntakeDocumentCommonTypeDraftOther means the document is some type other than the common document types
	SystemIntakeDocumentCommonTypeDraftOther SystemIntakeDocumentCommonType = "OTHER"
)
View Source
const (
	TRBRequestStatusNew                  = "NEW"
	TRBRequestStatusDraftRequestForm     = "DRAFT_REQUEST_FORM"
	TRBRequestStatusRequestFormComplete  = "REQUEST_FORM_COMPLETE"
	TRBRequestStatusReadyForConsult      = "READY_FOR_CONSULT"
	TRBRequestStatusConsultScheduled     = "CONSULT_SCHEDULED"
	TRBRequestStatusConsultComplete      = "CONSULT_COMPLETE"
	TRBRequestStatusDraftAdviceLetter    = "DRAFT_ADVICE_LETTER"
	TRBRequestStatusAdviceLetterInReview = "ADVICE_LETTER_IN_REVIEW"
	TRBRequestStatusAdviceLetterSent     = "ADVICE_LETTER_SENT"
	TRBRequestStatusFollowUpRequested    = "FOLLOW_UP_REQUESTED"
)

These are the possible values for TRBRequestStatus

View Source
const (
	// TRBRequestDocumentStatusAvailable means that the document passed the virus scanning
	TRBRequestDocumentStatusAvailable TRBRequestDocumentStatus = "AVAILABLE"
	// TRBRequestDocumentStatusPending means that the document was just uploaded and hasn't yet been scanned for viruses
	TRBRequestDocumentStatusPending TRBRequestDocumentStatus = "PENDING"
	// TRBRequestDocumentStatusUnavailable means that the document failed virus scanning
	TRBRequestDocumentStatusUnavailable TRBRequestDocumentStatus = "UNAVAILABLE"

	// TRBRequestDocumentCommonTypeArchitectureDiagram means the document is an architecture diagram
	TRBRequestDocumentCommonTypeArchitectureDiagram TRBDocumentCommonType = "ARCHITECTURE_DIAGRAM"
	// TRBRequestDocumentCommonTypePresentationSlideDeck means the document is a presentation slide deck
	TRBRequestDocumentCommonTypePresentationSlideDeck TRBDocumentCommonType = "PRESENTATION_SLIDE_DECK"
	// TRBRequestDocumentCommonTypeBusinessCase means the document is a business case
	TRBRequestDocumentCommonTypeBusinessCase TRBDocumentCommonType = "BUSINESS_CASE"
	// TRBRequestDocumentCommonTypeOther means the document is some type other than the common document types
	TRBRequestDocumentCommonTypeOther TRBDocumentCommonType = "OTHER"
)

Variables

Functions

func ContainsAllIDs

func ContainsAllIDs[BS IBaseStruct](models []BS, ids []uuid.UUID) bool

ContainsAllIDs checks if the IDs from a slice of BaseStructs contain all the given IDs

func ConvertEnums

func ConvertEnums[EnumType ~string](pqGroups pq.StringArray) []EnumType

ConvertEnums converts a pq.StringArray to specific, castable type

func EmailAddressesToStringPtrs

func EmailAddressesToStringPtrs(addresses []EmailAddress) []*string

EmailAddressesToStringPtrs converts a slice of EmailAddresses to a slice of string pointers

func EmailAddressesToStrings

func EmailAddressesToStrings(addresses []EmailAddress) []string

EmailAddressesToStrings converts a slice of EmailAddresses to a slice of string values

func MarshalNullBool

func MarshalNullBool(nb null.Bool) graphql.Marshaler

func MarshalNullFloat

func MarshalNullFloat(zf null.Float) graphql.Marshaler

func MarshalNullInt

func MarshalNullInt(ni null.Int) graphql.Marshaler

func MarshalNullString

func MarshalNullString(ns null.String) graphql.Marshaler

func MarshalUUID

func MarshalUUID(id uuid.UUID) graphql.Marshaler

MarshalUUID allows uuid to be marshalled by graphql

func MarshalZeroBool

func MarshalZeroBool(zb zero.Bool) graphql.Marshaler

func MarshalZeroFloat

func MarshalZeroFloat(zf zero.Float) graphql.Marshaler

func MarshalZeroInt

func MarshalZeroInt(zi zero.Int) graphql.Marshaler

func MarshalZeroString

func MarshalZeroString(zs zero.String) graphql.Marshaler

func MarshalZeroTime

func MarshalZeroTime(zt zero.Time) graphql.Marshaler

func NewUserIDRelation

func NewUserIDRelation(userID uuid.UUID) userIDRelation

NewUserIDRelation returns a user ID relation object

func StringsFromZeroStrs

func StringsFromZeroStrs(zs []zero.String) []string

func UnmarshalNullBool

func UnmarshalNullBool(v interface{}) (null.Bool, error)

func UnmarshalNullFloat

func UnmarshalNullFloat(v interface{}) (null.Float, error)

func UnmarshalNullInt

func UnmarshalNullInt(v interface{}) (null.Int, error)

func UnmarshalNullString

func UnmarshalNullString(v interface{}) (null.String, error)

func UnmarshalUUID

func UnmarshalUUID(v interface{}) (uuid.UUID, error)

UnmarshalUUID allows uuid to be unmarshalled by graphql

func UnmarshalZeroBool

func UnmarshalZeroBool(v interface{}) (zero.Bool, error)

func UnmarshalZeroFloat

func UnmarshalZeroFloat(v interface{}) (zero.Float, error)

func UnmarshalZeroInt

func UnmarshalZeroInt(v interface{}) (zero.Int, error)

func UnmarshalZeroString

func UnmarshalZeroString(v interface{}) (zero.String, error)

func UnmarshalZeroTime

func UnmarshalZeroTime(v interface{}) (zero.Time, error)

func ZeroStringsFrom

func ZeroStringsFrom(strs []string) []zero.String

Types

type Action

type Action struct {
	ID                                       uuid.UUID         `json:"id"`
	IntakeID                                 *uuid.UUID        `db:"intake_id"`
	BusinessCaseID                           *uuid.UUID        `db:"business_case_id"`
	ActionType                               ActionType        `json:"actionType" db:"action_type"`
	ActorName                                string            `json:"actorName" db:"actor_name"`
	ActorEmail                               EmailAddress      `json:"actorEmail" db:"actor_email"`
	ActorEUAUserID                           string            `json:"actorEuaUserId" db:"actor_eua_user_id"`
	Feedback                                 *HTML             `json:"feedback"`       // Feedback to requestor sent via email
	Step                                     *SystemIntakeStep `json:"step" db:"step"` // optional to account for previous actions that didn't save Step information
	CreatedAt                                *time.Time        `json:"createdAt" db:"created_at"`
	LCIDExpirationChangeNewDate              *time.Time        `db:"lcid_expiration_change_new_date"`
	LCIDExpirationChangePreviousDate         *time.Time        `db:"lcid_expiration_change_previous_date"`
	LCIDExpirationChangeNewScope             *HTML             `db:"lcid_expiration_change_new_scope"`
	LCIDExpirationChangePreviousScope        *HTML             `db:"lcid_expiration_change_previous_scope"`
	LCIDExpirationChangeNewNextSteps         *HTML             `db:"lcid_expiration_change_new_next_steps"`
	LCIDExpirationChangePreviousNextSteps    *HTML             `db:"lcid_expiration_change_previous_next_steps"`
	LCIDExpirationChangeNewCostBaseline      null.String       `db:"lcid_expiration_change_new_cost_baseline"`
	LCIDExpirationChangePreviousCostBaseline null.String       `db:"lcid_expiration_change_previous_cost_baseline"`
	LCIDRetirementChangeNewDate              *time.Time        `json:"newRetirementDate" db:"lcid_retirement_change_new_date"`
	LCIDRetirementChangePreviousDate         *time.Time        `json:"previousRetirementDate" db:"lcid_retirement_change_previous_date"`
}

Action is the model for an action on a system intake

type ActionType

type ActionType string

ActionType represents type of action

const (
	ActionTypePROGRESSTONEWSTEP        ActionType = "PROGRESS_TO_NEW_STEP"
	ActionTypeEXPIRELCID               ActionType = "EXPIRE_LCID"
	ActionTypeUPDATELCID               ActionType = "UPDATE_LCID"
	ActionTypeCONFIRMLCID              ActionType = "CONFIRM_LCID"
	ActionTypeREQUESTEDITS             ActionType = "REQUEST_EDITS"
	ActionTypeCLOSEREQUEST             ActionType = "CLOSE_REQUEST"
	ActionTypeREOPENREQUEST            ActionType = "REOPEN_REQUEST"
	ActionTypeNOTITGOVREQUEST          ActionType = "NOT_GOVERNANCE"
	ActionTypeRETIRELCID               ActionType = "RETIRE_LCID"
	ActionTypeCHANGELCIDRETIREMENTDATE ActionType = "CHANGE_LCID_RETIREMENT_DATE"
)

IT Gov v2 actions

const (
	ActionTypeISSUELCID    ActionType = "ISSUE_LCID"
	ActionTypeREJECT       ActionType = "REJECT"
	ActionTypeSUBMITINTAKE ActionType = "SUBMIT_INTAKE"
)

v1/v2 actions - originally from v1, still used in IT Gov v2

const (
	// ActionTypeNOTITREQUEST captures enum value NOT_IT_REQUEST
	ActionTypeNOTITREQUEST ActionType = "NOT_IT_REQUEST"
	// ActionTypeNEEDBIZCASE captures enum value NEED_BIZ_CASE
	ActionTypeNEEDBIZCASE ActionType = "NEED_BIZ_CASE"
	// ActionTypeREADYFORGRT captures enum value READY_FOR_GRT
	ActionTypeREADYFORGRT ActionType = "READY_FOR_GRT"
	// ActionTypeREADYFORGRB captures enum value READY_FOR_GRB
	ActionTypeREADYFORGRB ActionType = "READY_FOR_GRB"
	// ActionTypePROVIDEFEEDBACKNEEDBIZCASE captures enum value PROVIDE_FEEDBACK_NEED_BIZ_CASE
	ActionTypePROVIDEFEEDBACKNEEDBIZCASE ActionType = "PROVIDE_FEEDBACK_NEED_BIZ_CASE"
	// ActionTypeEXTENDLCID captures enum value EXTEND_LCID
	ActionTypeEXTENDLCID ActionType = "EXTEND_LCID"
	// ActionTypeCREATEBIZCASE captures enum value CREATE_BIZ_CASE
	ActionTypeCREATEBIZCASE ActionType = "CREATE_BIZ_CASE"
	// ActionTypeSUBMITBIZCASE captures enum value SUBMIT_BIZ_CASE
	ActionTypeSUBMITBIZCASE ActionType = "SUBMIT_BIZ_CASE"
	// ActionTypeSUBMITFINALBIZCASE captures enum value SUBMIT_FINAL_BIZ_CASE
	ActionTypeSUBMITFINALBIZCASE ActionType = "SUBMIT_FINAL_BIZ_CASE"
	// ActionTypeBIZCASENEEDSCHANGES captures enum value BIZ_CASE_NEEDS_CHANGES
	ActionTypeBIZCASENEEDSCHANGES ActionType = "BIZ_CASE_NEEDS_CHANGES"
	// ActionTypePROVIDEFEEDBACKBIZCASENEEDSCHANGES captures enum value PROVIDE_GRT_FEEDBACK_BIZ_CASE_DRAFT
	ActionTypePROVIDEFEEDBACKBIZCASENEEDSCHANGES ActionType = "PROVIDE_GRT_FEEDBACK_BIZ_CASE_DRAFT"
	// ActionTypePROVIDEFEEDBACKBIZCASEFINAL captures enum value PROVIDE_GRT_FEEDBACK_BIZ_CASE_FINAL
	ActionTypePROVIDEFEEDBACKBIZCASEFINAL ActionType = "PROVIDE_GRT_FEEDBACK_BIZ_CASE_FINAL"
	// ActionTypeNOGOVERNANCENEEDED captures enum value NO_GOVERNANCE_NEEDED
	ActionTypeNOGOVERNANCENEEDED ActionType = "NO_GOVERNANCE_NEEDED"
	// ActionTypeSENDEMAIL captures enum value SEND_EMAIL
	ActionTypeSENDEMAIL ActionType = "SEND_EMAIL"
	// ActionTypeGUIDERECEIVEDCLOSE captures enum value GUIDE_RECEIVED_CLOSE
	ActionTypeGUIDERECEIVEDCLOSE ActionType = "GUIDE_RECEIVED_CLOSE"
	// ActionTypeNOTRESPONDINGCLOSE captures enum value NOT_RESPONDING_CLOSE
	ActionTypeNOTRESPONDINGCLOSE ActionType = "NOT_RESPONDING_CLOSE"
)

v1 actions - no longer used in IT Gov v2 workflow

type AugmentedSystemIntakeContact

type AugmentedSystemIntakeContact struct {
	SystemIntakeContact
	CommonName string       `json:"commonName"`
	Email      EmailAddress `json:"email"`
}

AugmentedSystemIntakeContact enhances SystemIntakeContact with user info fetched from CEDAR

type BaseStruct

type BaseStruct struct {
	ID         uuid.UUID  `json:"id" db:"id"`
	CreatedBy  string     `json:"createdBy" db:"created_by"`
	CreatedAt  time.Time  `json:"createdAt" db:"created_at"`
	ModifiedBy *string    `json:"modifiedBy" db:"modified_by"`
	ModifiedAt *time.Time `json:"modifiedAt" db:"modified_at"`
}

BaseStruct represents the shared data in common betwen all models

func NewBaseStruct

func NewBaseStruct(createdBy string) BaseStruct

NewBaseStruct returns a base struct object

func (*BaseStruct) GetBaseStruct

func (b *BaseStruct) GetBaseStruct() *BaseStruct

GetBaseStruct returns the Base Struct

func (BaseStruct) GetCreatedBy

func (b BaseStruct) GetCreatedBy() string

GetCreatedBy implements the CreatedBy property

func (BaseStruct) GetID

func (b BaseStruct) GetID() uuid.UUID

GetID returns the ID property for a PlanBasics struct

func (BaseStruct) GetModifiedBy

func (b BaseStruct) GetModifiedBy() *string

GetModifiedBy returns the ModifiedBy property for a PlanBasics struct

func (*BaseStruct) SetModifiedBy

func (b *BaseStruct) SetModifiedBy(principal authentication.Principal) error

SetModifiedBy sets the modifiedBy information based off a Principal object

type BaseStructUser

type BaseStructUser struct {
	ID uuid.UUID `json:"id" db:"id"`
	// contains filtered or unexported fields
}

BaseStructUser represents the shared data in common betwen all models

func NewBaseStructUser

func NewBaseStructUser(createdBy uuid.UUID) BaseStructUser

NewBaseStructUser returns a base struct object

func (*BaseStructUser) CreatedByUserAccount

func (cbr *BaseStructUser) CreatedByUserAccount(ctx context.Context) *authentication.UserAccount

CreatedByUserAccount returns the user account of the user who created the struct from the DB using the UserAccount service

func (*BaseStructUser) GetBaseStruct

func (b *BaseStructUser) GetBaseStruct() *BaseStructUser

GetBaseStruct returns the Base Struct User Object

func (BaseStructUser) GetCreatedBy

func (b BaseStructUser) GetCreatedBy() string

GetCreatedBy implements the CreatedBy property

func (BaseStructUser) GetID

func (b BaseStructUser) GetID() uuid.UUID

GetID returns the ID property for a PlanBasics struct

func (BaseStructUser) GetModifiedBy

func (b BaseStructUser) GetModifiedBy() *string

GetModifiedBy returns the ModifiedBy property for a PlanBasics struct

func (*BaseStructUser) ModifiedByUserAccount

func (mbr *BaseStructUser) ModifiedByUserAccount(ctx context.Context) *authentication.UserAccount

ModifiedByUserAccount returns the user account of the user who modified the struct from the DB using the UserAccount service

type BudgetActualCost

type BudgetActualCost struct {
	ActualSystemCost zero.String `json:"actualSystemCost,omitempty"`
	FiscalYear       zero.String `json:"fiscalYear,omitempty"`
	SystemID         zero.String `json:"systemId,omitempty"`
}

type BusinessCase

type BusinessCase struct {
	ID                                  uuid.UUID               `json:"id"`
	EUAUserID                           string                  `json:"euaUserId" db:"eua_user_id"`
	SystemIntakeID                      uuid.UUID               `json:"systemIntakeId" db:"system_intake"`
	Status                              BusinessCaseStatus      `json:"status"`
	ProjectName                         null.String             `json:"projectName" db:"project_name"`
	Requester                           null.String             `json:"requester"`
	RequesterPhoneNumber                null.String             `json:"requesterPhoneNumber" db:"requester_phone_number"`
	BusinessOwner                       null.String             `json:"businessOwner" db:"business_owner"`
	BusinessNeed                        null.String             `json:"businessNeed" db:"business_need"`
	CurrentSolutionSummary              null.String             `json:"currentSolutionSummary" db:"current_solution_summary"`
	CMSBenefit                          null.String             `json:"cmsBenefit" db:"cms_benefit"`
	PriorityAlignment                   null.String             `json:"priorityAlignment" db:"priority_alignment"`
	SuccessIndicators                   null.String             `json:"successIndicators" db:"success_indicators"`
	PreferredTitle                      null.String             `json:"preferredTitle" db:"preferred_title"`
	PreferredSummary                    null.String             `json:"preferredSummary" db:"preferred_summary"`
	PreferredAcquisitionApproach        null.String             `json:"preferredAcquisitionApproach" db:"preferred_acquisition_approach"`
	PreferredSecurityIsApproved         null.Bool               `json:"preferredSecurityIsApproved" db:"preferred_security_is_approved"`
	PreferredSecurityIsBeingReviewed    null.String             `json:"preferredSecurityIsBeingReviewed" db:"preferred_security_is_being_reviewed"`
	PreferredHostingType                null.String             `json:"preferredHostingType" db:"preferred_hosting_type"`
	PreferredHostingLocation            null.String             `json:"preferredHostingLocation" db:"preferred_hosting_location"`
	PreferredHostingCloudServiceType    null.String             `json:"preferredHostingCloudServiceType" db:"preferred_hosting_cloud_service_type"`
	PreferredHasUI                      null.String             `json:"preferredHasUI" db:"preferred_has_ui"`
	PreferredPros                       null.String             `json:"preferredPros" db:"preferred_pros"`
	PreferredCons                       null.String             `json:"preferredCons" db:"preferred_cons"`
	PreferredCostSavings                null.String             `json:"preferredCostSavings" db:"preferred_cost_savings"`
	AlternativeATitle                   null.String             `json:"alternativeATitle" db:"alternative_a_title"`
	AlternativeASummary                 null.String             `json:"alternativeASummary" db:"alternative_a_summary"`
	AlternativeAAcquisitionApproach     null.String             `json:"alternativeAAcquisitionApproach" db:"alternative_a_acquisition_approach"`
	AlternativeASecurityIsApproved      null.Bool               `json:"alternativeASecurityIsApproved" db:"alternative_a_security_is_approved"`
	AlternativeASecurityIsBeingReviewed null.String             `json:"alternativeASecurityIsBeingReviewed" db:"alternative_a_security_is_being_reviewed"`
	AlternativeAHostingType             null.String             `json:"alternativeAHostingType" db:"alternative_a_hosting_type"`
	AlternativeAHostingLocation         null.String             `json:"alternativeAHostingLocation" db:"alternative_a_hosting_location"`
	AlternativeAHostingCloudServiceType null.String             `json:"alternativeAHostingCloudServiceType" db:"alternative_a_hosting_cloud_service_type"`
	AlternativeAHasUI                   null.String             `json:"alternativeAHasUI" db:"alternative_a_has_ui"`
	AlternativeAPros                    null.String             `json:"alternativeAPros" db:"alternative_a_pros"`
	AlternativeACons                    null.String             `json:"alternativeACons" db:"alternative_a_cons"`
	AlternativeACostSavings             null.String             `json:"alternativeACostSavings" db:"alternative_a_cost_savings"`
	AlternativeBTitle                   null.String             `json:"alternativeBTitle" db:"alternative_b_title"`
	AlternativeBSummary                 null.String             `json:"alternativeBSummary" db:"alternative_b_summary"`
	AlternativeBAcquisitionApproach     null.String             `json:"alternativeBAcquisitionApproach" db:"alternative_b_acquisition_approach"`
	AlternativeBSecurityIsApproved      null.Bool               `json:"alternativeBSecurityIsApproved" db:"alternative_b_security_is_approved"`
	AlternativeBSecurityIsBeingReviewed null.String             `json:"alternativeBSecurityIsBeingReviewed" db:"alternative_b_security_is_being_reviewed"`
	AlternativeBHostingType             null.String             `json:"alternativeBHostingType" db:"alternative_b_hosting_type"`
	AlternativeBHostingLocation         null.String             `json:"alternativeBHostingLocation" db:"alternative_b_hosting_location"`
	AlternativeBHostingCloudServiceType null.String             `json:"alternativeBHostingCloudServiceType" db:"alternative_b_hosting_cloud_service_type"`
	AlternativeBHasUI                   null.String             `json:"alternativeBHasUI" db:"alternative_b_has_ui"`
	AlternativeBPros                    null.String             `json:"alternativeBPros" db:"alternative_b_pros"`
	AlternativeBCons                    null.String             `json:"alternativeBCons" db:"alternative_b_cons"`
	AlternativeBCostSavings             null.String             `json:"alternativeBCostSavings" db:"alternative_b_cost_savings"`
	LifecycleCostLines                  EstimatedLifecycleCosts `json:"lifecycleCostLines" db:"lifecycle_cost_lines"`
	CreatedAt                           *time.Time              `json:"createdAt" db:"created_at"`
	UpdatedAt                           *time.Time              `json:"updatedAt" db:"updated_at"`
	ArchivedAt                          *time.Time              `db:"archived_at"`
}

BusinessCase is the model for the business case form.

type BusinessCaseSolution

type BusinessCaseSolution struct {
	AcquisitionApproach     *string `json:"acquisitionApproach,omitempty"`
	Cons                    *string `json:"cons,omitempty"`
	CostSavings             *string `json:"costSavings,omitempty"`
	HasUI                   *string `json:"hasUi,omitempty"`
	HostingCloudServiceType *string `json:"hostingCloudServiceType,omitempty"`
	HostingLocation         *string `json:"hostingLocation,omitempty"`
	HostingType             *string `json:"hostingType,omitempty"`
	Pros                    *string `json:"pros,omitempty"`
	SecurityIsApproved      *bool   `json:"securityIsApproved,omitempty"`
	SecurityIsBeingReviewed *string `json:"securityIsBeingReviewed,omitempty"`
	Summary                 *string `json:"summary,omitempty"`
	Title                   *string `json:"title,omitempty"`
}

A solution proposal within a business case

type BusinessCaseStatus

type BusinessCaseStatus string

BusinessCaseStatus represents the status of a system intake

type BusinessCases

type BusinessCases []BusinessCase

BusinessCases is the model for a list of business cases

type BusinessOwnerInformation

type BusinessOwnerInformation struct {
	BeneficiaryAddressPurpose      []zero.String `json:"beneficiaryAddressPurpose"`
	BeneficiaryAddressPurposeOther zero.String   `json:"beneficiaryAddressPurposeOther"`
	BeneficiaryAddressSource       []zero.String `json:"beneficiaryAddressSource"`
	BeneficiaryAddressSourceOther  zero.String   `json:"beneficiaryAddressSourceOther"`
	BeneficiaryInformation         []zero.String `json:"beneficiaryInformation"`
	CostPerYear                    zero.String   `json:"costPerYear"`
	EditBeneficiaryInformation     bool          `json:"editBeneficiaryInformation,omitempty"`
	IsCmsOwned                     bool          `json:"isCmsOwned"`
	Nr508UserInterface             zero.String   `json:"nr508UserInterface,omitempty"`
	NumberOfContractorFte          zero.String   `json:"numberOfContractorFte"`
	NumberOfFederalFte             zero.String   `json:"numberOfFederalFte"`
	NumberOfSupportedUsersPerMonth zero.String   `json:"numberOfSupportedUsersPerMonth"`
	StoresBankingData              bool          `json:"storesBankingData"`
	StoresBeneficiaryAddress       bool          `json:"storesBeneficiaryAddress"`
}

BusinessOwnerInformation contains information about the business owner for a CEDAR system

type CedarAssigneeType

type CedarAssigneeType string

CedarAssigneeType represents the possible types of assignees that can receive roles

const (
	// PersonAssignee represents a person that's been assigned a role
	PersonAssignee CedarAssigneeType = "PERSON"
	// OrganizationAssignee represents an organization that's been assigned a role
	OrganizationAssignee CedarAssigneeType = "ORGANIZATION"
)

these values need to be in all-caps so that they match the GraphQL enum and match the frontend types generated from the GQL schema

type CedarAuthorityToOperate

type CedarAuthorityToOperate struct {
	// always-present fields
	CedarID               zero.String   `json:"cedarId"`
	UUID                  zero.String   `json:"uuid"`
	SystemOfRecordsNotice []zero.String `json:"systemOfRecordsNotice"`

	// possibly-null fields
	ActualDispositionDate                     zero.Time   `json:"actualDispositionDate"`
	ContainsPersonallyIdentifiableInformation bool        `json:"containsPersonallyIdentifiableInformation"`
	CountOfTotalNonPrivilegedUserPopulation   int         `json:"countOfTotalNonPrivilegedUserPopulation"`
	CountOfOpenPoams                          int         `json:"countOfOpenPoams"`
	CountOfTotalPrivilegedUserPopulation      int         `json:"countOfTotalPrivilegedUserPopulation"`
	DateAuthorizationMemoExpires              zero.Time   `json:"dateAuthorizationMemoExpires"`
	DateAuthorizationMemoSigned               zero.Time   `json:"dateAuthorizationMemoSigned"`
	EAuthenticationLevel                      zero.String `json:"eAuthenticationLevel"`
	Fips199OverallImpactRating                int         `json:"fips199OverallImpactRating"`
	FismaSystemAcronym                        zero.String `json:"fismaSystemAcronym"`
	FismaSystemName                           zero.String `json:"fismaSystemName"`
	IsAccessedByNonOrganizationalUsers        bool        `json:"isAccessedByNonOrganizationalUsers"`
	IsPiiLimitedToUserNameAndPass             bool        `json:"isPiiLimitedToUserNameAndPass"`
	IsProtectedHealthInformation              bool        `json:"isProtectedHealthInformation"`
	LastActScaDate                            zero.Time   `json:"lastActScaDate"`
	LastAssessmentDate                        zero.Time   `json:"lastAssessmentDate"`
	LastContingencyPlanCompletionDate         zero.Time   `json:"lastContingencyPlanCompletionDate"`
	LastPenTestDate                           zero.Time   `json:"lastPenTestDate"`
	PiaCompletionDate                         zero.Time   `json:"piaCompletionDate"`
	PrimaryCyberRiskAdvisor                   zero.String `json:"primaryCyberRiskAdvisor"`
	PrivacySubjectMatterExpert                zero.String `json:"privacySubjectMatterExpert"`
	RecoveryPointObjective                    float64     `json:"recoveryPointObjective"`
	RecoveryTimeObjective                     float64     `json:"recoveryTimeObjective"`
	TLCPhase                                  zero.String `json:"tlcPhase"`
	XLCPhase                                  zero.String `json:"xlcPhase"`
}

CedarAuthorityToOperate is the model for ATO information that comes back from the CEDAR Core API

type CedarBudget

type CedarBudget struct {
	FiscalYear    zero.String `json:"fiscalYear,omitempty"`
	Funding       zero.String `json:"funding,omitempty"`
	FundingID     zero.String `json:"fundingId,omitempty"`
	FundingSource zero.String `json:"fundingSource,omitempty"`
	ID            zero.String `json:"id,omitempty"`
	Name          zero.String `json:"name,omitempty"`
	ProjectID     zero.String `json:"projectId"`
	ProjectTitle  zero.String `json:"projectTitle,omitempty"`
	SystemID      zero.String `json:"systemId,omitempty"`
}

type CedarBudgetActualCost

type CedarBudgetActualCost struct {
	ActualSystemCost *string `json:"actualSystemCost,omitempty"`
	FiscalYear       *string `json:"fiscalYear,omitempty"`
	SystemID         *string `json:"systemId,omitempty"`
}

CedarBudgetActualCost represents an individual budget actual cost item; this information is returned from the CEDAR Core API as a part of the CedarBudgetSystemCost object

type CedarBudgetSystemCost

type CedarBudgetSystemCost struct {
	// Always present fields
	BudgetActualCosts []*BudgetActualCost `json:"budgetActualCosts"`
}

type CedarBusinessOwnerInformation

type CedarBusinessOwnerInformation struct {
	BeneficiaryAddressPurpose      []string `json:"beneficiaryAddressPurpose"`
	BeneficiaryAddressPurposeOther *string  `json:"beneficiaryAddressPurposeOther,omitempty"`
	BeneficiaryAddressSource       []string `json:"beneficiaryAddressSource"`
	BeneficiaryAddressSourceOther  *string  `json:"beneficiaryAddressSourceOther,omitempty"`
	BeneficiaryInformation         []string `json:"beneficiaryInformation"`
	CostPerYear                    *string  `json:"costPerYear,omitempty"`
	EditBeneficiaryInformation     *bool    `json:"editBeneficiaryInformation,omitempty"`
	IsCmsOwned                     *bool    `json:"isCmsOwned,omitempty"`
	Nr508UserInterface             *string  `json:"nr508UserInterface,omitempty"`
	NumberOfContractorFte          *string  `json:"numberOfContractorFte,omitempty"`
	NumberOfFederalFte             *string  `json:"numberOfFederalFte,omitempty"`
	NumberOfSupportedUsersPerMonth *string  `json:"numberOfSupportedUsersPerMonth,omitempty"`
	StoresBankingData              *bool    `json:"storesBankingData,omitempty"`
	StoresBeneficiaryAddress       *bool    `json:"storesBeneficiaryAddress,omitempty"`
}

BusinessOwnerInformation contains information about the business owner for a CEDAR system

type CedarContract

type CedarContract struct {
	EndDate         zero.Time   `json:"endDate,omitempty"`
	StartDate       zero.Time   `json:"startDate,omitempty"`
	ContractNumber  zero.String `json:"contractNumber"`
	ContractName    zero.String `json:"contractName,omitempty"`
	Description     zero.String `json:"description,omitempty"`
	OrderNumber     zero.String `json:"orderNumber,omitempty"`
	ServiceProvided zero.String `json:"serviceProvided,omitempty"`
	IsDeliveryOrg   bool        `json:"isDeliveryOrg"`
	SystemID        zero.String `json:"systemId,omitempty"`
}

type CedarDataCenter

type CedarDataCenter struct {
	ID          zero.String
	Name        zero.String
	Version     zero.String
	Description zero.String
	State       zero.String // example: "Active" - NOT geographical state
	Status      zero.String
	StartDate   zero.Time
	EndDate     zero.Time

	// address components
	Address1     zero.String
	Address2     zero.String
	City         zero.String
	AddressState zero.String
	Zip          zero.String
}

CedarDataCenter represents a single DataCenter object returned from the CEDAR API

type CedarDataCenter2

type CedarDataCenter2 struct {
	Address1     zero.String `json:"address1,omitempty"`
	Address2     zero.String `json:"address2,omitempty"`
	AddressState zero.String `json:"addressState,omitempty"`
	City         zero.String `json:"city,omitempty"`
	Description  zero.String `json:"description,omitempty"`
	EndDate      zero.Time   `json:"endDate,omitempty"`
	ID           zero.String `json:"id,omitempty"`
	Name         zero.String `json:"name,omitempty"`
	StartDate    zero.Time   `json:"startDate,omitempty"`
	State        zero.String `json:"state,omitempty"`
	Status       zero.String `json:"status,omitempty"`
	Version      zero.String `json:"version,omitempty"`
	Zip          zero.String `json:"zip,omitempty"`
}

type CedarDeployment

type CedarDeployment struct {
	// always-present fields
	ID       zero.String
	Name     zero.String
	SystemID zero.String

	// possibly-null fields
	StartDate                zero.Time
	EndDate                  zero.Time
	IsHotSite                zero.String // currently echoes CEDAR data exactly. in the future, this could potentially be nullable Bool; sample values from CEDAR seem to be "Yes" or null
	Description              zero.String
	ContractorName           zero.String
	SystemVersion            zero.String
	HasProductionData        zero.String // currently echoes CEDAR data exactly. in the future, this could potentially be nullable Bool; sample values from CEDAR seem to be "Yes" or null
	ReplicatedSystemElements []string
	DeploymentType           zero.String
	SystemName               zero.String
	DeploymentElementID      zero.String
	State                    zero.String
	Status                   zero.String
	WanType                  zero.String
	DataCenter               *CedarDataCenter
}

CedarDeployment represents a single Deployment object returned from the CEDAR API

type CedarExchange

type CedarExchange struct {
	ConnectionFrequency         []zero.String                  `json:"connectionFrequency"`
	ContainsBankingData         bool                           `json:"containsBankingData,omitempty"`
	ContainsBeneficiaryAddress  bool                           `json:"containsBeneficiaryAddress,omitempty"`
	ContainsPhi                 bool                           `json:"containsPhi,omitempty"`
	ContainsPii                 bool                           `json:"containsPii,omitempty"`
	ContainsHealthDisparityData bool                           `json:"containsHealthDisparityData,omitempty"`
	DataExchangeAgreement       zero.String                    `json:"dataExchangeAgreement,omitempty"`
	DataFormat                  zero.String                    `json:"dataFormat,omitempty"`
	DataFormatOther             zero.String                    `json:"dataFormatOther,omitempty"`
	ExchangeDescription         zero.String                    `json:"exchangeDescription,omitempty"`
	ExchangeEndDate             zero.Time                      `json:"exchangeEndDate,omitempty"`
	ExchangeID                  zero.String                    `json:"exchangeId,omitempty"`
	ExchangeName                zero.String                    `json:"exchangeName,omitempty"`
	ExchangeRetiredDate         zero.Time                      `json:"exchangeRetiredDate,omitempty"`
	ExchangeStartDate           zero.Time                      `json:"exchangeStartDate,omitempty"`
	ExchangeState               zero.String                    `json:"exchangeState,omitempty"`
	ExchangeVersion             zero.String                    `json:"exchangeVersion,omitempty"`
	ExchangeDirection           ExchangeDirection              `json:"exchangeDirection,omitempty"`
	FromOwnerID                 zero.String                    `json:"fromOwnerId,omitempty"`
	FromOwnerName               zero.String                    `json:"fromOwnerName,omitempty"`
	FromOwnerType               zero.String                    `json:"fromOwnerType,omitempty"`
	IsBeneficiaryMailingFile    bool                           `json:"isBeneficiaryMailingFile,omitempty"`
	NumOfRecords                zero.String                    `json:"numOfRecords,omitempty"`
	SharedViaAPI                bool                           `json:"sharedViaApi,omitempty"`
	ToOwnerID                   zero.String                    `json:"toOwnerId,omitempty"`
	ToOwnerName                 zero.String                    `json:"toOwnerName,omitempty"`
	ToOwnerType                 zero.String                    `json:"toOwnerType,omitempty"`
	TypeOfData                  []*CedarExchangeTypeOfDataItem `json:"typeOfData"`
}

CedarExchange contains information about how data is exchanged between a CEDAR system and another system

type CedarExchangeTypeOfDataItem

type CedarExchangeTypeOfDataItem struct {
	ID   zero.String `json:"id,omitempty"`
	Name zero.String `json:"name,omitempty"`
}

CedarExchangeTypeOfDataItem is one item of the TypeofData slice in a CedarExchange

type CedarRole

type CedarRole struct {
	// always-present fields
	Application zero.String // should always be "alfabet"
	ObjectID    zero.String // ID of the system that the role is assigned to
	RoleTypeID  zero.String

	// possibly-null fields
	AssigneeType      *CedarAssigneeType
	AssigneeUsername  zero.String
	AssigneeEmail     zero.String
	AssigneeOrgID     zero.String
	AssigneeOrgName   zero.String
	AssigneeFirstName zero.String
	AssigneeLastName  zero.String
	AssigneePhone     zero.String
	AssigneeDesc      zero.String

	RoleTypeName zero.String
	RoleTypeDesc zero.String
	RoleID       zero.String
	ObjectType   zero.String
}

CedarRole is the model for the role that a user holds for some system

type CedarRoleType

type CedarRoleType struct {
	// always-present fields
	ID          zero.String
	Application zero.String // should always be "alfabet"
	Name        zero.String

	// possibly-null fields
	Description zero.String
}

CedarRoleType is the model for a type of role that a user or organization can hold for some system, i.e. "Business Owner" or "Project Lead"

type CedarSoftwareProductItem

type CedarSoftwareProductItem struct {
	APIGatewayUse                  *bool   `json:"apiGatewayUse,omitempty"`
	ElaPurchase                    *string `json:"elaPurchase,omitempty"`
	ElaVendorID                    *string `json:"elaVendorId,omitempty"`
	ProvidesAiCapability           *bool   `json:"providesAiCapability,omitempty"`
	Refstr                         *string `json:"refstr,omitempty"`
	SoftwareCatagoryConnectionGUID *string `json:"softwareCatagoryConnectionGuid,omitempty"`
	SoftwareVendorConnectionGUID   *string `json:"softwareVendorConnectionGuid,omitempty"`
	SoftwareCost                   *string `json:"softwareCost,omitempty"`
	SoftwareElaOrganization        *string `json:"softwareElaOrganization,omitempty"`
	SoftwareName                   *string `json:"softwareName,omitempty"`
	SystemSoftwareConnectionGUID   *string `json:"systemSoftwareConnectionGuid,omitempty"`
	TechnopediaCategory            *string `json:"technopediaCategory,omitempty"`
	TechnopediaID                  *string `json:"technopediaID,omitempty"`
	VendorName                     *string `json:"vendorName,omitempty"`
}

CedarSoftwareProductItem represents an individual software product; this information is returned from the CEDAR Core API as a part of the CedarSoftwareProducts object

type CedarSoftwareProducts

type CedarSoftwareProducts struct {
	// Always present fields
	AiSolnCatg       []zero.String          `json:"aiSolnCatg"`
	ApiDataArea      []zero.String          `json:"apiDataArea"`
	SoftwareProducts []*SoftwareProductItem `json:"softwareProducts"`

	// Possibly null fields
	AISolnCatgOther     zero.String `json:"aiSolnCatgOther,omitempty"`
	APIDescPubLocation  zero.String `json:"apiDescPubLocation,omitempty"`
	APIDescPublished    zero.String `json:"apiDescPublished,omitempty"`
	APIFHIRUse          zero.String `json:"apiFHIRUse,omitempty"`
	APIFHIRUseOther     zero.String `json:"apiFHIRUseOther,omitempty"`
	APIHasPortal        bool        `json:"apiHasPortal,omitempty"`
	ApisAccessibility   zero.String `json:"apisAccessibility,omitempty"`
	ApisDeveloped       zero.String `json:"apisDeveloped,omitempty"`
	DevelopmentStage    zero.String `json:"developmentStage,omitempty"`
	SystemHasAPIGateway bool        `json:"systemHasApiGateway,omitempty"`
	UsesAiTech          zero.String `json:"usesAiTech,omitempty"`
}

CedarSoftwareProduct represents a single SoftwareProduct object returned from the CEDAR API

type CedarSubSystem

type CedarSubSystem struct {
	ID          zero.String `json:"id"`
	Name        zero.String `json:"name"`
	Description zero.String `json:"description"`
	Acronym     zero.String `json:"acronym"`
}

CedarSubSystem is the model for a sub system that comes back from the CEDAR Core API

type CedarSystem

type CedarSystem struct {
	ID                      zero.String `json:"id"`
	Name                    zero.String `json:"name"`
	Description             zero.String `json:"description"`
	Acronym                 zero.String `json:"acronym"`
	State                   zero.String `json:"state"`
	Status                  zero.String `json:"status"`
	BusinessOwnerOrg        zero.String `json:"businessOwnerOrg"`
	BusinessOwnerOrgComp    zero.String `json:"businessOwnerOrgComp"`
	SystemMaintainerOrg     zero.String `json:"systemMaintainerOrg"`
	SystemMaintainerOrgComp zero.String `json:"systemMaintainerOrgComp"`
	VersionID               zero.String `json:"versionId"`
	UUID                    zero.String `json:"uuid"`
}

CedarSystem is the model for a single system that comes back from the CEDAR Core API

type CedarSystemBookmark

type CedarSystemBookmark struct {
	EUAUserID     string     `json:"euaUserId" db:"eua_user_id"`
	CedarSystemID string     `json:"cedarSystemId" db:"cedar_system_id"`
	CreatedAt     *time.Time `db:"created_at"`
}

CedarSystemBookmark represents a cedar system that a user has bookmarked in the system repository

type CedarSystemDetails

type CedarSystemDetails struct {
	CedarSystem                 *CedarSystem
	BusinessOwnerInformation    *BusinessOwnerInformation
	SystemMaintainerInformation *SystemMaintainerInformation
	Roles                       []*CedarRole       `json:"roles"`
	Deployments                 []*CedarDeployment `json:"deployments"`
	Threats                     []*CedarThreat     `json:"threats"`
	URLs                        []*CedarURL        `json:"urls"`
}

CedarSystemDetails contains more detailed information related to a CEDAR system

type CedarSystemMaintainerInformation

type CedarSystemMaintainerInformation struct {
	AgileUsed                             *bool      `json:"agileUsed,omitempty"`
	AdHocAgileDeploymentFrequency         *string    `json:"adHocAgileDeploymentFrequency,omitempty"`
	AuthoritativeDatasource               *string    `json:"authoritativeDatasource,omitempty"`
	BusinessArtifactsOnDemand             *bool      `json:"businessArtifactsOnDemand,omitempty"`
	DataAtRestEncryptionKeyManagement     *string    `json:"dataAtRestEncryptionKeyManagement,omitempty"`
	DeploymentFrequency                   *string    `json:"deploymentFrequency,omitempty"`
	DevCompletionPercent                  *string    `json:"devCompletionPercent,omitempty"`
	DevWorkDescription                    *string    `json:"devWorkDescription,omitempty"`
	EcapParticipation                     *bool      `json:"ecapParticipation,omitempty"`
	FrontendAccessType                    *string    `json:"frontendAccessType,omitempty"`
	HardCodedIPAddress                    *bool      `json:"hardCodedIPAddress,omitempty"`
	IP6EnabledAssetPercent                *string    `json:"ip6EnabledAssetPercent,omitempty"`
	IP6TransitionPlan                     *string    `json:"ip6TransitionPlan,omitempty"`
	IPEnabledAssetCount                   *int       `json:"ipEnabledAssetCount,omitempty"`
	LegalHoldCaseName                     *string    `json:"legalHoldCaseName,omitempty"`
	LocallyStoredUserInformation          *bool      `json:"locallyStoredUserInformation,omitempty"`
	MajorRefreshDate                      *time.Time `json:"majorRefreshDate,omitempty"`
	MultifactorAuthenticationMethod       []string   `json:"multifactorAuthenticationMethod"`
	MultifactorAuthenticationMethodOther  *string    `json:"multifactorAuthenticationMethodOther,omitempty"`
	NetAccessibility                      *string    `json:"netAccessibility,omitempty"`
	NetworkTrafficEncryptionKeyManagement *string    `json:"networkTrafficEncryptionKeyManagement,omitempty"`
	NoMajorRefresh                        *bool      `json:"noMajorRefresh,omitempty"`
	NoPersistentRecordsFlag               *bool      `json:"noPersistentRecordsFlag,omitempty"`
	NoPlannedMajorRefresh                 *bool      `json:"noPlannedMajorRefresh,omitempty"`
	OmDocumentationOnDemand               *bool      `json:"omDocumentationOnDemand,omitempty"`
	PlansToRetireReplace                  *string    `json:"plansToRetireReplace,omitempty"`
	QuarterToRetireReplace                *string    `json:"quarterToRetireReplace,omitempty"`
	RecordsManagementBucket               []string   `json:"recordsManagementBucket"`
	RecordsManagementDisposalLocation     *string    `json:"recordsManagementDisposalLocation,omitempty"`
	RecordsManagementDisposalPlan         *string    `json:"recordsManagementDisposalPlan,omitempty"`
	RecordsUnderLegalHold                 *bool      `json:"recordsUnderLegalHold,omitempty"`
	SourceCodeOnDemand                    *bool      `json:"sourceCodeOnDemand,omitempty"`
	SystemCustomization                   *string    `json:"systemCustomization,omitempty"`
	SystemDataLocation                    []string   `json:"systemDataLocation"`
	SystemDataLocationNotes               *string    `json:"systemDataLocationNotes,omitempty"`
	SystemDesignOnDemand                  *bool      `json:"systemDesignOnDemand,omitempty"`
	SystemProductionDate                  *time.Time `json:"systemProductionDate,omitempty"`
	SystemRequirementsOnDemand            *bool      `json:"systemRequirementsOnDemand,omitempty"`
	TestPlanOnDemand                      *bool      `json:"testPlanOnDemand,omitempty"`
	TestReportsOnDemand                   *bool      `json:"testReportsOnDemand,omitempty"`
	TestScriptsOnDemand                   *bool      `json:"testScriptsOnDemand,omitempty"`
	YearToRetireReplace                   *string    `json:"yearToRetireReplace,omitempty"`
}

SystemMaintainerInformation contains information about the system maintainer of a CEDAR system

type CedarThreat

type CedarThreat struct {
	// possibly-null fields
	AlternativeID     zero.String `json:"alternativeId"`
	ControlFamily     zero.String `json:"controlFamily"`
	DaysOpen          int         `json:"daysOpen"`
	ID                zero.String `json:"id"`
	ParentID          zero.String `json:"parentId"`
	Type              zero.String `json:"type"`
	WeaknessRiskLevel zero.String `json:"weaknessRiskLevel"`
}

CedarThreat is the model for threat information that comes back from the CEDAR Core API

type CedarURL

type CedarURL struct {
	// always-present field
	ID zero.String

	Address                        zero.String // The actual URL.
	IsBehindWebApplicationFirewall bool
	IsAPIEndpoint                  bool
	IsVersionCodeRepository        bool        // Represents whether this URL provides access to a versioned code repository.
	URLHostingEnv                  zero.String // This should correspond with .DeploymentType on a CedarDeployment object.
}

CedarURL represents a single URL object returned from the CEDAR API

type CloseTRBRequestInput

type CloseTRBRequestInput struct {
	ID             uuid.UUID `json:"id"`
	ReasonClosed   HTML      `json:"reasonClosed"`
	CopyTrbMailbox bool      `json:"copyTrbMailbox"`
	NotifyEuaIds   []string  `json:"notifyEuaIds"`
}

The input needed to close a TRB request

type ContractDate

type ContractDate struct {
	Day   *string `json:"day,omitempty"`
	Month *string `json:"month,omitempty"`
	Year  *string `json:"year,omitempty"`
}

Represents a date used for start and end dates on a contract

type CreateCedarSystemBookmarkInput

type CreateCedarSystemBookmarkInput struct {
	CedarSystemID string `json:"cedarSystemId"`
}

The data needed to bookmark a cedar system

type CreateCedarSystemBookmarkPayload

type CreateCedarSystemBookmarkPayload struct {
	CedarSystemBookmark *CedarSystemBookmark `json:"cedarSystemBookmark,omitempty"`
}

The payload when bookmarking a cedar system

type CreateSystemIntakeContactInput

type CreateSystemIntakeContactInput struct {
	EuaUserID      string    `json:"euaUserId"`
	SystemIntakeID uuid.UUID `json:"systemIntakeId"`
	Component      string    `json:"component"`
	Role           string    `json:"role"`
}

The data needed to associate a contact with a system intake

type CreateSystemIntakeContactPayload

type CreateSystemIntakeContactPayload struct {
	SystemIntakeContact *SystemIntakeContact `json:"systemIntakeContact,omitempty"`
}

The payload when creating a system intake contact

type CreateSystemIntakeDocumentInput

type CreateSystemIntakeDocumentInput struct {
	RequestID            uuid.UUID                      `json:"requestID"`
	FileData             graphql.Upload                 `json:"fileData"`
	DocumentType         SystemIntakeDocumentCommonType `json:"documentType"`
	OtherTypeDescription *string                        `json:"otherTypeDescription,omitempty"`
}

The data needed to upload a System Intake document and attach it to a request with metadata

type CreateSystemIntakeDocumentPayload

type CreateSystemIntakeDocumentPayload struct {
	Document *SystemIntakeDocument `json:"document,omitempty"`
}

Data returned after uploading a document to a System Intake

type CreateSystemIntakeInput

type CreateSystemIntakeInput struct {
	RequestType SystemIntakeRequestType     `json:"requestType"`
	Requester   *SystemIntakeRequesterInput `json:"requester"`
}

The input data used to initialize an IT governance request for a system

type CreateSystemIntakeNoteInput

type CreateSystemIntakeNoteInput struct {
	Content    HTML      `json:"content"`
	AuthorName string    `json:"authorName"`
	IntakeID   uuid.UUID `json:"intakeId"`
}

Input data for adding a note to a system request

type CreateTRBAdminNoteAdviceLetterInput

type CreateTRBAdminNoteAdviceLetterInput struct {
	TrbRequestID            uuid.UUID   `json:"trbRequestId"`
	NoteText                HTML        `json:"noteText"`
	AppliesToMeetingSummary bool        `json:"appliesToMeetingSummary"`
	AppliesToNextSteps      bool        `json:"appliesToNextSteps"`
	RecommendationIDs       []uuid.UUID `json:"recommendationIDs"`
}

The data needed to create a TRB admin note with the Advice Letter category

type CreateTRBAdminNoteConsultSessionInput

type CreateTRBAdminNoteConsultSessionInput struct {
	TrbRequestID uuid.UUID `json:"trbRequestId"`
	NoteText     HTML      `json:"noteText"`
}

The data needed to create a TRB admin note with the Consult Session category

type CreateTRBAdminNoteGeneralRequestInput

type CreateTRBAdminNoteGeneralRequestInput struct {
	TrbRequestID uuid.UUID `json:"trbRequestId"`
	NoteText     HTML      `json:"noteText"`
}

The data needed to create a TRB admin note with the General Request category

type CreateTRBAdminNoteInitialRequestFormInput

type CreateTRBAdminNoteInitialRequestFormInput struct {
	TrbRequestID                 uuid.UUID `json:"trbRequestId"`
	NoteText                     HTML      `json:"noteText"`
	AppliesToBasicRequestDetails bool      `json:"appliesToBasicRequestDetails"`
	AppliesToSubjectAreas        bool      `json:"appliesToSubjectAreas"`
	AppliesToAttendees           bool      `json:"appliesToAttendees"`
}

The data needed to create a TRB admin note with the Initial Request Form category

type CreateTRBAdminNoteSupportingDocumentsInput

type CreateTRBAdminNoteSupportingDocumentsInput struct {
	TrbRequestID uuid.UUID   `json:"trbRequestId"`
	NoteText     HTML        `json:"noteText"`
	DocumentIDs  []uuid.UUID `json:"documentIDs"`
}

The data needed to create a TRB admin note with the Supporting Documents category

type CreateTRBAdviceLetterRecommendationInput

type CreateTRBAdviceLetterRecommendationInput struct {
	TrbRequestID   uuid.UUID `json:"trbRequestId"`
	Title          string    `json:"title"`
	Recommendation HTML      `json:"recommendation"`
	Links          []string  `json:"links"`
}

The input required to add a recommendation & links to a TRB advice letter

type CreateTRBRequestAttendeeInput

type CreateTRBRequestAttendeeInput struct {
	EuaUserID    string     `json:"euaUserId"`
	TrbRequestID uuid.UUID  `json:"trbRequestId"`
	Component    string     `json:"component"`
	Role         PersonRole `json:"role"`
}

The data needed add a TRB request attendee to a TRB request

type CreateTRBRequestDocumentInput

type CreateTRBRequestDocumentInput struct {
	RequestID            uuid.UUID             `json:"requestID"`
	FileData             graphql.Upload        `json:"fileData"`
	DocumentType         TRBDocumentCommonType `json:"documentType"`
	OtherTypeDescription *string               `json:"otherTypeDescription,omitempty"`
}

The data needed to upload a TRB document and attach it to a request with metadata

type CreateTRBRequestDocumentPayload

type CreateTRBRequestDocumentPayload struct {
	Document *TRBRequestDocument `json:"document,omitempty"`
}

Data returned after uploading a document to a TRB request

type CreateTRBRequestFeedbackInput

type CreateTRBRequestFeedbackInput struct {
	TrbRequestID    uuid.UUID         `json:"trbRequestId"`
	FeedbackMessage HTML              `json:"feedbackMessage"`
	CopyTrbMailbox  bool              `json:"copyTrbMailbox"`
	NotifyEuaIds    []string          `json:"notifyEuaIds"`
	Action          TRBFeedbackAction `json:"action"`
}

The data needed to add feedback to a TRB request

type CurrentUser

type CurrentUser struct {
	LaunchDarkly *LaunchDarklySettings `json:"launchDarkly"`
}

The current user of the application

type DeleteCedarSystemBookmarkPayload

type DeleteCedarSystemBookmarkPayload struct {
	CedarSystemID string `json:"cedarSystemId"`
}

The payload when deleting a bookmark for a cedar system

type DeleteSystemIntakeContactInput

type DeleteSystemIntakeContactInput struct {
	ID uuid.UUID `json:"id"`
}

The data needed to delete a system intake contact

type DeleteSystemIntakeContactPayload

type DeleteSystemIntakeContactPayload struct {
	SystemIntakeContact *SystemIntakeContact `json:"systemIntakeContact,omitempty"`
}

The payload when deleting a system intake contact

type DeleteSystemIntakeDocumentPayload

type DeleteSystemIntakeDocumentPayload struct {
	Document *SystemIntakeDocument `json:"document,omitempty"`
}

Data returned after deleting a document attached to a System Intake

type DeleteTRBRequestDocumentPayload

type DeleteTRBRequestDocumentPayload struct {
	Document *TRBRequestDocument `json:"document,omitempty"`
}

Data returned after deleting a document attached to a TRB request

type DeleteTRBRequestFundingSourcesInput

type DeleteTRBRequestFundingSourcesInput struct {
	TrbRequestID  uuid.UUID `json:"trbRequestId"`
	FundingNumber string    `json:"fundingNumber"`
}

type EmailAddress

type EmailAddress string

EmailAddress represents an email address

func NewEmailAddress

func NewEmailAddress(address string) EmailAddress

NewEmailAddress creates a new email address

func (EmailAddress) String

func (e EmailAddress) String() string

String returns the email address as a string

type EmailNotificationRecipients

type EmailNotificationRecipients struct {
	RegularRecipientEmails   []EmailAddress
	ShouldNotifyITGovernance bool
	ShouldNotifyITInvestment bool
}

EmailNotificationRecipients contains info about who to notify when an action is taken on an intake request

type EstimatedLifecycleCost

type EstimatedLifecycleCost struct {
	ID             uuid.UUID             `json:"id"`
	BusinessCaseID uuid.UUID             `json:"business_case" db:"business_case"`
	Solution       LifecycleCostSolution `json:"solution"`
	Phase          *LifecycleCostPhase   `json:"phase"`
	Year           LifecycleCostYear     `json:"year"`
	Cost           *int                  `json:"cost"`
}

EstimatedLifecycleCost is the model for the cost of an estimated lifecycle line in the business case.

type EstimatedLifecycleCosts

type EstimatedLifecycleCosts []EstimatedLifecycleCost

EstimatedLifecycleCosts models a list of EstimatedLifecycleCost line items

func (*EstimatedLifecycleCosts) Scan

func (e *EstimatedLifecycleCosts) Scan(src interface{}) error

Scan implements the sql.Scanner interface

type ExchangeDirection

type ExchangeDirection string

ExchangeDirection indicates the direction of data flow in a CEDAR exchange

const (
	// ExchangeDirectionSender indicates that the system is the sender of data in the data exchange
	ExchangeDirectionSender ExchangeDirection = "SENDER"
	// ExchangeDirectionReceiver indicates that the system is the receiver of data in the data exchange
	ExchangeDirectionReceiver ExchangeDirection = "RECEIVER"
)

type GovernanceRequestFeedback

type GovernanceRequestFeedback struct {
	// Can't use BaseStruct here since CreatedBy is nullable in the DB
	ID         uuid.UUID  `json:"id" db:"id"`
	CreatedBy  *string    `json:"createdBy" db:"created_by"`
	CreatedAt  time.Time  `json:"createdAt" db:"created_at"`
	ModifiedBy *string    `json:"modifiedBy" db:"modified_by"`
	ModifiedAt *time.Time `json:"modifiedAt" db:"modified_at"`

	IntakeID     uuid.UUID                             `json:"intakeId" db:"intake_id"`
	Feedback     HTML                                  `json:"feedback" db:"feedback"`
	SourceAction GovernanceRequestFeedbackSourceAction `json:"sourceAction" db:"source_action"`
	TargetForm   GovernanceRequestFeedbackTargetForm   `json:"targetForm" db:"target_form"`
	Type         GovernanceRequestFeedbackType         `json:"type" db:"type"`
}

GovernanceRequestFeedback represents feedback given to the requester on a governance request

type GovernanceRequestFeedbackSourceAction

type GovernanceRequestFeedbackSourceAction string

GovernanceRequestFeedbackSourceAction is an eumeration of the possible actions that can provide feedback on a governance request

const (
	GRFSARequestEdits      GovernanceRequestFeedbackSourceAction = "REQUEST_EDITS"
	GRFSAProgressToNewStep GovernanceRequestFeedbackSourceAction = "PROGRESS_TO_NEW_STEP"
)

These are the possible forms that can provide feedback

type GovernanceRequestFeedbackTargetForm

type GovernanceRequestFeedbackTargetForm string

GovernanceRequestFeedbackTargetForm is an enumeration of the possible forms on a governance intake request that can receive feedback

const (
	GRFTFNoTargetProvided  GovernanceRequestFeedbackTargetForm = "NO_TARGET_PROVIDED"
	GRFTFIntakeRequest     GovernanceRequestFeedbackTargetForm = "INTAKE_REQUEST"
	GRFTFDraftBusinessCase GovernanceRequestFeedbackTargetForm = "DRAFT_BUSINESS_CASE"
	GRFTFinalBusinessCase  GovernanceRequestFeedbackTargetForm = "FINAL_BUSINESS_CASE"
)

These are the possible forms that can have governance request feedback

func (GovernanceRequestFeedbackTargetForm) Humanize

Humanize translates a GovernanceRequestFeedbackTargetForm to human readable text

type GovernanceRequestFeedbackType

type GovernanceRequestFeedbackType string

GovernanceRequestFeedbackType is an enumeration of the possible types of feedback on governance requests, based on who it's directed to

const (
	GRFTRequester GovernanceRequestFeedbackType = "REQUESTER"
	GRFTGRB       GovernanceRequestFeedbackType = "GRB"
)

These are the possible types of recipients of feedback on governanance requests

type HTML

type HTML string

HTML represents html code. It is sanitized when unmarshaled from graphQL or when converted to HTML to only allow specific tags

func HTMLPointer

func HTMLPointer(input string) *HTML

HTMLPointer returns a pointer to an HTML type from a string input

func (HTML) MarshalGQLContext

func (h HTML) MarshalGQLContext(ctx context.Context, w io.Writer) error

MarshalGQLContext marshals the HTML type to JSON to return to graphQL

func (*HTML) StringPointer

func (h *HTML) StringPointer() *string

StringPointer casts an HTML pointer to a string pointer

func (*HTML) ToTemplate

func (h *HTML) ToTemplate() template.HTML

ToTemplate converts and sanitizes the HTML type to a template.HTML struct

func (*HTML) UnmarshalGQLContext

func (h *HTML) UnmarshalGQLContext(ctx context.Context, v interface{}) error

UnmarshalGQLContext unmarshals the data from graphql to the HTML type

func (*HTML) ValueOrEmptyHTML

func (h *HTML) ValueOrEmptyHTML() HTML

ValueOrEmptyHTML returns either the value of the html or an empty HTML type if nil

func (*HTML) ValueOrEmptyString

func (h *HTML) ValueOrEmptyString() string

ValueOrEmptyString returns either the value of the html or an empty string if nil

type IBaseStruct

type IBaseStruct interface {
	// GetBaseStruct() *BaseStruct
	GetID() uuid.UUID
	GetCreatedBy() string
	GetModifiedBy() *string
	// This method sets the modified properties of a BaseStruct using the information provided by a principal object
	SetModifiedBy(principal authentication.Principal) error
}

IBaseStruct is an interface that all models must implement

type ITGovDecisionStatus

type ITGovDecisionStatus string

ITGovDecisionStatus represents the types of ITGovDecisionStatus types. This is what the requestor sees for the third task.

const (
	ITGDSCantStart ITGovDecisionStatus = "CANT_START"
	ITGDSInReview  ITGovDecisionStatus = "IN_REVIEW"
	ITGDSCompleted ITGovDecisionStatus = "COMPLETED"
)

These are the options for ITGovDecisionStatus

type ITGovDraftBusinessCaseStatus

type ITGovDraftBusinessCaseStatus string

ITGovDraftBusinessCaseStatus represents the types of ITGovDraftBusinessCaseStatus types. This is what the requestor sees for the optional fourth task.

const (
	ITGDBCSCantStart      ITGovDraftBusinessCaseStatus = "CANT_START"
	ITGDBCSNotNeeded      ITGovDraftBusinessCaseStatus = "NOT_NEEDED"
	ITGDBCSReady          ITGovDraftBusinessCaseStatus = "READY"
	ITGDBCSInProgress     ITGovDraftBusinessCaseStatus = "IN_PROGRESS"
	ITGDBCSEditsRequested ITGovDraftBusinessCaseStatus = "EDITS_REQUESTED"
	ITGDBCSSubmitted      ITGovDraftBusinessCaseStatus = "SUBMITTED"
	ITGDBCSDone           ITGovDraftBusinessCaseStatus = "DONE"
)

These are the options for ITGovDraftBusinessCaseStatus

type ITGovFeedbackStatus

type ITGovFeedbackStatus string

ITGovFeedbackStatus represents the types of ITGovFeedbackStatus types. This is what the requestor sees for the second task.

const (
	ITGFBSCantStart ITGovFeedbackStatus = "CANT_START"
	ITGFBSInReview  ITGovFeedbackStatus = "IN_REVIEW"
	ITGFBSCompleted ITGovFeedbackStatus = "COMPLETED"
)

These are the options for ITGovFeedbackStatus

type ITGovFinalBusinessCaseStatus

type ITGovFinalBusinessCaseStatus string

ITGovFinalBusinessCaseStatus represents the types of ITGovFinalBusinessCaseStatus types. This is what the requestor sees for the optional sixth task.

const (
	ITGFBCSCantStart      ITGovFinalBusinessCaseStatus = "CANT_START"
	ITGFBCSNotNeeded      ITGovFinalBusinessCaseStatus = "NOT_NEEDED"
	ITGFBCSReady          ITGovFinalBusinessCaseStatus = "READY"
	ITGFBCSInProgress     ITGovFinalBusinessCaseStatus = "IN_PROGRESS"
	ITGFBCSEditsRequested ITGovFinalBusinessCaseStatus = "EDITS_REQUESTED"
	ITGFBCSSubmitted      ITGovFinalBusinessCaseStatus = "SUBMITTED"
	ITGFBCSDone           ITGovFinalBusinessCaseStatus = "DONE"
)

These are the options for ITGovFinalBusinessCaseStatus

type ITGovGRBStatus

type ITGovGRBStatus string

ITGovGRBStatus represents the types of ITGovGRBStatus types. This is what the requestor sees for the optional seventh task.

const (
	ITGGRBSCantStart        ITGovGRBStatus = "CANT_START"
	ITGGRBSNotNeeded        ITGovGRBStatus = "NOT_NEEDED"
	ITGGRBSReadyToSchedule  ITGovGRBStatus = "READY_TO_SCHEDULE"
	ITGGRBSScheduled        ITGovGRBStatus = "SCHEDULED"
	ITGGRBSAwaitingDecision ITGovGRBStatus = "AWAITING_DECISION"
	ITGGRBSCompleted        ITGovGRBStatus = "COMPLETED"
)

These are the options for ITGovGRBStatus

type ITGovGRTStatus

type ITGovGRTStatus string

ITGovGRTStatus represents the types of ITGovGRTStatus types. This is what the requestor sees for the optional fifth task.

const (
	ITGGRTSCantStart        ITGovGRTStatus = "CANT_START"
	ITGGRTSNotNeeded        ITGovGRTStatus = "NOT_NEEDED"
	ITGGRTSReadyToSchedule  ITGovGRTStatus = "READY_TO_SCHEDULE"
	ITGGRTSScheduled        ITGovGRTStatus = "SCHEDULED"
	ITGGRTSAwaitingDecision ITGovGRTStatus = "AWAITING_DECISION"
	ITGGRTSCompleted        ITGovGRTStatus = "COMPLETED"
)

These are the options for ITGovGRTStatus

type ITGovIntakeFormStatus

type ITGovIntakeFormStatus string

ITGovIntakeFormStatus represents the types of ITGovIntakeFormStatus types. This is what the requester sees for the first task

const (
	ITGISReady          ITGovIntakeFormStatus = "READY"
	ITGISInProgress     ITGovIntakeFormStatus = "IN_PROGRESS"
	ITGISEditsRequested ITGovIntakeFormStatus = "EDITS_REQUESTED"
	ITGISCompleted      ITGovIntakeFormStatus = "COMPLETED"
)

These are the options for ITGovIntakeStatus

type ITGovTaskStatuses

type ITGovTaskStatuses struct {
	ParentSystemIntake *SystemIntake
}

ITGovTaskStatuses is a helper struct used by GQL to wrap a returned System Intake, so section statuses can be calculated only when requested

type IntakeReview

type IntakeReview struct {
	IntakeID  uuid.UUID
	Decision  IntakeReviewDecision
	EmailText string
}

IntakeReview models the GRT review form for a system intake

type IntakeReviewDecision

type IntakeReviewDecision string

IntakeReviewDecision represents the decision on an intake review

const (
	// IntakeReviewDecisionISSUEID captures enum value "ISSUE_ID"
	IntakeReviewDecisionISSUEID IntakeReviewDecision = "ISSUE_ID"
	// IntakeReviewDecisionREVIEWNEEDED captures enum value "REVIEW_PROCESS_NEEDED"
	IntakeReviewDecisionREVIEWNEEDED IntakeReviewDecision = "REVIEW_PROCESS_NEEDED"
	// IntakeReviewDecisionGOVERNANCENOTNEEDED captures enum value "GOVERNANCE_NOT_NEEDED"
	IntakeReviewDecisionGOVERNANCENOTNEEDED IntakeReviewDecision = "GOVERNANCE_NOT_NEEDED"
)

type LaunchDarklySettings

type LaunchDarklySettings struct {
	UserKey    string `json:"userKey"`
	SignedHash string `json:"signedHash"`
}

The current user's Launch Darkly key

type LifecycleCostPhase

type LifecycleCostPhase string

LifecycleCostPhase represents the phase of a lifecycle cost line

type LifecycleCostSolution

type LifecycleCostSolution string

LifecycleCostSolution represents the solution associated with the line

type LifecycleCostYear

type LifecycleCostYear string

LifecycleCostYear represents the year associated with the line

type MetricsDigest

type MetricsDigest struct {
	SystemIntakeMetrics SystemIntakeMetrics `json:"system_intake"`
}

MetricsDigest contains a set of metrics

type Mutation

type Mutation struct {
}

Defines the mutations for the schema

type PersonRole

type PersonRole string

PersonRole is an enumeration of values representing the role of a person (currently in use for TRBRequestAttendee and potentially SystemIntakeContact in the future)

const (
	// PersonRoleBusinessOwner is a person with the "Business Owner" role
	PersonRoleBusinessOwner PersonRole = "BUSINESS_OWNER"
	// PersonRoleProductOwner is a person with the "Product Owner" role
	PersonRoleProductOwner PersonRole = "PRODUCT_OWNER"
	// PersonRoleSystemOwner is a person with the "System Owner" role
	PersonRoleSystemOwner PersonRole = "SYSTEM_OWNER"
	// PersonRoleSystemMaintainer is a person with the "System Maintainer" role
	PersonRoleSystemMaintainer PersonRole = "SYSTEM_MAINTAINER"
	// PersonRoleContractOfficersRepresentative is a person with the "ContractOfficersRepresentative" role
	PersonRoleContractOfficersRepresentative PersonRole = "CONTRACT_OFFICE_RSREPRESENTATIVE"
	// PersonRoleCloudNavigator is a person with the "Cloud Navigator" role
	PersonRoleCloudNavigator PersonRole = "CLOUD_NAVIGATOR"
	// PersonRoleInformationSystemSecurityAdvisor is a person with the "Information System Security Advisor" role
	PersonRoleInformationSystemSecurityAdvisor PersonRole = "INFORMATION_SYSTEM_SECURITY_ADVISOR"
	// PersonRolePrivacyAdvisor is a person with the "Privacy Advisor" role
	PersonRolePrivacyAdvisor PersonRole = "PRIVACY_ADVISOR"
	// PersonRoleCRA is a person with the "Cyber Risk Advisor (CRA)" role
	PersonRoleCRA PersonRole = "CRA"
	// PersonRoleOther is a person with the "Other" role
	PersonRoleOther PersonRole = "OTHER"
)

type Query

type Query struct {
}

Query definition for the schema

type ReopenTRBRequestInput

type ReopenTRBRequestInput struct {
	TrbRequestID   uuid.UUID `json:"trbRequestId"`
	ReasonReopened HTML      `json:"reasonReopened"`
	CopyTrbMailbox bool      `json:"copyTrbMailbox"`
	NotifyEuaIds   []string  `json:"notifyEuaIds"`
}

The data needed to reopen a TRB request

type Request

type Request struct {
	ID              uuid.UUID                    `json:"id"`
	Name            *string                      `json:"name,omitempty"`
	SubmittedAt     *time.Time                   `json:"submittedAt,omitempty"`
	Type            RequestType                  `json:"type"`
	Status          string                       `json:"status"`
	StatusRequester *SystemIntakeStatusRequester `json:"statusRequester,omitempty"`
	StatusCreatedAt *time.Time                   `json:"statusCreatedAt,omitempty"`
	Lcid            *string                      `json:"lcid,omitempty"`
	NextMeetingDate *time.Time                   `json:"nextMeetingDate,omitempty"`
}

Represents a requester's system intake request

type RequestEdge

type RequestEdge struct {
	Node *Request `json:"node"`
}

type RequestRelationType

type RequestRelationType string

RequestRelationType represents an enum for different relation types of intakes

const (
	RelationTypeNewSystem       RequestRelationType = "NEW_SYSTEM"
	RelationTypeExistingSystem  RequestRelationType = "EXISTING_SYSTEM"
	RelationTypeExistingService RequestRelationType = "EXISTING_SERVICE"
)

Possible values of SystemIntakeRelationType

type RequestType

type RequestType string

Indicates the type of a request being made with the EASi system

const (
	RequestTypeGovernanceRequest RequestType = "GOVERNANCE_REQUEST"
)

func (RequestType) IsValid

func (e RequestType) IsValid() bool

func (RequestType) MarshalGQL

func (e RequestType) MarshalGQL(w io.Writer)

func (RequestType) String

func (e RequestType) String() string

func (*RequestType) UnmarshalGQL

func (e *RequestType) UnmarshalGQL(v interface{}) error

type RequestsConnection

type RequestsConnection struct {
	Edges []*RequestEdge `json:"edges"`
}

type Role

type Role string

A user role associated with a job code

const (
	// A member of the GRT
	RoleEasiGovteam Role = "EASI_GOVTEAM"
	// An admin on the TRB
	RoleEasiTrbAdmin Role = "EASI_TRB_ADMIN"
	// A generic EASi user
	RoleEasiUser Role = "EASI_USER"
)

func (Role) IsValid

func (e Role) IsValid() bool

func (Role) MarshalGQL

func (e Role) MarshalGQL(w io.Writer)

func (Role) String

func (e Role) String() string

func (*Role) UnmarshalGQL

func (e *Role) UnmarshalGQL(v interface{}) error

type SIGRBReviewerRole

type SIGRBReviewerRole string
const (
	SIGRBRRCoChairCIO          SIGRBReviewerRole = "CO_CHAIR_CIO"
	SIGRBRRCoChairCFO          SIGRBReviewerRole = "CO_CHAIR_CFO"
	SIGRBRRCoChairHCA          SIGRBReviewerRole = "CO_CHAIR_HCA"
	SIGRBRRACA3021Rep          SIGRBReviewerRole = "ACA_3021_REP"
	SIGRBRRCCIIORep            SIGRBReviewerRole = "CCIIO_REP"
	SIGRBRRProgOpBDGChair      SIGRBReviewerRole = "PROGRAM_OPERATIONS_BDG_CHAIR"
	SIGRBRRCMCSRep             SIGRBReviewerRole = "CMCS_REP"
	SIGRBRRFedAdminBDGChair    SIGRBReviewerRole = "FED_ADMIN_BDG_CHAIR"
	SIGRBRRProgIntBDGChair     SIGRBReviewerRole = "PROGRAM_INTEGRITY_BDG_CHAIR"
	SIGRBRRQIORep              SIGRBReviewerRole = "QIO_REP"
	SIGRBRRSubjectMatterExpert SIGRBReviewerRole = "SUBJECT_MATTER_EXPERT"
	SIGRBRROther               SIGRBReviewerRole = "OTHER"
)

type SIGRBReviewerVotingRole

type SIGRBReviewerVotingRole string
const (
	SIGRBRVRVoting    SIGRBReviewerVotingRole = "VOTING"
	SIGRBRVRNonVoting SIGRBReviewerVotingRole = "NON_VOTING"
	SIGRBRVRAlternate SIGRBReviewerVotingRole = "ALTERNATE"
)

type SendCantFindSomethingEmailInput

type SendCantFindSomethingEmailInput struct {
	Body string `json:"body"`
}

type SendFeedbackEmailInput

type SendFeedbackEmailInput struct {
	IsAnonymous            bool     `json:"isAnonymous"`
	CanBeContacted         bool     `json:"canBeContacted"`
	EasiServicesUsed       []string `json:"easiServicesUsed"`
	CmsRole                string   `json:"cmsRole"`
	SystemEasyToUse        string   `json:"systemEasyToUse"`
	DidntNeedHelpAnswering string   `json:"didntNeedHelpAnswering"`
	QuestionsWereRelevant  string   `json:"questionsWereRelevant"`
	HadAccessToInformation string   `json:"hadAccessToInformation"`
	HowSatisfied           string   `json:"howSatisfied"`
	HowCanWeImprove        string   `json:"howCanWeImprove"`
}

The inputs to the user feedback form

type SendReportAProblemEmailInput

type SendReportAProblemEmailInput struct {
	IsAnonymous            bool   `json:"isAnonymous"`
	CanBeContacted         bool   `json:"canBeContacted"`
	EasiService            string `json:"easiService"`
	WhatWereYouDoing       string `json:"whatWereYouDoing"`
	WhatWentWrong          string `json:"whatWentWrong"`
	HowSevereWasTheProblem string `json:"howSevereWasTheProblem"`
}

type SendTRBAdviceLetterInput

type SendTRBAdviceLetterInput struct {
	ID             uuid.UUID `json:"id"`
	CopyTrbMailbox bool      `json:"copyTrbMailbox"`
	NotifyEuaIds   []string  `json:"notifyEuaIds"`
}

The data needed to send a TRB advice letter, including who to notify

type SetRolesForUserOnSystemInput

type SetRolesForUserOnSystemInput struct {
	CedarSystemID      string   `json:"cedarSystemID"`
	EuaUserID          string   `json:"euaUserId"`
	DesiredRoleTypeIDs []string `json:"desiredRoleTypeIDs"`
}

type SetSystemIntakeRelationExistingServiceInput

type SetSystemIntakeRelationExistingServiceInput struct {
	SystemIntakeID  uuid.UUID `json:"systemIntakeID"`
	ContractName    string    `json:"contractName"`
	ContractNumbers []string  `json:"contractNumbers"`
}

type SetSystemIntakeRelationExistingSystemInput

type SetSystemIntakeRelationExistingSystemInput struct {
	SystemIntakeID  uuid.UUID `json:"systemIntakeID"`
	CedarSystemIDs  []string  `json:"cedarSystemIDs"`
	ContractNumbers []string  `json:"contractNumbers"`
}

type SetSystemIntakeRelationNewSystemInput

type SetSystemIntakeRelationNewSystemInput struct {
	SystemIntakeID  uuid.UUID `json:"systemIntakeID"`
	ContractNumbers []string  `json:"contractNumbers"`
}

type SetTRBRequestRelationExistingServiceInput

type SetTRBRequestRelationExistingServiceInput struct {
	TrbRequestID    uuid.UUID `json:"trbRequestID"`
	ContractName    string    `json:"contractName"`
	ContractNumbers []string  `json:"contractNumbers"`
}

type SetTRBRequestRelationExistingSystemInput

type SetTRBRequestRelationExistingSystemInput struct {
	TrbRequestID    uuid.UUID `json:"trbRequestID"`
	CedarSystemIDs  []string  `json:"cedarSystemIDs"`
	ContractNumbers []string  `json:"contractNumbers"`
}

type SetTRBRequestRelationNewSystemInput

type SetTRBRequestRelationNewSystemInput struct {
	TrbRequestID    uuid.UUID `json:"trbRequestID"`
	ContractNumbers []string  `json:"contractNumbers"`
}

type SoftwareProductItem

type SoftwareProductItem struct {
	APIGatewayUse                  bool        `json:"api_gateway_use,omitempty"`
	ElaPurchase                    zero.String `json:"ela_purchase,omitempty"`
	ElaVendorID                    zero.String `json:"ela_vendor_id,omitempty"`
	ProvidesAiCapability           bool        `json:"provides_ai_capability,omitempty"`
	Refstr                         zero.String `json:"refstr,omitempty"`
	SoftwareCatagoryConnectionGUID zero.String `json:"softwareCatagoryConnectionGuid,omitempty"`
	SoftwareVendorConnectionGUID   zero.String `json:"softwareVendorConnectionGuid,omitempty"`
	SoftwareCost                   zero.String `json:"software_cost,omitempty"`
	SoftwareElaOrganization        zero.String `json:"software_ela_organization,omitempty"`
	SoftwareName                   zero.String `json:"software_name,omitempty"`
	SystemSoftwareConnectionGUID   zero.String `json:"systemSoftwareConnectionGuid,omitempty"`
	TechnopediaCategory            zero.String `json:"technopedia_category,omitempty"`
	TechnopediaID                  zero.String `json:"technopedia_id,omitempty"`
	VendorName                     zero.String `json:"vendor_name,omitempty"`
}

SoftwareProductItem represents a single SoftwareProductSearchItem object which is an internal struct used in SoftwareProduct

type SubmitIntakeInput

type SubmitIntakeInput struct {
	ID uuid.UUID `json:"id"`
}

Input to submit an intake for review

type SystemIntake

type SystemIntake struct {
	ID                              uuid.UUID                    `json:"id"`
	EUAUserID                       null.String                  `json:"euaUserId" db:"eua_user_id"`
	State                           SystemIntakeState            `json:"state" db:"state"`
	Step                            SystemIntakeStep             `json:"step" db:"step"`
	RequestType                     SystemIntakeRequestType      `json:"requestType" db:"request_type"`
	Requester                       string                       `json:"requester"`
	Component                       null.String                  `json:"component"`
	BusinessOwner                   null.String                  `json:"businessOwner" db:"business_owner"`
	BusinessOwnerComponent          null.String                  `json:"businessOwnerComponent" db:"business_owner_component"`
	ProductManager                  null.String                  `json:"productManager" db:"product_manager"`
	ProductManagerComponent         null.String                  `json:"productManagerComponent" db:"product_manager_component"`
	ISSO                            null.String                  `json:"isso"`
	ISSOName                        null.String                  `json:"issoName" db:"isso_name"`
	TRBCollaborator                 null.String                  `json:"trbCollaborator" db:"trb_collaborator"`
	TRBCollaboratorName             null.String                  `json:"trbCollaboratorName" db:"trb_collaborator_name"`
	OITSecurityCollaborator         null.String                  `json:"oitSecurityCollaborator" db:"oit_security_collaborator"`
	OITSecurityCollaboratorName     null.String                  `json:"oitSecurityCollaboratorName" db:"oit_security_collaborator_name"`
	EACollaborator                  null.String                  `json:"eaCollaborator" db:"ea_collaborator"`
	EACollaboratorName              null.String                  `json:"eaCollaboratorName" db:"ea_collaborator_name"`
	ProjectName                     null.String                  `json:"projectName" db:"project_name"`
	ProjectAcronym                  null.String                  `json:"projectAcronym" db:"project_acronym"`
	BusinessNeed                    null.String                  `json:"businessNeed" db:"business_need"`
	Solution                        null.String                  `json:"solution"`
	ProcessStatus                   null.String                  `json:"processStatus" db:"process_status"`
	EASupportRequest                null.Bool                    `json:"eaSupportRequest" db:"ea_support_request"`
	ExistingContract                null.String                  `json:"existingContract" db:"existing_contract"`
	CostIncrease                    null.String                  `json:"costIncrease" db:"cost_increase"`
	CostIncreaseAmount              null.String                  `json:"costIncreaseAmount" db:"cost_increase_amount"`
	CurrentAnnualSpending           null.String                  `json:"currentAnnualSpending" db:"current_annual_spending"`
	CurrentAnnualSpendingITPortion  null.String                  `json:"currentAnnualSpendingITPortion" db:"current_annual_spending_it_portion"`
	PlannedYearOneSpending          null.String                  `json:"plannedYearOneSpending" db:"planned_year_one_spending"`
	PlannedYearOneSpendingITPortion null.String                  `json:"plannedYearOneSpendingITPortion" db:"planned_year_one_spending_it_portion"`
	Contractor                      null.String                  `json:"contractor" db:"contractor"`
	ContractVehicle                 null.String                  `json:"contractVehicle" db:"contract_vehicle"`
	ContractStartDate               *time.Time                   `json:"contractStartDate" db:"contract_start_date"`
	ContractStartMonth              null.String                  `json:"contractStartMonth" db:"contract_start_month"`
	ContractStartYear               null.String                  `json:"contractStartYear" db:"contract_start_year"`
	ContractEndDate                 *time.Time                   `json:"contractEndDate" db:"contract_end_date"`
	ContractEndMonth                null.String                  `json:"contractEndMonth" db:"contract_end_month"`
	ContractEndYear                 null.String                  `json:"contractEndYear" db:"contract_end_year"`
	CreatedAt                       *time.Time                   `json:"createdAt" db:"created_at"`
	UpdatedAt                       *time.Time                   `json:"updatedAt" db:"updated_at"`
	SubmittedAt                     *time.Time                   `json:"submittedAt" db:"submitted_at"`
	DecidedAt                       *time.Time                   `json:"decidedAt" db:"decided_at"`
	ArchivedAt                      *time.Time                   `json:"archivedAt" db:"archived_at"`
	GRTDate                         *time.Time                   `json:"grtDate" db:"grt_date"`
	GRBDate                         *time.Time                   `json:"grbDate" db:"grb_date"`
	AlfabetID                       null.String                  `json:"alfabetID" db:"alfabet_id"`
	GrtReviewEmailBody              null.String                  `json:"grtReviewEmailBody" db:"grt_review_email_body"`
	RequesterEmailAddress           null.String                  `json:"requesterEmailAddress" db:"requester_email_address"`
	BusinessCaseID                  *uuid.UUID                   `json:"businessCase" db:"business_case_id"`
	LifecycleID                     null.String                  `json:"lcid" db:"lcid"`
	LifecycleExpiresAt              *time.Time                   `json:"lcidExpiresAt" db:"lcid_expires_at" gqlgen:"lcidExpiresAt"`
	LifecycleScope                  *HTML                        `json:"lcidScope" db:"lcid_scope"`
	LifecycleCostBaseline           null.String                  `json:"lcidCostBaseline" db:"lcid_cost_baseline"`
	LifecycleExpirationAlertTS      *time.Time                   `json:"lcidExpirationAlertTS" db:"lcid_expiration_alert_ts"`
	LifecycleRetiresAt              *time.Time                   `json:"lcidRetiresAt" db:"lcid_retires_at" gqlgen:"lcidRetiresAt"`
	LifecycleIssuedAt               *time.Time                   `json:"lcidIssuedAt" db:"lcid_issued_at" gqlgen:"lcidIssuedAt"`
	DecisionNextSteps               *HTML                        `json:"decisionNextSteps" db:"decision_next_steps"`
	RejectionReason                 *HTML                        `json:"rejectionReason" db:"rejection_reason"`
	AdminLead                       null.String                  `json:"adminLead" db:"admin_lead"`
	CedarSystemID                   null.String                  `json:"cedarSystemId" db:"cedar_system_id"`
	ExistingFunding                 null.Bool                    `json:"existingFunding" db:"existing_funding"`
	FundingSource                   null.String                  `json:"fundingSource" db:"funding_source"`
	FundingNumber                   null.String                  `json:"fundingNumber" db:"funding_number"`
	FundingSources                  []*SystemIntakeFundingSource `json:"fundingSources"`
	HasUIChanges                    null.Bool                    `json:"hasUiChanges" db:"has_ui_changes"`
	RequestFormState                SystemIntakeFormState        `json:"requestFormState" db:"request_form_state"`
	DraftBusinessCaseState          SystemIntakeFormState        `json:"draftBusinessCaseState" db:"draft_business_case_state"`
	FinalBusinessCaseState          SystemIntakeFormState        `json:"finalBusinessCaseState" db:"final_business_case_state"`
	DecisionState                   SystemIntakeDecisionState    `json:"decisionState" db:"decision_state"`
	TRBFollowUpRecommendation       *SystemIntakeTRBFollowUp     `json:"trbFollowUpRecommendation" db:"trb_follow_up_recommendation"`
	ContractName                    zero.String                  `json:"contractName" db:"contract_name"`
	SystemRelationType              *RequestRelationType         `json:"relationType" db:"system_relation_type"`
}

SystemIntake is the model for the system intake form

func (*SystemIntake) GRBMeetingState

func (si *SystemIntake) GRBMeetingState() SystemIntakeMeetingState

GRBMeetingState returns if a GRBMeeting has been scheduled or not

func (*SystemIntake) GRTMeetingState

func (si *SystemIntake) GRTMeetingState() SystemIntakeMeetingState

GRTMeetingState returns if a GRTMeeting has been scheduled or not

func (*SystemIntake) LCIDStatus

func (si *SystemIntake) LCIDStatus(currentTime time.Time) *SystemIntakeLCIDStatus

LCIDStatus returns the status of this intake's LCID, if present

type SystemIntakeAction

type SystemIntakeAction struct {
	ID                     uuid.UUID                         `json:"id"`
	SystemIntake           *SystemIntake                     `json:"systemIntake"`
	Type                   SystemIntakeActionType            `json:"type"`
	Actor                  *SystemIntakeActionActor          `json:"actor"`
	Step                   *SystemIntakeStep                 `json:"step,omitempty"`
	Feedback               *HTML                             `json:"feedback,omitempty"`
	LcidExpirationChange   *SystemIntakeLCIDExpirationChange `json:"lcidExpirationChange,omitempty"`
	PreviousRetirementDate *time.Time                        `json:"previousRetirementDate,omitempty"`
	NewRetirementDate      *time.Time                        `json:"newRetirementDate,omitempty"`
	CreatedAt              time.Time                         `json:"createdAt"`
}

An action taken on a system intake, often resulting in a change in status.

type SystemIntakeActionActor

type SystemIntakeActionActor struct {
	Name  string `json:"name"`
	Email string `json:"email"`
}

The contact who is associated with an action being done to a system request

type SystemIntakeActionType

type SystemIntakeActionType string

Represents the type of an action that is being done to a system request

const (
	SystemIntakeActionTypeProgressToNewStep              SystemIntakeActionType = "PROGRESS_TO_NEW_STEP"
	SystemIntakeActionTypeRequestEdits                   SystemIntakeActionType = "REQUEST_EDITS"
	SystemIntakeActionTypeExpireLcid                     SystemIntakeActionType = "EXPIRE_LCID"
	SystemIntakeActionTypeNotGovernance                  SystemIntakeActionType = "NOT_GOVERNANCE"
	SystemIntakeActionTypeCloseRequest                   SystemIntakeActionType = "CLOSE_REQUEST"
	SystemIntakeActionTypeReopenRequest                  SystemIntakeActionType = "REOPEN_REQUEST"
	SystemIntakeActionTypeUpdateLcid                     SystemIntakeActionType = "UPDATE_LCID"
	SystemIntakeActionTypeConfirmLcid                    SystemIntakeActionType = "CONFIRM_LCID"
	SystemIntakeActionTypeRetireLcid                     SystemIntakeActionType = "RETIRE_LCID"
	SystemIntakeActionTypeChangeLcidRetirementDate       SystemIntakeActionType = "CHANGE_LCID_RETIREMENT_DATE"
	SystemIntakeActionTypeIssueLcid                      SystemIntakeActionType = "ISSUE_LCID"
	SystemIntakeActionTypeSubmitIntake                   SystemIntakeActionType = "SUBMIT_INTAKE"
	SystemIntakeActionTypeReject                         SystemIntakeActionType = "REJECT"
	SystemIntakeActionTypeBizCaseNeedsChanges            SystemIntakeActionType = "BIZ_CASE_NEEDS_CHANGES"
	SystemIntakeActionTypeCreateBizCase                  SystemIntakeActionType = "CREATE_BIZ_CASE"
	SystemIntakeActionTypeGUIDEReceivedClose             SystemIntakeActionType = "GUIDE_RECEIVED_CLOSE"
	SystemIntakeActionTypeExtendLcid                     SystemIntakeActionType = "EXTEND_LCID"
	SystemIntakeActionTypeNeedBizCase                    SystemIntakeActionType = "NEED_BIZ_CASE"
	SystemIntakeActionTypeNoGovernanceNeeded             SystemIntakeActionType = "NO_GOVERNANCE_NEEDED"
	SystemIntakeActionTypeNotItRequest                   SystemIntakeActionType = "NOT_IT_REQUEST"
	SystemIntakeActionTypeNotRespondingClose             SystemIntakeActionType = "NOT_RESPONDING_CLOSE"
	SystemIntakeActionTypeProvideFeedbackNeedBizCase     SystemIntakeActionType = "PROVIDE_FEEDBACK_NEED_BIZ_CASE"
	SystemIntakeActionTypeProvideGrtFeedbackBizCaseDraft SystemIntakeActionType = "PROVIDE_GRT_FEEDBACK_BIZ_CASE_DRAFT"
	SystemIntakeActionTypeProvideGrtFeedbackBizCaseFinal SystemIntakeActionType = "PROVIDE_GRT_FEEDBACK_BIZ_CASE_FINAL"
	SystemIntakeActionTypeReadyForGrb                    SystemIntakeActionType = "READY_FOR_GRB"
	SystemIntakeActionTypeReadyForGrt                    SystemIntakeActionType = "READY_FOR_GRT"
	SystemIntakeActionTypeSendEmail                      SystemIntakeActionType = "SEND_EMAIL"
	SystemIntakeActionTypeSubmitBizCase                  SystemIntakeActionType = "SUBMIT_BIZ_CASE"
	SystemIntakeActionTypeSubmitFinalBizCase             SystemIntakeActionType = "SUBMIT_FINAL_BIZ_CASE"
)

func (SystemIntakeActionType) IsValid

func (e SystemIntakeActionType) IsValid() bool

func (SystemIntakeActionType) MarshalGQL

func (e SystemIntakeActionType) MarshalGQL(w io.Writer)

func (SystemIntakeActionType) String

func (e SystemIntakeActionType) String() string

func (*SystemIntakeActionType) UnmarshalGQL

func (e *SystemIntakeActionType) UnmarshalGQL(v interface{}) error

type SystemIntakeAnnualSpending

type SystemIntakeAnnualSpending struct {
	CurrentAnnualSpending           *string `json:"currentAnnualSpending,omitempty"`
	CurrentAnnualSpendingITPortion  *string `json:"currentAnnualSpendingITPortion,omitempty"`
	PlannedYearOneSpending          *string `json:"plannedYearOneSpending,omitempty"`
	PlannedYearOneSpendingITPortion *string `json:"plannedYearOneSpendingITPortion,omitempty"`
}

Represents current and planned annual costs for a system

type SystemIntakeAnnualSpendingInput

type SystemIntakeAnnualSpendingInput struct {
	CurrentAnnualSpending           *string `json:"currentAnnualSpending,omitempty"`
	CurrentAnnualSpendingITPortion  *string `json:"currentAnnualSpendingITPortion,omitempty"`
	PlannedYearOneSpending          *string `json:"plannedYearOneSpending,omitempty"`
	PlannedYearOneSpendingITPortion *string `json:"plannedYearOneSpendingITPortion,omitempty"`
}

Input data for current and planned year one annual costs associated with a system request

type SystemIntakeBusinessOwner

type SystemIntakeBusinessOwner struct {
	Component *string `json:"component,omitempty"`
	Name      *string `json:"name,omitempty"`
}

Represents the OIT business owner of a system

type SystemIntakeBusinessOwnerInput

type SystemIntakeBusinessOwnerInput struct {
	Name      string `json:"name"`
	Component string `json:"component"`
}

The input data used to set the CMS business owner of a system

type SystemIntakeChangeLCIDRetirementDateInput

type SystemIntakeChangeLCIDRetirementDateInput struct {
	SystemIntakeID         uuid.UUID                    `json:"systemIntakeID"`
	RetiresAt              time.Time                    `json:"retiresAt"`
	AdditionalInfo         *HTML                        `json:"additionalInfo,omitempty"`
	NotificationRecipients *EmailNotificationRecipients `json:"notificationRecipients,omitempty"`
	AdminNote              *HTML                        `json:"adminNote,omitempty"`
}

Input for changing an intake's LCID retirement date in IT Gov v2

type SystemIntakeCloseRequestInput

type SystemIntakeCloseRequestInput struct {
	SystemIntakeID         uuid.UUID                    `json:"systemIntakeID"`
	NotificationRecipients *EmailNotificationRecipients `json:"notificationRecipients,omitempty"`
	Reason                 *HTML                        `json:"reason,omitempty"`
	AdditionalInfo         *HTML                        `json:"additionalInfo,omitempty"`
	AdminNote              *HTML                        `json:"adminNote,omitempty"`
}

Input for creating a Close Request Action in Admin Actions v2

type SystemIntakeCollaborator

type SystemIntakeCollaborator struct {
	Acronym      string `json:"acronym"`
	Collaborator string `json:"collaborator"`
	Key          string `json:"key"`
	Label        string `json:"label"`
	Name         string `json:"name"`
}

Represents a contact in OIT who is collaborating with the user creating a system IT governance request

type SystemIntakeCollaboratorInput

type SystemIntakeCollaboratorInput struct {
	Collaborator string `json:"collaborator"`
	Name         string `json:"name"`
	Key          string `json:"key"`
}

The input data used to add an OIT collaborator for a system request

type SystemIntakeConfirmLCIDInput

type SystemIntakeConfirmLCIDInput struct {
	SystemIntakeID         uuid.UUID                    `json:"systemIntakeID"`
	ExpiresAt              time.Time                    `json:"expiresAt"`
	Scope                  HTML                         `json:"scope"`
	NextSteps              HTML                         `json:"nextSteps"`
	TrbFollowUp            SystemIntakeTRBFollowUp      `json:"trbFollowUp"`
	CostBaseline           *string                      `json:"costBaseline,omitempty"`
	AdditionalInfo         *HTML                        `json:"additionalInfo,omitempty"`
	NotificationRecipients *EmailNotificationRecipients `json:"notificationRecipients,omitempty"`
	AdminNote              *HTML                        `json:"adminNote,omitempty"`
}

Input for confirming an intake's decision to issue an LCID in IT Gov v2

type SystemIntakeContact

type SystemIntakeContact struct {
	ID             uuid.UUID  `json:"id"`
	EUAUserID      string     `json:"euaUserId" db:"eua_user_id"`
	SystemIntakeID uuid.UUID  `json:"systemIntakeId" db:"system_intake_id"`
	Component      string     `json:"component" db:"component"`
	Role           string     `json:"role" db:"role"`
	UpdatedAt      *time.Time `db:"updated_at"`
	CreatedAt      *time.Time `db:"created_at"`
}

SystemIntakeContact represents an EUA user's association with a system intake

type SystemIntakeContactsPayload

type SystemIntakeContactsPayload struct {
	SystemIntakeContacts []*AugmentedSystemIntakeContact `json:"systemIntakeContacts"`
	InvalidEUAIDs        []string                        `json:"invalidEUAIDs"`
}

The payload when retrieving system intake contacts

type SystemIntakeContract

type SystemIntakeContract struct {
	Contractor  *string       `json:"contractor,omitempty"`
	EndDate     *ContractDate `json:"endDate"`
	HasContract *string       `json:"hasContract,omitempty"`
	StartDate   *ContractDate `json:"startDate"`
	Vehicle     *string       `json:"vehicle,omitempty"`
}

Represents a contract for work on a system

type SystemIntakeContractInput

type SystemIntakeContractInput struct {
	Contractor  *string    `json:"contractor,omitempty"`
	EndDate     *time.Time `json:"endDate,omitempty"`
	HasContract *string    `json:"hasContract,omitempty"`
	StartDate   *time.Time `json:"startDate,omitempty"`
	Numbers     []string   `json:"numbers"`
}

Input data containing information about a contract related to a system request

type SystemIntakeContractNumber

type SystemIntakeContractNumber struct {
	BaseStructUser
	SystemIntakeID uuid.UUID `db:"system_intake_id"`
	ContractNumber string    `db:"contract_number"`
}

SystemIntakeContractNumber is the insertion type for linking a system intake to contract number(s)

func NewSystemIntakeContractNumber

func NewSystemIntakeContractNumber(createdBy uuid.UUID) SystemIntakeContractNumber

NewSystemIntakeContractNumber creates a SystemIntakeContractNumberLink

func (*SystemIntakeContractNumber) CreatedByUserAccount

func (cbr *SystemIntakeContractNumber) CreatedByUserAccount(ctx context.Context) *authentication.UserAccount

CreatedByUserAccount returns the user account of the user who created the struct from the DB using the UserAccount service

func (*SystemIntakeContractNumber) ModifiedByUserAccount

func (mbr *SystemIntakeContractNumber) ModifiedByUserAccount(ctx context.Context) *authentication.UserAccount

ModifiedByUserAccount returns the user account of the user who modified the struct from the DB using the UserAccount service

type SystemIntakeCosts

type SystemIntakeCosts struct {
	ExpectedIncreaseAmount *string `json:"expectedIncreaseAmount,omitempty"`
	IsExpectingIncrease    *string `json:"isExpectingIncrease,omitempty"`
}

Represents expectations about a system's additional costs

type SystemIntakeCostsInput

type SystemIntakeCostsInput struct {
	ExpectedIncreaseAmount *string `json:"expectedIncreaseAmount,omitempty"`
	IsExpectingIncrease    *string `json:"isExpectingIncrease,omitempty"`
}

Input data for estimated system cost increases associated with a system request

NOTE: This field is no longer in intake form but data/query is preserved for existing intakes (EASI-2076)

type SystemIntakeDecisionState

type SystemIntakeDecisionState string

SystemIntakeDecisionState represents the types of SystemIntakeDecisionState types.

const (
	SIDSNoDecision    SystemIntakeDecisionState = "NO_DECISION"
	SIDSLcidIssued    SystemIntakeDecisionState = "LCID_ISSUED"
	SIDSNotApproved   SystemIntakeDecisionState = "NOT_APPROVED"
	SIDSNotGovernance SystemIntakeDecisionState = "NOT_GOVERNANCE"
)

These are the options for SystemIntakeDecisionState

type SystemIntakeDocument

type SystemIntakeDocument struct {
	BaseStruct
	SystemIntakeRequestID uuid.UUID                      `json:"systemIntakeId" db:"system_intake_id"`
	CommonDocumentType    SystemIntakeDocumentCommonType `db:"document_type"`
	OtherType             string                         `db:"other_type"`
	FileName              string                         `json:"fileName" db:"file_name"`
	Bucket                string                         `json:"bucket" db:"bucket"`
	S3Key                 string                         `json:"s3Key" db:"s3_key"` // The document's key inside an S3 bucket; does *not* include the bucket name.
}

SystemIntakeDocument represents a document attached to a system intake that has been uploaded to S3

type SystemIntakeDocumentCommonType

type SystemIntakeDocumentCommonType string

SystemIntakeDocumentCommonType represents the document type, including an "OTHER" option for user-specified types

type SystemIntakeDocumentStatus

type SystemIntakeDocumentStatus string

SystemIntakeDocumentStatus represents the availability of a document in regards to virus scanning

type SystemIntakeDocumentType

type SystemIntakeDocumentType struct {
	CommonType           SystemIntakeDocumentCommonType `json:"commonType"`
	OtherTypeDescription *string                        `json:"otherTypeDescription,omitempty"`
}

Denotes the type of a document attached to a System Intake, which can be one of a number of common types, or a free-text user-specified type

type SystemIntakeExpireLCIDInput

type SystemIntakeExpireLCIDInput struct {
	SystemIntakeID         uuid.UUID                    `json:"systemIntakeID"`
	Reason                 HTML                         `json:"reason"`
	NextSteps              *HTML                        `json:"nextSteps,omitempty"`
	NotificationRecipients *EmailNotificationRecipients `json:"notificationRecipients,omitempty"`
	AdditionalInfo         *HTML                        `json:"additionalInfo,omitempty"`
	AdminNote              *HTML                        `json:"adminNote,omitempty"`
}

Input for expiring an intake's LCID in IT Gov v2

type SystemIntakeFormState

type SystemIntakeFormState string

SystemIntakeFormState represents the possible states of of any System Intake form types.

const (
	SIRFSNotStarted     SystemIntakeFormState = "NOT_STARTED"
	SIRFSInProgress     SystemIntakeFormState = "IN_PROGRESS"
	SIRFSEditsRequested SystemIntakeFormState = "EDITS_REQUESTED"
	SIRFSSubmitted      SystemIntakeFormState = "SUBMITTED"
)

These are the options for SystemIntakeRequestFormState

type SystemIntakeFormStep

type SystemIntakeFormStep string

SystemIntakeRequestEditsOptions represents the current step in the intake process

const (
	SystemIntakeFormStepInitialRequestForm SystemIntakeFormStep = "INITIAL_REQUEST_FORM"
	SystemIntakeFormStepDraftBusinessCase  SystemIntakeFormStep = "DRAFT_BUSINESS_CASE"
	SystemIntakeFormStepFinalBusinessCase  SystemIntakeFormStep = "FINAL_BUSINESS_CASE"
)

func (SystemIntakeFormStep) IsValid

func (e SystemIntakeFormStep) IsValid() bool

func (SystemIntakeFormStep) MarshalGQL

func (e SystemIntakeFormStep) MarshalGQL(w io.Writer)

func (SystemIntakeFormStep) String

func (e SystemIntakeFormStep) String() string

func (*SystemIntakeFormStep) UnmarshalGQL

func (e *SystemIntakeFormStep) UnmarshalGQL(v interface{}) error

type SystemIntakeFundingSource

type SystemIntakeFundingSource struct {
	ID             uuid.UUID   `json:"id"`
	SystemIntakeID uuid.UUID   `json:"systemIntakeId" db:"system_intake_id"`
	Source         null.String `json:"source" db:"source"`
	FundingNumber  null.String `json:"fundingNumber" db:"funding_number"`
	CreatedAt      *time.Time  `db:"created_at"`
}

SystemIntakeFundingSource represents one of multiple funding selections that can be added to a SystemIntake

type SystemIntakeFundingSourceInput

type SystemIntakeFundingSourceInput struct {
	FundingNumber *string `json:"fundingNumber,omitempty"`
	Source        *string `json:"source,omitempty"`
}

Represents the source of funding for a system

type SystemIntakeFundingSourcesInput

type SystemIntakeFundingSourcesInput struct {
	ExistingFunding *bool                             `json:"existingFunding,omitempty"`
	FundingSources  []*SystemIntakeFundingSourceInput `json:"fundingSources"`
}

The input required to specify the funding source(s) for a system intake

type SystemIntakeGRBReviewer

type SystemIntakeGRBReviewer struct {
	BaseStructUser

	SystemIntakeID uuid.UUID               `json:"systemIntakeId" db:"system_intake_id"`
	VotingRole     SIGRBReviewerVotingRole `json:"votingRole" db:"voting_role"`
	GRBRole        SIGRBReviewerRole       `json:"grbRole" db:"grb_role"`
	// contains filtered or unexported fields
}

SystemIntakeGRBReviewer describes

func NewSystemIntakeGRBReviewer

func NewSystemIntakeGRBReviewer(userID uuid.UUID, createdBy uuid.UUID) *SystemIntakeGRBReviewer

func (*SystemIntakeGRBReviewer) CreatedByUserAccount

func (cbr *SystemIntakeGRBReviewer) CreatedByUserAccount(ctx context.Context) *authentication.UserAccount

CreatedByUserAccount returns the user account of the user who created the struct from the DB using the UserAccount service

func (*SystemIntakeGRBReviewer) ModifiedByUserAccount

func (mbr *SystemIntakeGRBReviewer) ModifiedByUserAccount(ctx context.Context) *authentication.UserAccount

ModifiedByUserAccount returns the user account of the user who modified the struct from the DB using the UserAccount service

func (*SystemIntakeGRBReviewer) UserAccount

func (b *SystemIntakeGRBReviewer) UserAccount(ctx context.Context) (*authentication.UserAccount, error)

type SystemIntakeGRBReviewerRole

type SystemIntakeGRBReviewerRole string
const (
	SystemIntakeGRBReviewerRoleVoting    SystemIntakeGRBReviewerRole = "VOTING"
	SystemIntakeGRBReviewerRoleAlternate SystemIntakeGRBReviewerRole = "ALTERNATE"
	SystemIntakeGRBReviewerRoleNonVoting SystemIntakeGRBReviewerRole = "NON_VOTING"
)

func (SystemIntakeGRBReviewerRole) IsValid

func (e SystemIntakeGRBReviewerRole) IsValid() bool

func (SystemIntakeGRBReviewerRole) MarshalGQL

func (e SystemIntakeGRBReviewerRole) MarshalGQL(w io.Writer)

func (SystemIntakeGRBReviewerRole) String

func (*SystemIntakeGRBReviewerRole) UnmarshalGQL

func (e *SystemIntakeGRBReviewerRole) UnmarshalGQL(v interface{}) error

type SystemIntakeGRBReviewerVotingRole

type SystemIntakeGRBReviewerVotingRole string
const (
	SystemIntakeGRBReviewerVotingRoleCoChairCio                SystemIntakeGRBReviewerVotingRole = "CO_CHAIR_CIO"
	SystemIntakeGRBReviewerVotingRoleCoChairCfo                SystemIntakeGRBReviewerVotingRole = "CO_CHAIR_CFO"
	SystemIntakeGRBReviewerVotingRoleCoChairHca                SystemIntakeGRBReviewerVotingRole = "CO_CHAIR_HCA"
	SystemIntakeGRBReviewerVotingRoleAca3021Rep                SystemIntakeGRBReviewerVotingRole = "ACA_3021_REP"
	SystemIntakeGRBReviewerVotingRoleCciioRep                  SystemIntakeGRBReviewerVotingRole = "CCIIO_REP"
	SystemIntakeGRBReviewerVotingRoleProgramOperationsBdgChair SystemIntakeGRBReviewerVotingRole = "PROGRAM_OPERATIONS_BDG_CHAIR"
	SystemIntakeGRBReviewerVotingRoleCmcsRep                   SystemIntakeGRBReviewerVotingRole = "CMCS_REP"
	SystemIntakeGRBReviewerVotingRoleFedAdminBdgChair          SystemIntakeGRBReviewerVotingRole = "FED_ADMIN_BDG_CHAIR"
	SystemIntakeGRBReviewerVotingRoleProgramIntegrityBdgChair  SystemIntakeGRBReviewerVotingRole = "PROGRAM_INTEGRITY_BDG_CHAIR"
	SystemIntakeGRBReviewerVotingRoleQioRep                    SystemIntakeGRBReviewerVotingRole = "QIO_REP"
	SystemIntakeGRBReviewerVotingRoleSubjectMatterExpert       SystemIntakeGRBReviewerVotingRole = "SUBJECT_MATTER_EXPERT"
	SystemIntakeGRBReviewerVotingRoleOther                     SystemIntakeGRBReviewerVotingRole = "OTHER"
)

func (SystemIntakeGRBReviewerVotingRole) IsValid

func (SystemIntakeGRBReviewerVotingRole) MarshalGQL

func (SystemIntakeGRBReviewerVotingRole) String

func (*SystemIntakeGRBReviewerVotingRole) UnmarshalGQL

func (e *SystemIntakeGRBReviewerVotingRole) UnmarshalGQL(v interface{}) error

type SystemIntakeGovernanceTeam

type SystemIntakeGovernanceTeam struct {
	IsPresent *bool                       `json:"isPresent,omitempty"`
	Teams     []*SystemIntakeCollaborator `json:"teams,omitempty"`
}

Contains multiple system request collaborators, if any

type SystemIntakeGovernanceTeamInput

type SystemIntakeGovernanceTeamInput struct {
	IsPresent *bool                            `json:"isPresent,omitempty"`
	Teams     []*SystemIntakeCollaboratorInput `json:"teams,omitempty"`
}

The input data used to set the list of OIT collaborators for a system request

type SystemIntakeISSOInput

type SystemIntakeISSOInput struct {
	IsPresent *bool   `json:"isPresent,omitempty"`
	Name      *string `json:"name,omitempty"`
}

The input data used to set the ISSO associated with a system request, if any

type SystemIntakeIsso

type SystemIntakeIsso struct {
	IsPresent *bool   `json:"isPresent,omitempty"`
	Name      *string `json:"name,omitempty"`
}

The Information System Security Officer (ISSO) that is assicuated with a system request, if any

type SystemIntakeIssueLCIDInput

type SystemIntakeIssueLCIDInput struct {
	SystemIntakeID         uuid.UUID                    `json:"systemIntakeID"`
	Lcid                   *string                      `json:"lcid,omitempty"`
	ExpiresAt              time.Time                    `json:"expiresAt"`
	Scope                  HTML                         `json:"scope"`
	NextSteps              HTML                         `json:"nextSteps"`
	TrbFollowUp            SystemIntakeTRBFollowUp      `json:"trbFollowUp"`
	CostBaseline           *string                      `json:"costBaseline,omitempty"`
	AdditionalInfo         *HTML                        `json:"additionalInfo,omitempty"`
	NotificationRecipients *EmailNotificationRecipients `json:"notificationRecipients,omitempty"`
	AdminNote              *HTML                        `json:"adminNote,omitempty"`
}

Input for setting an intake's decision to issuing an LCID in IT Gov v2

type SystemIntakeLCIDExpirationChange

type SystemIntakeLCIDExpirationChange struct {
	PreviousDate         time.Time `json:"previousDate"`
	NewDate              time.Time `json:"newDate"`
	PreviousScope        *HTML     `json:"previousScope,omitempty"`
	NewScope             *HTML     `json:"newScope,omitempty"`
	PreviousNextSteps    *HTML     `json:"previousNextSteps,omitempty"`
	NewNextSteps         *HTML     `json:"newNextSteps,omitempty"`
	PreviousCostBaseline *string   `json:"previousCostBaseline,omitempty"`
	NewCostBaseline      *string   `json:"newCostBaseline,omitempty"`
}

Contains the data about a change to the expiration date of a system request's lifecycle ID

type SystemIntakeLCIDStatus

type SystemIntakeLCIDStatus string

SystemIntakeLCIDStatus represents the possible statuses that an issued LCID can be in

const (
	SystemIntakeLCIDStatusIssued  SystemIntakeLCIDStatus = "ISSUED"
	SystemIntakeLCIDStatusExpired SystemIntakeLCIDStatus = "EXPIRED"
	SystemIntakeLCIDStatusRetired SystemIntakeLCIDStatus = "RETIRED"
)

possible values of SystemIntakeLCIDStatus - corresponds to SystemIntakeLCIDStatus enum in GraphQL schema

type SystemIntakeMeetingState

type SystemIntakeMeetingState string

SystemIntakeMeetingState is the state for any meeting for a system intake

const (
	SIMSScheduled    SystemIntakeMeetingState = "SCHEDULED"
	SIMSNotScheduled SystemIntakeMeetingState = "NOT_SCHEDULED"
)

These are the options for SystemIntakeMeetingState

type SystemIntakeMetrics

type SystemIntakeMetrics struct {
	StartTime          time.Time `json:"startTime"`
	EndTime            time.Time `json:"endTime"`
	Started            int       `json:"started"`
	CompletedOfStarted int       `json:"completedOfStarted"`
	Completed          int       `json:"completed"`
	Funded             int       `json:"funded"`
}

SystemIntakeMetrics is a model for storing metrics related to system intake

type SystemIntakeNotITGovReqInput

type SystemIntakeNotITGovReqInput struct {
	SystemIntakeID         uuid.UUID                    `json:"systemIntakeID"`
	NotificationRecipients *EmailNotificationRecipients `json:"notificationRecipients,omitempty"`
	Reason                 *HTML                        `json:"reason,omitempty"`
	AdditionalInfo         *HTML                        `json:"additionalInfo,omitempty"`
	AdminNote              *HTML                        `json:"adminNote,omitempty"`
}

Input for creating a Not an IT Governance Request Action in Admin Actions v2

type SystemIntakeNote

type SystemIntakeNote struct {
	ID             uuid.UUID   `json:"id"`
	SystemIntakeID uuid.UUID   `json:"systemIntakeId" db:"system_intake"`
	CreatedAt      *time.Time  `json:"createdAt" db:"created_at"`
	AuthorEUAID    string      `json:"authorId" db:"eua_user_id"`
	AuthorName     null.String `json:"authorName" db:"author_name"`
	Content        *HTML       `json:"content" db:"content"`
	ModifiedAt     *time.Time  `json:"modifiedAt" db:"modified_at"`
	ModifiedBy     *string     `json:"modifiedBy" db:"modified_by"`
	IsArchived     bool        `json:"isArchived" db:"is_archived"`
}

SystemIntakeNote holds commentary information submitted by the review team about a SystemIntake

type SystemIntakeNoteAuthor

type SystemIntakeNoteAuthor struct {
	Eua  string `json:"eua"`
	Name string `json:"name"`
}

The author of a note added to a system request

type SystemIntakeProductManager

type SystemIntakeProductManager struct {
	Component *string `json:"component,omitempty"`
	Name      *string `json:"name,omitempty"`
}

The product manager associated with a system

type SystemIntakeProductManagerInput

type SystemIntakeProductManagerInput struct {
	Name      string `json:"name"`
	Component string `json:"component"`
}

The input data used to set the CMS product manager/lead of a system

type SystemIntakeProgressToNewStepsInput

type SystemIntakeProgressToNewStepsInput struct {
	SystemIntakeID         uuid.UUID                    `json:"systemIntakeID"`
	NewStep                SystemIntakeStepToProgressTo `json:"newStep"`
	MeetingDate            *time.Time                   `json:"meetingDate,omitempty"`
	NotificationRecipients *EmailNotificationRecipients `json:"notificationRecipients,omitempty"`
	Feedback               *HTML                        `json:"feedback,omitempty"`
	GrbRecommendations     *HTML                        `json:"grbRecommendations,omitempty"`
	AdditionalInfo         *HTML                        `json:"additionalInfo,omitempty"`
	AdminNote              *HTML                        `json:"adminNote,omitempty"`
}

Input for submitting a Progress to New Step action in IT Gov v2

type SystemIntakeRejectIntakeInput

type SystemIntakeRejectIntakeInput struct {
	SystemIntakeID         uuid.UUID                    `json:"systemIntakeID"`
	Reason                 HTML                         `json:"reason"`
	NextSteps              HTML                         `json:"nextSteps"`
	TrbFollowUp            SystemIntakeTRBFollowUp      `json:"trbFollowUp"`
	AdditionalInfo         *HTML                        `json:"additionalInfo,omitempty"`
	NotificationRecipients *EmailNotificationRecipients `json:"notificationRecipients,omitempty"`
	AdminNote              *HTML                        `json:"adminNote,omitempty"`
}

Input for setting an intake's decision to Not Approved by GRB in IT Gov v2

type SystemIntakeReopenRequestInput

type SystemIntakeReopenRequestInput struct {
	SystemIntakeID         uuid.UUID                    `json:"systemIntakeID"`
	NotificationRecipients *EmailNotificationRecipients `json:"notificationRecipients,omitempty"`
	Reason                 *HTML                        `json:"reason,omitempty"`
	AdditionalInfo         *HTML                        `json:"additionalInfo,omitempty"`
	AdminNote              *HTML                        `json:"adminNote,omitempty"`
}

Input for creating a Reopen Request Action in Admin Actions v2

type SystemIntakeRequestEditsInput

type SystemIntakeRequestEditsInput struct {
	SystemIntakeID         uuid.UUID                    `json:"systemIntakeID"`
	IntakeFormStep         SystemIntakeFormStep         `json:"intakeFormStep"`
	NotificationRecipients *EmailNotificationRecipients `json:"notificationRecipients,omitempty"`
	EmailFeedback          HTML                         `json:"emailFeedback"`
	AdditionalInfo         *HTML                        `json:"additionalInfo,omitempty"`
	AdminNote              *HTML                        `json:"adminNote,omitempty"`
}

Input for creating a Request Edits Action in Admin Actions v2

type SystemIntakeRequestType

type SystemIntakeRequestType string

SystemIntakeRequestType represents the type of a system intake

const (
	// SystemIntakeRequestTypeNEW captures enum value of "NEW"
	SystemIntakeRequestTypeNEW SystemIntakeRequestType = "NEW"
	// SystemIntakeRequestTypeMAJORCHANGES captures enum value of "MAJOR_CHANGES"
	SystemIntakeRequestTypeMAJORCHANGES SystemIntakeRequestType = "MAJOR_CHANGES"
	// SystemIntakeRequestTypeRECOMPETE captures enum value of "RECOMPETE"
	SystemIntakeRequestTypeRECOMPETE SystemIntakeRequestType = "RECOMPETE"
	// SystemIntakeRequestTypeSHUTDOWN captures enum value of "SHUTDOWN"
	SystemIntakeRequestTypeSHUTDOWN SystemIntakeRequestType = "SHUTDOWN"
)

type SystemIntakeRequester

type SystemIntakeRequester struct {
	Component *string `json:"component,omitempty"`
	Email     *string `json:"email,omitempty"`
	Name      string  `json:"name"`
}

The contact who made an IT governance request for a system

type SystemIntakeRequesterInput

type SystemIntakeRequesterInput struct {
	Name string `json:"name"`
}

The input data used to set the requester of a system request

type SystemIntakeRequesterWithComponentInput

type SystemIntakeRequesterWithComponentInput struct {
	Name      string `json:"name"`
	Component string `json:"component"`
}

The input data used to set the requester for a system request along with the requester's business component

type SystemIntakeRetireLCIDInput

type SystemIntakeRetireLCIDInput struct {
	SystemIntakeID         uuid.UUID                    `json:"systemIntakeID"`
	RetiresAt              time.Time                    `json:"retiresAt"`
	Reason                 *HTML                        `json:"reason,omitempty"`
	AdditionalInfo         *HTML                        `json:"additionalInfo,omitempty"`
	NotificationRecipients *EmailNotificationRecipients `json:"notificationRecipients,omitempty"`
	AdminNote              *HTML                        `json:"adminNote,omitempty"`
}

Input for retiring an intake's LCID in IT Gov v2

type SystemIntakeState

type SystemIntakeState string

SystemIntakeState represents whether the intake is open or closed

const (
	// SystemIntakeStateOpen captures enum value "OPEN"
	SystemIntakeStateOpen SystemIntakeState = "OPEN"
	// SystemIntakeStateClosed captures enum value "CLOSED"
	SystemIntakeStateClosed SystemIntakeState = "CLOSED"
)

type SystemIntakeStatusAdmin

type SystemIntakeStatusAdmin string

SystemIntakeStatusAdmin represents the types of statuses that a user can see in the admin view of a system intake request.

const (
	SISAInitialRequestFormInProgress SystemIntakeStatusAdmin = "INITIAL_REQUEST_FORM_IN_PROGRESS"
	SISAInitialRequestFormSubmitted  SystemIntakeStatusAdmin = "INITIAL_REQUEST_FORM_SUBMITTED"
	SISADraftBusinessCaseInProgress  SystemIntakeStatusAdmin = "DRAFT_BUSINESS_CASE_IN_PROGRESS"
	SISADraftBusinessCaseSubmitted   SystemIntakeStatusAdmin = "DRAFT_BUSINESS_CASE_SUBMITTED"
	SISAGrtMeetingReady              SystemIntakeStatusAdmin = "GRT_MEETING_READY"
	SISAGrtMeetingComplete           SystemIntakeStatusAdmin = "GRT_MEETING_COMPLETE"
	SISAGrbMeetingReady              SystemIntakeStatusAdmin = "GRB_MEETING_READY"
	SISAGrbMeetingComplete           SystemIntakeStatusAdmin = "GRB_MEETING_COMPLETE"
	SISAFinalBusinessCaseInProgress  SystemIntakeStatusAdmin = "FINAL_BUSINESS_CASE_IN_PROGRESS"
	SISAFinalBusinessCaseSubmitted   SystemIntakeStatusAdmin = "FINAL_BUSINESS_CASE_SUBMITTED"
	SISALcidIssued                   SystemIntakeStatusAdmin = "LCID_ISSUED"
	SISALcidExpired                  SystemIntakeStatusAdmin = "LCID_EXPIRED"
	SISALcidRetired                  SystemIntakeStatusAdmin = "LCID_RETIRED"
	SISANotGovernance                SystemIntakeStatusAdmin = "NOT_GOVERNANCE"
	SISANotApproved                  SystemIntakeStatusAdmin = "NOT_APPROVED"
	SISAClosed                       SystemIntakeStatusAdmin = "CLOSED"
)

These are the options for SystemIntakeStatusAdmin

type SystemIntakeStatusRequester

type SystemIntakeStatusRequester string

SystemIntakeStatusRequester represents the (calculated) statuses that a requester view of a system intake request can show

const (
	SISRInitialRequestFormNew            SystemIntakeStatusRequester = "INITIAL_REQUEST_FORM_NEW"
	SISRInitialRequestFormInProgress     SystemIntakeStatusRequester = "INITIAL_REQUEST_FORM_IN_PROGRESS"
	SISRInitialRequestFormSubmitted      SystemIntakeStatusRequester = "INITIAL_REQUEST_FORM_SUBMITTED"
	SISRInitialRequestFormEditsRequested SystemIntakeStatusRequester = "INITIAL_REQUEST_FORM_EDITS_REQUESTED"
	SISRDraftBusinessCaseInProgress      SystemIntakeStatusRequester = "DRAFT_BUSINESS_CASE_IN_PROGRESS"
	SISRDraftBusinessCaseSubmitted       SystemIntakeStatusRequester = "DRAFT_BUSINESS_CASE_SUBMITTED"
	SISRDraftBusinessCaseEditsRequested  SystemIntakeStatusRequester = "DRAFT_BUSINESS_CASE_EDITS_REQUESTED"
	SISRGrtMeetingReady                  SystemIntakeStatusRequester = "GRT_MEETING_READY"
	SISRGrtMeetingAwaitingDecision       SystemIntakeStatusRequester = "GRT_MEETING_AWAITING_DECISION"
	SISRFinalBusinessCaseInProgress      SystemIntakeStatusRequester = "FINAL_BUSINESS_CASE_IN_PROGRESS"
	SISRFinalBusinessCaseSubmitted       SystemIntakeStatusRequester = "FINAL_BUSINESS_CASE_SUBMITTED"
	SISRFinalBusinessCaseEditsRequested  SystemIntakeStatusRequester = "FINAL_BUSINESS_CASE_EDITS_REQUESTED"
	SISRGrbMeetingReady                  SystemIntakeStatusRequester = "GRB_MEETING_READY"
	SISRGrbMeetingAwaitingDecision       SystemIntakeStatusRequester = "GRB_MEETING_AWAITING_DECISION"
	SISRLcidIssued                       SystemIntakeStatusRequester = "LCID_ISSUED"
	SISRLcidExpired                      SystemIntakeStatusRequester = "LCID_EXPIRED"
	SISRLcidRetired                      SystemIntakeStatusRequester = "LCID_RETIRED"
	SISRNotGovernance                    SystemIntakeStatusRequester = "NOT_GOVERNANCE"
	SISRNotApproved                      SystemIntakeStatusRequester = "NOT_APPROVED"
	SISRClosed                           SystemIntakeStatusRequester = "CLOSED"
)

These are the options for SystemIntakeStatusRequester

type SystemIntakeStep

type SystemIntakeStep string

SystemIntakeStep represents the current step in the intake process

const (
	// SystemIntakeStepINITIALFORM captures enum value "INITIAL_REQUEST_FORM"
	SystemIntakeStepINITIALFORM SystemIntakeStep = "INITIAL_REQUEST_FORM"
	// SystemIntakeStepDRAFTBIZCASE captures enum value "DRAFT_BUSINESS_CASE"
	SystemIntakeStepDRAFTBIZCASE SystemIntakeStep = "DRAFT_BUSINESS_CASE"
	// SystemIntakeStepGRTMEETING captures enum value "GRT_MEETING"
	SystemIntakeStepGRTMEETING SystemIntakeStep = "GRT_MEETING"
	// SystemIntakeStepFINALBIZCASE captures enum value "FINAL_BUSINESS_CASE"
	SystemIntakeStepFINALBIZCASE SystemIntakeStep = "FINAL_BUSINESS_CASE"
	// SystemIntakeStepGRBMEETING captures enum value "GRB_MEETING"
	SystemIntakeStepGRBMEETING SystemIntakeStep = "GRB_MEETING"
	// SystemIntakeStepDECISION captures enum value "DECISION_AND_NEXT_STEPS"
	SystemIntakeStepDECISION SystemIntakeStep = "DECISION_AND_NEXT_STEPS"
)

type SystemIntakeStepToProgressTo

type SystemIntakeStepToProgressTo string

Steps in the system intake process that a Progress to New Step action can progress to

const (
	SystemIntakeStepToProgressToDraftBusinessCase SystemIntakeStepToProgressTo = "DRAFT_BUSINESS_CASE"
	SystemIntakeStepToProgressToGrtMeeting        SystemIntakeStepToProgressTo = "GRT_MEETING"
	SystemIntakeStepToProgressToGrbMeeting        SystemIntakeStepToProgressTo = "GRB_MEETING"
	SystemIntakeStepToProgressToFinalBusinessCase SystemIntakeStepToProgressTo = "FINAL_BUSINESS_CASE"
)

func (SystemIntakeStepToProgressTo) IsValid

func (e SystemIntakeStepToProgressTo) IsValid() bool

func (SystemIntakeStepToProgressTo) MarshalGQL

func (e SystemIntakeStepToProgressTo) MarshalGQL(w io.Writer)

func (SystemIntakeStepToProgressTo) String

func (*SystemIntakeStepToProgressTo) UnmarshalGQL

func (e *SystemIntakeStepToProgressTo) UnmarshalGQL(v interface{}) error

type SystemIntakeSystem

type SystemIntakeSystem struct {
	BaseStructUser
	SystemIntakeID uuid.UUID `db:"system_intake_id"`
	SystemID       string    `db:"system_id"`
}

SystemIntakeSystem is the insertion type for linking a system intake to system(s)

func NewSystemIntakeSystem

func NewSystemIntakeSystem(createdBy uuid.UUID) SystemIntakeSystem

NewSystemIntakeSystem creates a SystemIntakeSystemLink

func (*SystemIntakeSystem) CreatedByUserAccount

func (cbr *SystemIntakeSystem) CreatedByUserAccount(ctx context.Context) *authentication.UserAccount

CreatedByUserAccount returns the user account of the user who created the struct from the DB using the UserAccount service

func (*SystemIntakeSystem) ModifiedByUserAccount

func (mbr *SystemIntakeSystem) ModifiedByUserAccount(ctx context.Context) *authentication.UserAccount

ModifiedByUserAccount returns the user account of the user who modified the struct from the DB using the UserAccount service

type SystemIntakeTRBFollowUp

type SystemIntakeTRBFollowUp string

SystemIntakeTRBFollowUp represents whether a requester is recommended to follow up by consulting the TRB

const (
	TRBFRStronglyRecommended       SystemIntakeTRBFollowUp = "STRONGLY_RECOMMENDED"
	TRBFRRecommendedButNotCritical SystemIntakeTRBFollowUp = "RECOMMENDED_BUT_NOT_CRITICAL"
	TRBFRNotRecommended            SystemIntakeTRBFollowUp = "NOT_RECOMMENDED"
)

These are the options for SystemIntakeTRBFollowUp

type SystemIntakeUpdateLCIDInput

type SystemIntakeUpdateLCIDInput struct {
	SystemIntakeID         uuid.UUID                    `json:"systemIntakeID"`
	ExpiresAt              *time.Time                   `json:"expiresAt,omitempty"`
	Scope                  *HTML                        `json:"scope,omitempty"`
	NextSteps              *HTML                        `json:"nextSteps,omitempty"`
	CostBaseline           *string                      `json:"costBaseline,omitempty"`
	Reason                 *HTML                        `json:"reason,omitempty"`
	AdditionalInfo         *HTML                        `json:"additionalInfo,omitempty"`
	NotificationRecipients *EmailNotificationRecipients `json:"notificationRecipients,omitempty"`
	AdminNote              *HTML                        `json:"adminNote,omitempty"`
}

Input for updating an intake's LCID in IT Gov v2

type SystemIntakes

type SystemIntakes []SystemIntake

SystemIntakes is a list of System Intakes

type SystemMaintainerInformation

type SystemMaintainerInformation struct {
	AdHocAgileDeploymentFrequency         zero.String   `json:"adHocAgileDeploymentFrequency,omitempty"`
	AgileUsed                             bool          `json:"agileUsed"`
	AuthoritativeDatasource               zero.String   `json:"authoritativeDatasource,omitempty"`
	BusinessArtifactsOnDemand             bool          `json:"businessArtifactsOnDemand"`
	DataAtRestEncryptionKeyManagement     zero.String   `json:"dataAtRestEncryptionKeyManagement,omitempty"`
	DeploymentFrequency                   zero.String   `json:"deploymentFrequency"`
	DevCompletionPercent                  zero.String   `json:"devCompletionPercent"`
	DevWorkDescription                    zero.String   `json:"devWorkDescription"`
	EcapParticipation                     bool          `json:"ecapParticipation"`
	FrontendAccessType                    zero.String   `json:"frontendAccessType"`
	HardCodedIPAddress                    bool          `json:"hardCodedIpAddress"`
	IP6EnabledAssetPercent                zero.String   `json:"ip6EnabledAssetPercent"`
	IP6TransitionPlan                     zero.String   `json:"ip6TransitionPlan"`
	IPEnabledAssetCount                   int           `json:"ipEnabledAssetCount"`
	LegalHoldCaseName                     zero.String   `json:"legalHoldCaseName,omitempty"`
	LocallyStoredUserInformation          bool          `json:"locallyStoredUserInformation,omitempty"`
	MajorRefreshDate                      zero.Time     `json:"majorRefreshDate"`
	MultifactorAuthenticationMethod       []zero.String `json:"multifactorAuthenticationMethod"`
	MultifactorAuthenticationMethodOther  zero.String   `json:"multifactorAuthenticationMethodOther,omitempty"`
	NetAccessibility                      zero.String   `json:"netAccessibility"`
	NetworkTrafficEncryptionKeyManagement zero.String   `json:"networkTrafficEncryptionKeyManagement,omitempty"`
	NoMajorRefresh                        bool          `json:"noMajorRefresh,omitempty"`
	NoPersistentRecordsFlag               bool          `json:"noPersistentRecordsFlag,omitempty"`
	NoPlannedMajorRefresh                 bool          `json:"noPlannedMajorRefresh,omitempty"`
	OmDocumentationOnDemand               bool          `json:"omDocumentationOnDemand"`
	PlansToRetireReplace                  zero.String   `json:"plansToRetireReplace"`
	QuarterToRetireReplace                zero.String   `json:"quarterToRetireReplace"`
	RecordsManagementBucket               []zero.String `json:"recordsManagementBucket"`
	RecordsManagementDisposalLocation     zero.String   `json:"recordsManagementDisposalLocation,omitempty"`
	RecordsManagementDisposalPlan         zero.String   `json:"recordsManagementDisposalPlan,omitempty"`
	RecordsUnderLegalHold                 bool          `json:"recordsUnderLegalHold,omitempty"`
	SourceCodeOnDemand                    bool          `json:"sourceCodeOnDemand"`
	SystemCustomization                   zero.String   `json:"systemCustomization"`
	SystemDesignOnDemand                  bool          `json:"systemDesignOnDemand"`
	SystemDataLocation                    []zero.String `json:"systemDataLocation"`
	SystemDataLocationNotes               zero.String   `json:"systemDataLocationNotes,omitempty"`
	SystemProductionDate                  zero.Time     `json:"systemProductionDate"`
	SystemRequirementsOnDemand            bool          `json:"systemRequirementsOnDemand"`
	TestPlanOnDemand                      bool          `json:"testPlanOnDemand"`
	TestReportsOnDemand                   bool          `json:"testReportsOnDemand"`
	TestScriptsOnDemand                   bool          `json:"testScriptsOnDemand"`
	YearToRetireReplace                   zero.String   `json:"yearToRetireReplace"`
}

SystemMaintainerInformation contains information about the system maintainer of a CEDAR system

type TRBAdminNote

type TRBAdminNote struct {
	BaseStruct
	TRBRequestID uuid.UUID            `json:"trbRequestId" db:"trb_request_id"`
	Category     TRBAdminNoteCategory `json:"category" db:"category"`
	NoteText     HTML                 `json:"noteText" db:"note_text"`
	IsArchived   bool                 `json:"isArchived" db:"is_archived"`

	// Initial Request Form
	AppliesToBasicRequestDetails null.Bool `json:"appliesToBasicRequestDetails" db:"applies_to_basic_request_details"`
	AppliesToSubjectAreas        null.Bool `json:"appliesToSubjectAreas" db:"applies_to_subject_areas"`
	AppliesToAttendees           null.Bool `json:"appliesToAttendees" db:"applies_to_attendees"`

	// Advice Letter
	AppliesToMeetingSummary null.Bool `json:"appliesToMeetingSummary" db:"applies_to_meeting_summary"`
	AppliesToNextSteps      null.Bool `json:"appliesToNextSteps" db:"applies_to_next_steps"`
}

TRBAdminNote represents the data for a note attached to a TRB request by an admin

type TRBAdminNoteAdviceLetterCategoryData

type TRBAdminNoteAdviceLetterCategoryData struct {
	AppliesToMeetingSummary bool                             `json:"appliesToMeetingSummary"`
	AppliesToNextSteps      bool                             `json:"appliesToNextSteps"`
	Recommendations         []*TRBAdviceLetterRecommendation `json:"recommendations"`
}

Data specific to admin notes in the Advice Letter category The "recommendations" property _will_ return deleted recommendations so that UI can reference the recommendation title

func (TRBAdminNoteAdviceLetterCategoryData) IsTRBAdminNoteCategorySpecificData

func (TRBAdminNoteAdviceLetterCategoryData) IsTRBAdminNoteCategorySpecificData()

type TRBAdminNoteCategory

type TRBAdminNoteCategory string

TRBAdminNoteCategory is an enumeration of the possible categories of a TRBAdminNote

const (
	TRBAdminNoteCategoryGeneralRequest      TRBAdminNoteCategory = "GENERAL_REQUEST"
	TRBAdminNoteCategoryInitialRequestForm  TRBAdminNoteCategory = "INITIAL_REQUEST_FORM"
	TRBAdminNoteCategorySupportingDocuments TRBAdminNoteCategory = "SUPPORTING_DOCUMENTS"
	TRBAdminNoteCategoryConsultSession      TRBAdminNoteCategory = "CONSULT_SESSION"
	TRBAdminNoteCategoryAdviceLetter        TRBAdminNoteCategory = "ADVICE_LETTER"
)

These are the possible categories for a TRB admin note

type TRBAdminNoteCategorySpecificData

type TRBAdminNoteCategorySpecificData interface {
	IsTRBAdminNoteCategorySpecificData()
}

type TRBAdminNoteConsultSessionCategoryData

type TRBAdminNoteConsultSessionCategoryData struct {
	// Placeholder field so this type is non-empty, always null
	PlaceholderField *bool `json:"placeholderField,omitempty"`
}

Data specific to admin notes in the Consult Session category This type doesn't contain any actual data

func (TRBAdminNoteConsultSessionCategoryData) IsTRBAdminNoteCategorySpecificData

func (TRBAdminNoteConsultSessionCategoryData) IsTRBAdminNoteCategorySpecificData()

type TRBAdminNoteGeneralRequestCategoryData

type TRBAdminNoteGeneralRequestCategoryData struct {
	// Placeholder field so this type is non-empty, always null
	PlaceholderField *bool `json:"placeholderField,omitempty"`
}

Data specific to admin notes in the General Request category This type doesn't contain any actual data

func (TRBAdminNoteGeneralRequestCategoryData) IsTRBAdminNoteCategorySpecificData

func (TRBAdminNoteGeneralRequestCategoryData) IsTRBAdminNoteCategorySpecificData()

type TRBAdminNoteInitialRequestFormCategoryData

type TRBAdminNoteInitialRequestFormCategoryData struct {
	AppliesToBasicRequestDetails bool `json:"appliesToBasicRequestDetails"`
	AppliesToSubjectAreas        bool `json:"appliesToSubjectAreas"`
	AppliesToAttendees           bool `json:"appliesToAttendees"`
}

Data specific to admin notes in the Initial Request Form category

func (TRBAdminNoteInitialRequestFormCategoryData) IsTRBAdminNoteCategorySpecificData

func (TRBAdminNoteInitialRequestFormCategoryData) IsTRBAdminNoteCategorySpecificData()

type TRBAdminNoteSupportingDocumentsCategoryData

type TRBAdminNoteSupportingDocumentsCategoryData struct {
	Documents []*TRBRequestDocument `json:"documents"`
}

Data specific to admin notes in the Supporting Documents category The "documents" property _will_ return deleted documents so that UI can reference the document name

func (TRBAdminNoteSupportingDocumentsCategoryData) IsTRBAdminNoteCategorySpecificData

func (TRBAdminNoteSupportingDocumentsCategoryData) IsTRBAdminNoteCategorySpecificData()
type TRBAdminNoteTRBAdviceLetterRecommendationLink struct {
	BaseStruct
	TRBRequestID                    uuid.UUID `json:"trbRequestId" db:"trb_request_id"`
	TRBAdminNoteID                  uuid.UUID `json:"trbAdminNoteId" db:"trb_admin_note_id"`
	TRBAdviceLetterRecommendationID uuid.UUID `json:"trbAdviceLetterRecommendationId" db:"trb_advice_letter_recommendation_id"`
}

TRBAdminNoteTRBAdviceLetterRecommendationLink represents an association between a TRB admin note (in the Advice Letter category) and a TRB advice letter recommendation

type TRBAdminNoteTRBRequestDocumentLink struct {
	BaseStruct
	TRBRequestID         uuid.UUID `json:"trbRequestId" db:"trb_request_id"`
	TRBAdminNoteID       uuid.UUID `json:"trbAdminNoteId" db:"trb_admin_note_id"`
	TRBRequestDocumentID uuid.UUID `json:"trbRequestDocumentId" db:"trb_request_document_id"`
}

TRBAdminNoteTRBRequestDocumentLink represents an association between a TRB admin note (in the Supporting Documents category) and a TRB document

type TRBAdviceLetter

type TRBAdviceLetter struct {
	BaseStruct
	TRBRequestID          uuid.UUID             `json:"trbRequestId" db:"trb_request_id"`
	Status                TRBAdviceLetterStatus `json:"status" db:"status"`
	MeetingSummary        *HTML                 `json:"meetingSummary" db:"meeting_summary"`
	NextSteps             *HTML                 `json:"nextSteps" db:"next_steps"`
	IsFollowupRecommended *bool                 `json:"isFollowupRecommended" db:"is_followup_recommended"`
	DateSent              *time.Time            `json:"dateSent" db:"date_sent"`

	// not necessarily a firm date; can be something like "In 6 months or when development is complete"
	FollowupPoint *string `json:"followupPoint" db:"followup_point"`
}

TRBAdviceLetter represents the data for a TRB advice letter

type TRBAdviceLetterRecommendation

type TRBAdviceLetterRecommendation struct {
	BaseStruct
	TRBRequestID     uuid.UUID      `json:"trbRequestId" db:"trb_request_id"`
	Title            string         `json:"title" db:"title"`
	Recommendation   HTML           `json:"recommendation" db:"recommendation"`
	Links            pq.StringArray `json:"links" db:"links"`
	PositionInLetter null.Int       `json:"positionInLetter" db:"position_in_letter"` // 0-based indexing
	DeletedAt        *time.Time     `json:"deletedAt" db:"deleted_at"`
}

TRBAdviceLetterRecommendation represents the data for a TRB advice letter recommendation

type TRBAdviceLetterStatus

type TRBAdviceLetterStatus string

TRBAdviceLetterStatus is an enumeration of the possible statuses of a TRBAdviceLetter

const (
	TRBAdviceLetterStatusCannotStartYet TRBAdviceLetterStatus = "CANNOT_START_YET"
	TRBAdviceLetterStatusReadyToStart   TRBAdviceLetterStatus = "READY_TO_START"
	TRBAdviceLetterStatusInProgress     TRBAdviceLetterStatus = "IN_PROGRESS"
	TRBAdviceLetterStatusReadyForReview TRBAdviceLetterStatus = "READY_FOR_REVIEW"
	TRBAdviceLetterStatusCompleted      TRBAdviceLetterStatus = "COMPLETED"
)

These are the possible statuses for a TRB advice letter

type TRBAdviceLetterStatusTaskList

type TRBAdviceLetterStatusTaskList string

TRBAdviceLetterStatusTaskList is an enum of statuses for the task list page.

const (
	TRBAdviceLetterStatusTaskListCannotStartYet TRBAdviceLetterStatusTaskList = "CANNOT_START_YET"
	TRBAdviceLetterStatusTaskListInReview       TRBAdviceLetterStatusTaskList = "IN_REVIEW"
	TRBAdviceLetterStatusTaskListCompleted      TRBAdviceLetterStatusTaskList = "COMPLETED"
)

These statuses are a simplified version of the regular TRBAdviceLetterStatus enum above that are computed in the resolver.

type TRBAttendConsultStatus

type TRBAttendConsultStatus string

TRBAttendConsultStatus represents the types of TRBAttendConsultStatus types

const (
	TRBAttendConsultStatusCannotStartYet  TRBAttendConsultStatus = "CANNOT_START_YET"
	TRBAttendConsultStatusReadyToSchedule TRBAttendConsultStatus = "READY_TO_SCHEDULE"
	TRBAttendConsultStatusScheduled       TRBAttendConsultStatus = "SCHEDULED"
	TRBAttendConsultStatusCompleted       TRBAttendConsultStatus = "COMPLETED"
)

These are the options for TRBAttendConsultStatus

type TRBCollabGroupOption

type TRBCollabGroupOption string

TRBCollabGroupOption is an enumeration of the possible OIT collaboration groups that can be selected for a TRB request form

const (
	TRBCollabGroupOptionSecurity               TRBCollabGroupOption = "SECURITY"
	TRBCollabGroupOptionEnterpriseArchitecture TRBCollabGroupOption = "ENTERPRISE_ARCHITECTURE"
	TRBCollabGroupOptionCloud                  TRBCollabGroupOption = "CLOUD"
	TRBCollabGroupOptionPrivacyAdvisor         TRBCollabGroupOption = "PRIVACY_ADVISOR"
	TRBCollabGroupOptionGovernanceReviewBoard  TRBCollabGroupOption = "GOVERNANCE_REVIEW_BOARD"
	TRBCollabGroupOptionOther                  TRBCollabGroupOption = "OTHER"
)

These are the individual options for responses to the "Select any other OIT groups that you have met with or collaborated with" on the TRB request form

type TRBConsultPrepStatus

type TRBConsultPrepStatus string

TRBConsultPrepStatus represents the types of TRBConsultPrepStatus types

const (
	TRBConsultPrepStatusCannotStartYet TRBConsultPrepStatus = "CANNOT_START_YET"
	TRBConsultPrepStatusReadyToStart   TRBConsultPrepStatus = "READY_TO_START"
	TRBConsultPrepStatusCompleted      TRBConsultPrepStatus = "COMPLETED"
)

These are the options for TRBConsultPrepStatus

type TRBDocumentCommonType

type TRBDocumentCommonType string

TRBDocumentCommonType represents the document type, including an "OTHER" option for user-specified types

type TRBFeedbackAction

type TRBFeedbackAction string

TRBFeedbackAction is an enumertion of actions that can be taken by a TRB admin during the feedback step

const (
	TRBFeedbackActionRequestEdits    TRBFeedbackAction = "REQUEST_EDITS"
	TRBFeedbackActionReadyForConsult TRBFeedbackAction = "READY_FOR_CONSULT"
)

These are the options for TRBFeedbackAction

type TRBFeedbackStatus

type TRBFeedbackStatus string

TRBFeedbackStatus represents the types of TRBFeedbackStatus types

const (
	TRBFeedbackStatusCannotStartYet TRBFeedbackStatus = "CANNOT_START_YET"
	TRBFeedbackStatusInReview       TRBFeedbackStatus = "IN_REVIEW"
	TRBFeedbackStatusEditsRequested TRBFeedbackStatus = "EDITS_REQUESTED"
	TRBFeedbackStatusCompleted      TRBFeedbackStatus = "COMPLETED"
)

These are the options for TRBFeedbackStatus

type TRBFormStatus

type TRBFormStatus string

TRBFormStatus is an enumeration of the possible statuses of a TRBRequestForm

const (
	TRBFormStatusReadyToStart TRBFormStatus = "READY_TO_START"
	TRBFormStatusInProgress   TRBFormStatus = "IN_PROGRESS"
	TRBFormStatusCompleted    TRBFormStatus = "COMPLETED"
)

These are the possible statuses for a TRB request form

type TRBFundingSource

type TRBFundingSource struct {
	BaseStruct
	TRBRequestID  uuid.UUID `json:"trbRequestId" db:"trb_request_id"`
	Source        string    `json:"source" db:"source"`
	FundingNumber string    `json:"fundingNumber" db:"funding_number"`
}

TRBFundingSource represents one of multiple funding selections that can be added to a TRBRequestForm

type TRBLeadOption

type TRBLeadOption struct {
	BaseStruct
	EUAUserID string `json:"euaUserId" db:"eua_user_id"`
}

TRBLeadOption represents an EUA user who can be assigned as a TRB lead for a TRB request

type TRBRequest

type TRBRequest struct {
	BaseStruct
	Name               *string              `json:"name" db:"name"`
	Archived           bool                 `json:"archived" db:"archived"`
	Type               TRBRequestType       `json:"type" db:"type"`
	State              TRBRequestState      `json:"state" db:"state"`
	ConsultMeetingTime *time.Time           `json:"consultMeetingTime" db:"consult_meeting_time"`
	TRBLead            *string              `json:"trbLead" db:"trb_lead"`
	ContractName       zero.String          `json:"contractName" db:"contract_name"`
	SystemRelationType *RequestRelationType `json:"relationType" db:"system_relation_type"`
}

TRBRequest represents a TRB request object

func NewTRBRequest

func NewTRBRequest(createdBy string) *TRBRequest

NewTRBRequest returns a new trb request object

func (*TRBRequest) GetName

func (t *TRBRequest) GetName() string

GetName returns the name of the TRB request as a string. If the "Name" property is nil, it returns "Draft"

type TRBRequestAttendee

type TRBRequestAttendee struct {
	BaseStruct
	EUAUserID    string      `json:"euaUserId" db:"eua_user_id"`
	TRBRequestID uuid.UUID   `json:"trbRequestId" db:"trb_request_id"`
	Component    *string     `json:"component" db:"component"`
	Role         *PersonRole `json:"role" db:"role"`
}

TRBRequestAttendee represents an EUA user who is included as an attendee for a TRB request

type TRBRequestContractNumber

type TRBRequestContractNumber struct {
	BaseStructUser
	TRBRequestID   uuid.UUID `db:"trb_request_id"`
	ContractNumber string    `db:"contract_number"`
}

TRBRequestContractNumber is the insertion type for linking a TRB request to contract nunber(s)

func NewTRBRequestContractNumber

func NewTRBRequestContractNumber(createdBy uuid.UUID) TRBRequestContractNumber

NewTRBRequestContractNumber creates a TRBRequestContractNumber

func (*TRBRequestContractNumber) CreatedByUserAccount

func (cbr *TRBRequestContractNumber) CreatedByUserAccount(ctx context.Context) *authentication.UserAccount

CreatedByUserAccount returns the user account of the user who created the struct from the DB using the UserAccount service

func (*TRBRequestContractNumber) ModifiedByUserAccount

func (mbr *TRBRequestContractNumber) ModifiedByUserAccount(ctx context.Context) *authentication.UserAccount

ModifiedByUserAccount returns the user account of the user who modified the struct from the DB using the UserAccount service

type TRBRequestDocument

type TRBRequestDocument struct {
	BaseStruct
	TRBRequestID       uuid.UUID             `json:"trbRequestId" db:"trb_request_id"`
	CommonDocumentType TRBDocumentCommonType `db:"document_type"`
	OtherType          string                `db:"other_type"`
	FileName           string                `json:"fileName" db:"file_name"`
	Bucket             string                `json:"bucket" db:"bucket"`
	S3Key              string                `json:"s3Key" db:"s3_key"` // The document's key inside an S3 bucket; does *not* include the bucket name.
	DeletedAt          *time.Time            `json:"deletedAt" db:"deleted_at"`
}

TRBRequestDocument represents a document attached to a TRB request that has been uploaded to S3

type TRBRequestDocumentStatus

type TRBRequestDocumentStatus string

TRBRequestDocumentStatus represents the availability of a document in regards to virus scanning

type TRBRequestDocumentType

type TRBRequestDocumentType struct {
	CommonType           TRBDocumentCommonType `json:"commonType"`
	OtherTypeDescription *string               `json:"otherTypeDescription,omitempty"`
}

Denotes the type of a document attached to a TRB request, which can be one of a number of common types, or a free-text user-specified type

type TRBRequestFeedback

type TRBRequestFeedback struct {
	BaseStruct
	TRBRequestID    uuid.UUID         `json:"trbRequestId" db:"trb_request_id"`
	FeedbackMessage HTML              `json:"feedbackMessage" db:"feedback_message"`
	CopyTRBMailbox  bool              `json:"copyTrbMailbox" db:"copy_trb_mailbox"`
	NotifyEUAIDs    pq.StringArray    `json:"notifyEuaIds" db:"notify_eua_ids"`
	Action          TRBFeedbackAction `json:"action" db:"action"`
}

TRBRequestFeedback represents an individual feedback item given on a TRB request

type TRBRequestForm

type TRBRequestForm struct {
	BaseStruct
	TRBRequestID             uuid.UUID                `json:"trbRequestId" db:"trb_request_id"`
	Status                   TRBFormStatus            `json:"status" db:"status"`
	Component                *string                  `json:"component" db:"component"`
	NeedsAssistanceWith      *string                  `json:"needsAssistanceWith" db:"needs_assistance_with"`
	HasSolutionInMind        *bool                    `json:"hasSolutionInMind" db:"has_solution_in_mind"`
	ProposedSolution         *string                  `json:"proposedSolution" db:"proposed_solution"`
	WhereInProcess           *TRBWhereInProcessOption `json:"whereInProcess" db:"where_in_process"`
	WhereInProcessOther      *string                  `json:"whereInProcessOther" db:"where_in_process_other"`
	HasExpectedStartEndDates *bool                    `json:"hasExpectedStartEndDates" db:"has_expected_start_end_dates"`
	ExpectedStartDate        *time.Time               `json:"expectedStartDate" db:"expected_start_date"`
	ExpectedEndDate          *time.Time               `json:"expectedEndDate" db:"expected_end_date"`
	// FundingSources                   []*TRBFundingSource      `json:"fundingSources"`
	CollabGroups                     pq.StringArray `json:"collabGroups" db:"collab_groups"`
	CollabDateSecurity               *string        `json:"collabDateSecurity" db:"collab_date_security"`
	CollabDateEnterpriseArchitecture *string        `json:"collabDateEnterpriseArchitecture" db:"collab_date_enterprise_architecture"`
	CollabDateCloud                  *string        `json:"collabDateCloud" db:"collab_date_cloud"`
	CollabDatePrivacyAdvisor         *string        `json:"collabDatePrivacyAdvisor" db:"collab_date_privacy_advisor"`
	CollabDateGovernanceReviewBoard  *string        `json:"collabDateGovernanceReviewBoard" db:"collab_date_governance_review_board"`
	CollabDateOther                  *string        `json:"collabDateOther" db:"collab_date_other"`
	CollabGroupOther                 *string        `json:"collabGroupOther" db:"collab_group_other"`
	CollabGRBConsultRequested        *bool          `json:"collabGRBConsultRequested" db:"collab_grb_consult_requested"`
	SubjectAreaOptions               pq.StringArray `json:"subjectAreaOptions" db:"subject_area_options"`
	SubjectAreaOptionOther           *string        `json:"subjectAreaOptionOther" db:"subject_area_option_other"`
	SubmittedAt                      *time.Time     `json:"submittedAt" db:"submitted_at"`
}

TRBRequestForm represents the data entered into the TRB request form

func NewTRBRequestForm

func NewTRBRequestForm(createdBy string) *TRBRequestForm

NewTRBRequestForm instantiates a TRB request form with default field values

type TRBRequestState

type TRBRequestState string

TRBRequestState represents the types of TRBRequestState types

const (
	TRBRequestStateOpen   TRBRequestState = "OPEN"
	TRBRequestStateClosed TRBRequestState = "CLOSED"
)

These are the options for TRBRequestStatus

type TRBRequestStatus

type TRBRequestStatus string

TRBRequestStatus is an enumeration of the possible values for the overall status of a TRB request

type TRBRequestSystem

type TRBRequestSystem struct {
	BaseStructUser
	TRBRequestID uuid.UUID `db:"trb_request_id"`
	SystemID     string    `db:"system_id"`
}

TRBRequestSystem is the insertion type for linking a trb request to system(s)

func NewTRBRequestSystem

func NewTRBRequestSystem(createdBy uuid.UUID) TRBRequestSystem

NewTRBRequestSystem creates a TRBRequestSystemLink

func (*TRBRequestSystem) CreatedByUserAccount

func (cbr *TRBRequestSystem) CreatedByUserAccount(ctx context.Context) *authentication.UserAccount

CreatedByUserAccount returns the user account of the user who created the struct from the DB using the UserAccount service

func (*TRBRequestSystem) ModifiedByUserAccount

func (mbr *TRBRequestSystem) ModifiedByUserAccount(ctx context.Context) *authentication.UserAccount

ModifiedByUserAccount returns the user account of the user who modified the struct from the DB using the UserAccount service

type TRBRequestSystemIntake

type TRBRequestSystemIntake struct {
	BaseStruct
	TRBRequestID   uuid.UUID `json:"trbRequestId" db:"trb_request_id"`
	SystemIntakeID uuid.UUID `json:"systemIntakeId" db:"system_intake_id"`
}

TRBRequestSystemIntake represents a system intake that has been associated with a TRB request

type TRBRequestType

type TRBRequestType string

TRBRequestType represents the types of TRBRequestType types

const (
	TRBTNeedHelp     TRBRequestType = "NEED_HELP"
	TRBTBrainstorm   TRBRequestType = "BRAINSTORM"
	TRBTFollowup     TRBRequestType = "FOLLOWUP"
	TRBTFormalReview TRBRequestType = "FORMAL_REVIEW"
	TRBTOther        TRBRequestType = "OTHER"
)

These are the options for TRBRequestType

type TRBSubjectAreaOption

type TRBSubjectAreaOption string

TRBSubjectAreaOption is an enum of the possible answers to the input on the TRB "Subject Areas" page

const (
	TRBSubjectAreaOptionAccessControlAndIdentityMgmt   TRBSubjectAreaOption = "ACCESS_CONTROL_AND_IDENTITY_MANAGEMENT"
	TRBSubjectAreaOptionAccessibilityCompliance        TRBSubjectAreaOption = "ACCESSIBILITY_COMPLIANCE"
	TRBSubjectAreaOptionAssistanceWithSystemConceptDev TRBSubjectAreaOption = "ASSISTANCE_WITH_SYSTEM_CONCEPT_DEVELOPMENT"
	TRBSubjectAreaOptionBusinessIntelligence           TRBSubjectAreaOption = "BUSINESS_INTELLIGENCE"
	TRBSubjectAreaOptionCloudMigration                 TRBSubjectAreaOption = "CLOUD_MIGRATION"
	TRBSubjectAreaOptionContainersAndMicroservices     TRBSubjectAreaOption = "CONTAINERS_AND_MICROSERVICES"
	TRBSubjectAreaOptionDisasterRecovery               TRBSubjectAreaOption = "DISASTER_RECOVERY"
	TRBSubjectAreaOptionEmailIntegration               TRBSubjectAreaOption = "EMAIL_INTEGRATION"
	TRBSubjectAreaOptionEnterpriseDataLakeIntegration  TRBSubjectAreaOption = "ENTERPRISE_DATA_LAKE_INTEGRATION"
	TRBSubjectAreaOptionFrameworkOrToolAlternatives    TRBSubjectAreaOption = "FRAMEWORK_OR_TOOL_ALTERNATIVES"
	TRBSubjectAreaOptionOpenSourceSoftware             TRBSubjectAreaOption = "OPEN_SOURCE_SOFTWARE"
	TRBSubjectAreaOptionPortalIntegration              TRBSubjectAreaOption = "PORTAL_INTEGRATION"
	TRBSubjectAreaOptionTechnicalReferenceArchitecture TRBSubjectAreaOption = "TECHNICAL_REFERENCE_ARCHITECTURE"
	TRBSubjectAreaOptionSystemArchitectureReview       TRBSubjectAreaOption = "SYSTEM_ARCHITECTURE_REVIEW"
	TRBSubjectAreaOptionSystemDispositionPlanning      TRBSubjectAreaOption = "SYSTEM_DISPOSITION_PLANNING"
	TRBSubjectAreaOptionWebServicesAndAPIs             TRBSubjectAreaOption = "WEB_SERVICES_AND_APIS"
	TRBSubjectAreaOptionWebBasedUIService              TRBSubjectAreaOption = "WEB_BASED_UI_SERVICE"
)

These are the individual options for the "technical reference architecture" input

type TRBTaskStatuses

type TRBTaskStatuses struct {
	FormStatus                 TRBFormStatus                 `json:"formStatus"`
	FeedbackStatus             TRBFeedbackStatus             `json:"feedbackStatus"`
	ConsultPrepStatus          TRBConsultPrepStatus          `json:"consultPrepStatus"`
	AttendConsultStatus        TRBAttendConsultStatus        `json:"attendConsultStatus"`
	AdviceLetterStatus         TRBAdviceLetterStatus         `json:"adviceLetterStatus"`
	AdviceLetterStatusTaskList TRBAdviceLetterStatusTaskList `json:"adviceLetterStatusTaskList"`
}

TRBTaskStatuses contains the individual statuses for the steps of the TRB task list

type TRBWhereInProcessOption

type TRBWhereInProcessOption string

TRBWhereInProcessOption is an enumeration of possible responses to the "Where are you in your process?" question on the TRB request form

const (
	TRBWhereInProcessOptionIHaveAnIdeaAndWantToBrainstorm       TRBWhereInProcessOption = "I_HAVE_AN_IDEA_AND_WANT_TO_BRAINSTORM"
	TRBWhereInProcessOptionContractingWorkHasStarted            TRBWhereInProcessOption = "CONTRACTING_WORK_HAS_STARTED"
	TRBWhereInProcessOptionDevelopmentHasRecentlyStarted        TRBWhereInProcessOption = "DEVELOPMENT_HAS_RECENTLY_STARTED"
	TRBWhereInProcessOptionDevelopmentIsSignificantlyUnderway   TRBWhereInProcessOption = "DEVELOPMENT_IS_SIGNIFICANTLY_UNDERWAY"
	TRBWhereInProcessOptionTheSystemIsInOperationAndMaintenance TRBWhereInProcessOption = "THE_SYSTEM_IS_IN_OPERATION_AND_MAINTENANCE"
	TRBWhereInProcessOptionOther                                TRBWhereInProcessOption = "OTHER"
	TRBWhereInProcessOptionUnknown                              TRBWhereInProcessOption = "UNKNOWN"
)

These are the individual options for the response to the "Where are you in your process?" question on the TRB request form

type UpdateSystemIntakeAdminLeadInput

type UpdateSystemIntakeAdminLeadInput struct {
	AdminLead string    `json:"adminLead"`
	ID        uuid.UUID `json:"id"`
}

Input data used to update the admin lead assigned to a system IT governance request

type UpdateSystemIntakeContactDetailsInput

type UpdateSystemIntakeContactDetailsInput struct {
	ID              uuid.UUID                                `json:"id"`
	Requester       *SystemIntakeRequesterWithComponentInput `json:"requester"`
	BusinessOwner   *SystemIntakeBusinessOwnerInput          `json:"businessOwner"`
	ProductManager  *SystemIntakeProductManagerInput         `json:"productManager"`
	Isso            *SystemIntakeISSOInput                   `json:"isso"`
	GovernanceTeams *SystemIntakeGovernanceTeamInput         `json:"governanceTeams"`
}

The input data used to update the contact details of the people associated with a system request

type UpdateSystemIntakeContactInput

type UpdateSystemIntakeContactInput struct {
	ID             uuid.UUID `json:"id"`
	EuaUserID      string    `json:"euaUserId"`
	SystemIntakeID uuid.UUID `json:"systemIntakeId"`
	Component      string    `json:"component"`
	Role           string    `json:"role"`
}

The data needed to update a contact associated with a system intake

type UpdateSystemIntakeContractDetailsInput

type UpdateSystemIntakeContractDetailsInput struct {
	ID             uuid.UUID                        `json:"id"`
	FundingSources *SystemIntakeFundingSourcesInput `json:"fundingSources,omitempty"`
	Costs          *SystemIntakeCostsInput          `json:"costs,omitempty"`
	AnnualSpending *SystemIntakeAnnualSpendingInput `json:"annualSpending,omitempty"`
	Contract       *SystemIntakeContractInput       `json:"contract,omitempty"`
}

Input data for updating contract details related to a system request

type UpdateSystemIntakeLinkedCedarSystemInput

type UpdateSystemIntakeLinkedCedarSystemInput struct {
	ID            uuid.UUID `json:"id"`
	CedarSystemID *string   `json:"cedarSystemId,omitempty"`
}

Input data for updating a system intake's relationship to a CEDAR system

type UpdateSystemIntakeNoteInput

type UpdateSystemIntakeNoteInput struct {
	Content    HTML      `json:"content"`
	IsArchived bool      `json:"isArchived"`
	ID         uuid.UUID `json:"id"`
}

Input data for updating an IT governance admin note

type UpdateSystemIntakePayload

type UpdateSystemIntakePayload struct {
	SystemIntake *SystemIntake `json:"systemIntake,omitempty"`
	UserErrors   []*UserError  `json:"userErrors,omitempty"`
}

The payload for updating a system's IT governance request

type UpdateSystemIntakeRequestDetailsInput

type UpdateSystemIntakeRequestDetailsInput struct {
	ID               uuid.UUID `json:"id"`
	RequestName      *string   `json:"requestName,omitempty"`
	BusinessNeed     *string   `json:"businessNeed,omitempty"`
	BusinessSolution *string   `json:"businessSolution,omitempty"`
	NeedsEaSupport   *bool     `json:"needsEaSupport,omitempty"`
	CurrentStage     *string   `json:"currentStage,omitempty"`
	CedarSystemID    *string   `json:"cedarSystemId,omitempty"`
	HasUIChanges     *bool     `json:"hasUiChanges,omitempty"`
}

Input to update some fields on a system request

type UpdateSystemIntakeReviewDatesInput

type UpdateSystemIntakeReviewDatesInput struct {
	GrbDate *time.Time `json:"grbDate,omitempty"`
	GrtDate *time.Time `json:"grtDate,omitempty"`
	ID      uuid.UUID  `json:"id"`
}

Input data used to update GRT and GRB dates for a system request

type UpdateTRBAdviceLetterRecommendationOrderInput

type UpdateTRBAdviceLetterRecommendationOrderInput struct {
	TrbRequestID uuid.UUID `json:"trbRequestId"`
	// List of the recommendation IDs in the new order they should be displayed
	NewOrder []uuid.UUID `json:"newOrder"`
}

type UpdateTRBRequestAttendeeInput

type UpdateTRBRequestAttendeeInput struct {
	ID        uuid.UUID  `json:"id"`
	Component string     `json:"component"`
	Role      PersonRole `json:"role"`
}

Represents an EUA user who is included as an attendee for a TRB request

type UpdateTRBRequestConsultMeetingTimeInput

type UpdateTRBRequestConsultMeetingTimeInput struct {
	TrbRequestID       uuid.UUID `json:"trbRequestId"`
	ConsultMeetingTime time.Time `json:"consultMeetingTime"`
	CopyTrbMailbox     bool      `json:"copyTrbMailbox"`
	NotifyEuaIds       []string  `json:"notifyEuaIds"`
	Notes              string    `json:"notes"`
}

The data needed schedule a TRB consult meeting time

type UpdateTRBRequestFundingSourcesInput

type UpdateTRBRequestFundingSourcesInput struct {
	TrbRequestID  uuid.UUID `json:"trbRequestId"`
	FundingNumber string    `json:"fundingNumber"`
	Sources       []string  `json:"sources"`
}

type UpdateTRBRequestTRBLeadInput

type UpdateTRBRequestTRBLeadInput struct {
	TrbRequestID uuid.UUID `json:"trbRequestId"`
	TrbLead      string    `json:"trbLead"`
}

The data needed assign a TRB lead to a TRB request

type UserError

type UserError struct {
	Message string   `json:"message"`
	Path    []string `json:"path"`
}

UserError represents application-level errors that are the result of either user or application developer error.

type UserInfo

type UserInfo struct {
	FirstName   string
	LastName    string
	DisplayName string
	Email       EmailAddress
	Username    string
}

UserInfo is the model for personal details of a user

Jump to

Keyboard shortcuts

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