shuffle

package module
v0.8.72 Latest Latest
Warning

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

Go to latest
Published: Jun 2, 2025 License: AGPL-3.0 Imports: 85 Imported by: 2

README

Shuffle-shared

A repository containing structures and commonly used functions between different deployments on Shuffle. Here to ensure consistency and not re-making the same functions multiple places.

Shuffle repositories

Sample areas
Issue / PR management

Issues related to this code is usually tracked in shuffle/shuffle or our private repository for shuffler.io.

Do however feel free to open one if you have any questions/suggestions :)

Documentation

Index

Constants

This section is empty.

Variables

View Source
var PredictableDataTypes = []string{
	"app_executions",
	"childorg_app_executions",
	"workflow_executions",
	"workflow_executions_finished",
	"workflow_executions_failed",
	"app_executions_failed",
	"app_executions_cloud",
	"subflow_executions",
	"org_sync_actions",
	"workflow_executions_cloud",
	"workflow_executions_onprem",
	"api_usage",
	"ai_executions",
}

var dbInterval = 0x4

View Source
var SSOUrl = ""

Functions

func AbortExecution

func AbortExecution(resp http.ResponseWriter, request *http.Request)

func ActionSkip

func ActionSkip(ctx context.Context, foundAction Action, exec *WorkflowExecution, parent []string) error

func ActivateWorkflowApp

func ActivateWorkflowApp(resp http.ResponseWriter, request *http.Request)

Also deactivates. It's a toggle for off and on.

func AddAppAuthentication

func AddAppAuthentication(resp http.ResponseWriter, request *http.Request)

func AddAppAuthenticationGroup

func AddAppAuthenticationGroup(resp http.ResponseWriter, request *http.Request)

func ArrayContains

func ArrayContains(visited []string, id string) bool

func ArrayContainsLower

func ArrayContainsLower(visited []string, id string) bool

func AssignAuthEverywhere

func AssignAuthEverywhere(ctx context.Context, auth *AppAuthenticationStorage, user User) error

func AutofixAppLabels

func AutofixAppLabels(app WorkflowApp, label string, keys []string) (WorkflowApp, WorkflowAppAction)

func BuildStructure

func BuildStructure(swagger *openapi3.Swagger, curHash string) (string, error)

Builds the base structure for the app that we're making Returns error if anything goes wrong. This has to work if the python code is supposed to be generated

func BuildStructureGCP

func BuildStructureGCP(ctx context.Context, client *storage.Client, identifier, bucketName string) (string, error)

Builds the structure for the new generated app in storage (copying baseline files)

func CheckCreatorSelfPermission

func CheckCreatorSelfPermission(ctx context.Context, requestUser, creatorUser User, algoliaUser *AlgoliaSearchCreator) bool

Checks if a specific user should have "self" access to a creator user A creator user can be both a user and an org, so this got a bit tricky

func CheckHookAuth

func CheckHookAuth(request *http.Request, auth string) error

Checks authentication string for Webhooks

func CheckNextActions

func CheckNextActions(ctx context.Context, workflowExecution *WorkflowExecution) []string

Finds next actions that aren't already executed and don't have results

func CheckPasswordStrength

func CheckPasswordStrength(username, password string) error

Can check against HIBP etc? Removed for localhost

func CheckSessionOrgs

func CheckSessionOrgs(ctx context.Context, user User)

func CheckUsername

func CheckUsername(Username string) error

func CheckWorkflowApp

func CheckWorkflowApp(workflowApp WorkflowApp) error

func CleanupExecutions

func CleanupExecutions(ctx context.Context, environment string, workflow Workflow, cleanAll bool) (int, error)

func ConstructSessionCookie added in v0.8.65

func ConstructSessionCookie(value string, expires time.Time) *http.Cookie

func CopyFile

func CopyFile(fromfile, tofile string) error

func CreateFs

func CreateFs(basepath, pathname string) (billy.Filesystem, error)

Creates osfs from folderpath with a basepath as directory base

func CreateOrgNotification

func CreateOrgNotification(ctx context.Context, title, description, referenceUrl, orgId string, adminsOnly bool) error

func DecideExecution

func DecideExecution(ctx context.Context, workflowExecution WorkflowExecution, environment string) (WorkflowExecution, []Action)

Decideds what should happen next. Used both for cloud & onprem environments Added early 2023 as yet another way to standardize decisionmaking of app executions

func DecryptKMS

func DecryptKMS(ctx context.Context, auth AppAuthenticationStorage, key, authorization, optionalExecutionId string) (string, error)

Should talk to the KMS and find the key we are looking for Uses normal OR execution auth (authorization: Bearer..)

func DeleteAppAuthentication

func DeleteAppAuthentication(resp http.ResponseWriter, request *http.Request)

func DeleteAppAuthenticationGroup

func DeleteAppAuthenticationGroup(resp http.ResponseWriter, request *http.Request)

func DeleteCache

func DeleteCache(ctx context.Context, name string) error

Cache handlers

func DeleteDbIndex

func DeleteDbIndex(ctx context.Context, index string) error

func DeleteFileSingul

func DeleteFileSingul(ctx context.Context, filepath string) error

func DeleteKey

func DeleteKey(ctx context.Context, entity string, value string) error

Index = Username

func DeleteKeys

func DeleteKeys(ctx context.Context, entity string, value []string) error

Index = Username

func DeleteUser

func DeleteUser(resp http.ResponseWriter, request *http.Request)

func DeleteUsersAccount

func DeleteUsersAccount(ctx context.Context, user *User) error

func DeleteWorkflowApp

func DeleteWorkflowApp(resp http.ResponseWriter, request *http.Request)

func DeployAppToDatastore

func DeployAppToDatastore(ctx context.Context, workflowapp WorkflowApp) error

func DistributeAppToEnvironments

func DistributeAppToEnvironments(ctx context.Context, org Org, appnames []string) error

func DownloadDockerImageBackend

func DownloadDockerImageBackend(topClient *http.Client, imageName string) error

func DownloadFromUrl

func DownloadFromUrl(ctx context.Context, url string) ([]byte, error)

Downloads documentation from Github to be placed in an app/workflow as markdown Caching no matter what, with no retries

func DumpApi

func DumpApi(basePath string, api WorkflowApp) error

func DumpApiGCP

func DumpApiGCP(ctx context.Context, client *storage.Client, swagger *openapi3.Swagger, basePath string, api WorkflowApp, bucketName string) error

func DumpPython

func DumpPython(basePath, name, version string, pythonFunctions []string) (string, error)

func DumpPythonGCP

func DumpPythonGCP(ctx context.Context, client *storage.Client, basePath, name, version string, pythonFunctions []string, bucketName string) (string, error)

func DuplicateWorkflow

func DuplicateWorkflow(resp http.ResponseWriter, request *http.Request)

func EchoOpenapiData

func EchoOpenapiData(resp http.ResponseWriter, request *http.Request)

func FindChildNodes

func FindChildNodes(workflow Workflow, nodeId string, parents, handledBranches []string) []string

Recursively finds the child nodes of a node in execution and returns their ID. Used if e.g. a node in a branch is exited, and all children have to be stopped Also used during startup of a workflow to set all nodes to be SKIPPED that aren't in immediate use

func FindMatchingAction

func FindMatchingAction(foundApi ParsedOpenApi, newActionName string) (string, error)

func FixAppbase

func FixAppbase(appbase []byte) []string

func FixBadJsonBody

func FixBadJsonBody(parsedBody []byte) []byte

func FixContentOutput

func FixContentOutput(contentOutput string) string

func FixFunctionName

func FixFunctionName(functionName, actualPath string, lowercase bool) string

FIXME: https://docs.python.org/3.2/reference/lexical_analysis.html#identifiers This is used to build the python functions.

func FixParamname

func FixParamname(paramname string) string

func FormatAppfile

func FormatAppfile(filedata string) (string, string)

func GetActionAIResponse

func GetActionAIResponse(ctx context.Context, resp http.ResponseWriter, user User, org Org, outputFormat string, input QueryInput) ([]byte, error)

func GetActionResult

func GetActionResult(ctx context.Context, workflowExecution WorkflowExecution, id string) (WorkflowExecution, ActionResult)

func GetActiveCategories

func GetActiveCategories(resp http.ResponseWriter, request *http.Request)

func GetAppAuthentication

func GetAppAuthentication(resp http.ResponseWriter, request *http.Request)

func GetAppAuthenticationGroup

func GetAppAuthenticationGroup(resp http.ResponseWriter, request *http.Request)

func GetAppNameSplit

func GetAppNameSplit(version DockerRequestCheck) (string, string, string, error)

func GetAppRequirements

func GetAppRequirements() string

func GetAppbase

func GetAppbase() ([]byte, []byte, error)

func GetAppbaseGCP

func GetAppbaseGCP(ctx context.Context, client *storage.Client, bucketName string) ([]byte, []byte, error)

Builds the structure for the new generated app in storage (copying baseline files)

func GetArticles

func GetArticles(resp http.ResponseWriter, request *http.Request)

func GetArticlesList

func GetArticlesList(resp http.ResponseWriter, request *http.Request)

func GetAtomicSuggestionAIResponse

func GetAtomicSuggestionAIResponse(ctx context.Context, resp http.ResponseWriter, user User, org Org, outputFormat string, input QueryInput)

func GetAuthentication

func GetAuthentication(ctx context.Context, workflowExecution WorkflowExecution, action Action, allAuths []AppAuthenticationStorage) (Action, WorkflowExecution)

func GetBaseDockerfile

func GetBaseDockerfile() []byte

func GetBasePython

func GetBasePython() string

func GetCache

func GetCache(ctx context.Context, name string) (interface{}, error)

Cache handlers

func GetCategoryLabelParameters

func GetCategoryLabelParameters(ctx context.Context, category string, label string) string

func GetChildWorkflows

func GetChildWorkflows(resp http.ResponseWriter, request *http.Request)

func GetContext

func GetContext(request *http.Request) context.Context

func GetCorrectActionName

func GetCorrectActionName(parsed string) string

func GetCurrentPodNetworkConfig

func GetCurrentPodNetworkConfig(ctx context.Context, clientset *kubernetes.Clientset, namespace, podName string) (*corev1.PodStatus, error)

func GetCustomActionCode

func GetCustomActionCode(swagger *openapi3.Swagger, api WorkflowApp) string

func GetDatastore

func GetDatastore() *datastore.Client

func GetDatastoreClient

func GetDatastoreClient(ctx context.Context, projectID string) (datastore.Client, error)

func GetDocList

func GetDocList(resp http.ResponseWriter, request *http.Request)

func GetDocs

func GetDocs(resp http.ResponseWriter, request *http.Request)

func GetESIndexPrefix

func GetESIndexPrefix(index string) string

Create ElasticSearch/OpenSearch index prefix It is used where a single cluster of ElasticSearch/OpenSearch utilized by several Shuffle instance E.g. Instance1_Workflowapp

func GetEnvironmentCount

func GetEnvironmentCount() (int, error)

func GetEsConfig

func GetEsConfig(defaultCreds bool) *opensearch.Client

func GetExecutionVariables

func GetExecutionVariables(ctx context.Context, executionId string) (string, int, map[string][]string, map[string][]string, []string, []string, []string, []string)

func GetExecutionbody

func GetExecutionbody(body []byte) string

func GetExternalClient

func GetExternalClient(baseUrl string) *http.Client

func GetFileContent

func GetFileContent(ctx context.Context, file *File, resp http.ResponseWriter) ([]byte, error)

func GetFileContentSingul

func GetFileContentSingul(ctx context.Context, file *File, resp http.ResponseWriter) ([]byte, error)

func GetFrameworkConfiguration

func GetFrameworkConfiguration(resp http.ResponseWriter, request *http.Request)

func GetGithubClient

func GetGithubClient(ctx context.Context, code string, accessToken OauthToken, redirectUri string) (*http.Client, *oauth2.Token, error)

func GetGmailClient

func GetGmailClient(ctx context.Context, code string, accessToken OauthToken, redirectUri string) (*http.Client, *oauth2.Token, error)

THis all of a sudden became really horrible.. fml

func GetKmsCache

func GetKmsCache(ctx context.Context, auth AppAuthenticationStorage, key string) (string, error)

func GetKubernetesClient

func GetKubernetesClient() (*kubernetes.Clientset, *rest.Config, error)

func GetKubernetesNamespace

func GetKubernetesNamespace() (string, error)

func GetLiveExecutionStats

func GetLiveExecutionStats(resp http.ResponseWriter, request *http.Request)

func GetNodeRelations

func GetNodeRelations(ctx context.Context) (map[string]NodeRelation, error)

func GetOnpremPaidEula

func GetOnpremPaidEula() string

func GetOpenIdUrl

func GetOpenIdUrl(request *http.Request, org Org) string

func GetOpenapi

func GetOpenapi(resp http.ResponseWriter, request *http.Request)

func GetOpsDashboardStats

func GetOpsDashboardStats(resp http.ResponseWriter, request *http.Request)

func GetOutlookBody

func GetOutlookBody(ctx context.Context, hook Hook, body []byte) string

func GetOutlookClient

func GetOutlookClient(ctx context.Context, code string, accessToken OauthToken, redirectUri string) (*http.Client, *oauth2.Token, error)

THis all of a sudden became really horrible.. fml

func GetPodName

func GetPodName() string

func GetReplacementNodes

func GetReplacementNodes(ctx context.Context, execution WorkflowExecution, trigger Trigger, lastTriggerName string) ([]Action, []Branch, string)

Recursively finds child nodes inside sub workflows

func GetRequestIp

func GetRequestIp(r *http.Request) string

func GetRunnerGCP

func GetRunnerGCP(classname string) string

func GetRunnerOnprem

func GetRunnerOnprem(classname string) string

func GetSingulStandaloneFilepath

func GetSingulStandaloneFilepath() string

func GetSpecificApps

func GetSpecificApps(resp http.ResponseWriter, request *http.Request)

A search for apps based on name and such This was before Algolia

func GetSpecificStats

func GetSpecificStats(resp http.ResponseWriter, request *http.Request)

func GetSpecificWorkflow

func GetSpecificWorkflow(resp http.ResponseWriter, request *http.Request)

func GetStorage

func GetStorage() *storage.Client

func GetSyncApikeyByOrg

func GetSyncApikeyByOrg(ctx context.Context, orgId string) (string, error)

Returns the orgid related to the key

func GetUnfinishedExecutionsCron

func GetUnfinishedExecutionsCron(ctx context.Context) (map[string][]WorkflowExecution, int, error)

func GetUsecaseData

func GetUsecaseData() string

Should become a proper backend thing LOL

func GetValidParameters

func GetValidParameters(parameters []string) []string

Returns fixed function names based on a list of strings

func GetWorkflowAppConfig

func GetWorkflowAppConfig(resp http.ResponseWriter, request *http.Request)

func GetWorkflowExecutions

func GetWorkflowExecutions(resp http.ResponseWriter, request *http.Request)

func GetWorkflowExecutionsV2

func GetWorkflowExecutionsV2(resp http.ResponseWriter, request *http.Request)

func GetWorkflowPriority

func GetWorkflowPriority(workflow Workflow) int

Shitty temorary system Adding schedule to run over with another algorithm as well as this one, as to increase priority based on popularity: searches, clicks & conversions (CTR)

func GetWorkflowRevisions

func GetWorkflowRevisions(resp http.ResponseWriter, request *http.Request)

func GetWorkflowRunCount

func GetWorkflowRunCount(ctx context.Context, id string, start int64, end int64) (int, error)

func GetWorkflowTest

func GetWorkflowTest() []byte

func GetWorkflowValidation

func GetWorkflowValidation(resp http.ResponseWriter, request *http.Request)

Checks & validates workflow based on last few runs~

func GetWorkflows

func GetWorkflows(resp http.ResponseWriter, request *http.Request)

func HandleActionRecommendation

func HandleActionRecommendation(resp http.ResponseWriter, request *http.Request)

Mainly tested with Outlook Office365 for now Should be made based on: - Usecases and their structure - Active Apps (framework~) - LLMs

func HandleAlgoliaCreatorDeletion

func HandleAlgoliaCreatorDeletion(ctx context.Context, userId string) error

func HandleAlgoliaCreatorUpload

func HandleAlgoliaCreatorUpload(ctx context.Context, user User, overwrite bool, isOrg bool) (string, error)

func HandleApiGeneration

func HandleApiGeneration(resp http.ResponseWriter, request *http.Request)

func HandleAppendStatistics

func HandleAppendStatistics(resp http.ResponseWriter, request *http.Request)

func HandleCacheConfig

func HandleCacheConfig(resp http.ResponseWriter, request *http.Request)

func HandleChangeUserOrg

func HandleChangeUserOrg(resp http.ResponseWriter, request *http.Request)

Used for swapping your own organization to a new one IF it's eligible

func HandleClearNotifications

func HandleClearNotifications(resp http.ResponseWriter, request *http.Request)

func HandleCors

func HandleCors(resp http.ResponseWriter, request *http.Request) bool

func HandleCreateFile

func HandleCreateFile(resp http.ResponseWriter, request *http.Request)

func HandleCreateGmailSub

func HandleCreateGmailSub(resp http.ResponseWriter, request *http.Request)

This sets up the sub with outlook itself Parses data from the workflow to see whether access is right to subscribe it Creates the cloud function for outlook return Wait for it to be available, then schedule a workflow to it

func HandleCreateNotification

func HandleCreateNotification(resp http.ResponseWriter, request *http.Request)

func HandleCreateOutlookSub

func HandleCreateOutlookSub(resp http.ResponseWriter, request *http.Request)

This sets up the sub with outlook itself Parses data from the workflow to see whether access is right to subscribe it Creates the cloud function for outlook return Wait for it to be available, then schedule a workflow to it

func HandleCreateSubOrg

func HandleCreateSubOrg(resp http.ResponseWriter, request *http.Request)

func HandleDeleteCacheKey

func HandleDeleteCacheKey(resp http.ResponseWriter, request *http.Request)

func HandleDeleteCacheKeyPost

func HandleDeleteCacheKeyPost(resp http.ResponseWriter, request *http.Request)

func HandleDeleteFile

func HandleDeleteFile(resp http.ResponseWriter, request *http.Request)

func HandleDeleteGmailSub

func HandleDeleteGmailSub(resp http.ResponseWriter, request *http.Request)

func HandleDeleteHook

func HandleDeleteHook(resp http.ResponseWriter, request *http.Request)

func HandleDeleteOrg

func HandleDeleteOrg(resp http.ResponseWriter, request *http.Request)

func HandleDeleteOutlookSub

func HandleDeleteOutlookSub(resp http.ResponseWriter, request *http.Request)

func HandleDeleteUsersAccount

func HandleDeleteUsersAccount(resp http.ResponseWriter, request *http.Request)

func HandleDetectionAutoConnect

func HandleDetectionAutoConnect(resp http.ResponseWriter, request *http.Request)

FIXME: Should be generic - not just for SIEM/Sigma E.g. try for Email/Sublime

func HandleDownloadRemoteFiles

func HandleDownloadRemoteFiles(resp http.ResponseWriter, request *http.Request)

func HandleEditFile

func HandleEditFile(resp http.ResponseWriter, request *http.Request)

func HandleEditOrg

func HandleEditOrg(resp http.ResponseWriter, request *http.Request)

func HandleExecutionCacheIncrement

func HandleExecutionCacheIncrement(ctx context.Context, execution WorkflowExecution)

Handles statistics incrementation for workflow executions

func HandleFolderToggle

func HandleFolderToggle(resp http.ResponseWriter, request *http.Request)

func HandleGet2fa

func HandleGet2fa(resp http.ResponseWriter, request *http.Request)

func HandleGetCacheKey

func HandleGetCacheKey(resp http.ResponseWriter, request *http.Request)

func HandleGetDetectionRules

func HandleGetDetectionRules(resp http.ResponseWriter, request *http.Request)

func HandleGetEnvironments

func HandleGetEnvironments(resp http.ResponseWriter, request *http.Request)

func HandleGetFileContent

func HandleGetFileContent(resp http.ResponseWriter, request *http.Request)

func HandleGetFileMeta

func HandleGetFileMeta(resp http.ResponseWriter, request *http.Request)

func HandleGetFileNamespace

func HandleGetFileNamespace(resp http.ResponseWriter, request *http.Request)

func HandleGetFiles

func HandleGetFiles(resp http.ResponseWriter, request *http.Request)

func HandleGetGmailFolders

func HandleGetGmailFolders(resp http.ResponseWriter, request *http.Request)

func HandleGetHook

func HandleGetHook(resp http.ResponseWriter, request *http.Request)

func HandleGetHooks

func HandleGetHooks(resp http.ResponseWriter, request *http.Request)

func HandleGetNotifications

func HandleGetNotifications(resp http.ResponseWriter, request *http.Request)

func HandleGetOrg

func HandleGetOrg(resp http.ResponseWriter, request *http.Request)

func HandleGetOrgForms

func HandleGetOrgForms(resp http.ResponseWriter, request *http.Request)

An API to ONLY return PUBLIC forms for an org A public form = Workflow with "sharing": form

func HandleGetOrgs

func HandleGetOrgs(resp http.ResponseWriter, request *http.Request)

func HandleGetOutlookFolders

func HandleGetOutlookFolders(resp http.ResponseWriter, request *http.Request)

func HandleGetSchedules

func HandleGetSchedules(resp http.ResponseWriter, request *http.Request)

func HandleGetSelectedRules

func HandleGetSelectedRules(resp http.ResponseWriter, request *http.Request)

func HandleGetSpecificTrigger

func HandleGetSpecificTrigger(resp http.ResponseWriter, request *http.Request)

func HandleGetStatistics

func HandleGetStatistics(resp http.ResponseWriter, request *http.Request)

func HandleGetSubOrgs

func HandleGetSubOrgs(resp http.ResponseWriter, request *http.Request)

func HandleGetTriggers

func HandleGetTriggers(resp http.ResponseWriter, request *http.Request)

func HandleGetUsecase

func HandleGetUsecase(resp http.ResponseWriter, request *http.Request)

func HandleGetUserApps

func HandleGetUserApps(resp http.ResponseWriter, request *http.Request)

func HandleGetUsers

func HandleGetUsers(resp http.ResponseWriter, request *http.Request)

func HandleGetWidget

func HandleGetWidget(resp http.ResponseWriter, request *http.Request)

func HandleGetWorkflowRunCount

func HandleGetWorkflowRunCount(resp http.ResponseWriter, request *http.Request)

func HandleGetenvStats

func HandleGetenvStats(resp http.ResponseWriter, request *http.Request)

func HandleGmailRouting

func HandleGmailRouting(resp http.ResponseWriter, request *http.Request)

Returns 200 no matter what since these are received by GOOGLE PUB/SUB

func HandleGmailSubRemoval

func HandleGmailSubRemoval(ctx context.Context, user User, workflowId, triggerId string) error

func HandleKeyDecryption

func HandleKeyDecryption(data []byte, passphrase string) ([]byte, error)

func HandleKeyEncryption

func HandleKeyEncryption(data []byte, passphrase string) ([]byte, error)

func HandleKeyValueCheck

func HandleKeyValueCheck(resp http.ResponseWriter, request *http.Request)

func HandleListCacheKeys

func HandleListCacheKeys(resp http.ResponseWriter, request *http.Request)

func HandleListDetectionCategories

func HandleListDetectionCategories(resp http.ResponseWriter, request *http.Request)

func HandleLogin

func HandleLogin(resp http.ResponseWriter, request *http.Request)

func HandleLogout

func HandleLogout(resp http.ResponseWriter, request *http.Request)

func HandleMarkAsRead

func HandleMarkAsRead(resp http.ResponseWriter, request *http.Request)

func HandleNewGithubRegister

func HandleNewGithubRegister(resp http.ResponseWriter, request *http.Request)

FIXME: 1. Should find contributions to Shuffle repo's for the user 2. Should save tokens to continuously check this

func HandleNewGmailRegister

func HandleNewGmailRegister(resp http.ResponseWriter, request *http.Request)

func HandleNewHook

func HandleNewHook(resp http.ResponseWriter, request *http.Request)

Starts a new webhook

func HandleNewOutlookRegister

func HandleNewOutlookRegister(resp http.ResponseWriter, request *http.Request)

func HandleNewPipelineRegister

func HandleNewPipelineRegister(resp http.ResponseWriter, request *http.Request)

Pipeline is a sequence of stages that are executed in order. We will deploy the pipeline to run something from Orborus by adding it to the Orborus queue to be handled

func HandleNewWidget

func HandleNewWidget(resp http.ResponseWriter, request *http.Request)

Starts a new webhook

func HandleOpenId

func HandleOpenId(resp http.ResponseWriter, request *http.Request)

Example implementation of SSO, including a redirect for the user etc Should make this stuff only possible after login

func HandleOutlookSubRemoval

func HandleOutlookSubRemoval(ctx context.Context, user User, workflowId, triggerId string) error

Remove AUTH Remove function Remove subscription

func HandleOutputFormatting

func HandleOutputFormatting(result, inputdata, appname string) string

func HandlePasswordChange

func HandlePasswordChange(resp http.ResponseWriter, request *http.Request)

func HandleRecommendationAction

func HandleRecommendationAction(resp http.ResponseWriter, request *http.Request)

func HandleRerunExecutions

func HandleRerunExecutions(resp http.ResponseWriter, request *http.Request)

func HandleSSO

func HandleSSO(resp http.ResponseWriter, request *http.Request)

Example implementation of SSO, including a redirect for the user etc Should make this stuff only possible after login

func HandleSSOLogin

func HandleSSOLogin(resp http.ResponseWriter, request *http.Request)

FIXME: Do NOT use this yet (May 24th, 2024). It is not ready for production due to being a potential cross-tenant attack vector.

func HandleSaveSelectedRules

func HandleSaveSelectedRules(resp http.ResponseWriter, request *http.Request)

func HandleSet2fa

func HandleSet2fa(resp http.ResponseWriter, request *http.Request)

func HandleSetCacheKey

func HandleSetCacheKey(resp http.ResponseWriter, request *http.Request)

func HandleSetEnvironments

func HandleSetEnvironments(resp http.ResponseWriter, request *http.Request)

func HandleSetFileConfig

func HandleSetFileConfig(resp http.ResponseWriter, request *http.Request)

destribute files to all sub orgs of parent org

func HandleSetenvConfig

func HandleSetenvConfig(resp http.ResponseWriter, request *http.Request)

func HandleSettings

func HandleSettings(resp http.ResponseWriter, request *http.Request)

func HandleShareNamespace

func HandleShareNamespace(resp http.ResponseWriter, request *http.Request)

func HandleStopExecutions

func HandleStopExecutions(resp http.ResponseWriter, request *http.Request)

Send in deleteall=true to delete ALL executions for the environment ID

func HandleStreamWorkflow

func HandleStreamWorkflow(resp http.ResponseWriter, request *http.Request)

func HandleStreamWorkflowUpdate

func HandleStreamWorkflowUpdate(resp http.ResponseWriter, request *http.Request)

func HandleSuborgScheduleRun

func HandleSuborgScheduleRun(request *http.Request, workflow *Workflow)

For replicating HTTP request from schedule user

func HandleToggleRule

func HandleToggleRule(resp http.ResponseWriter, request *http.Request)

func HandleUpdateUser

func HandleUpdateUser(resp http.ResponseWriter, request *http.Request)

func HandleUploadFile

func HandleUploadFile(resp http.ResponseWriter, request *http.Request)

func HandleUserPrivateTraining

func HandleUserPrivateTraining(resp http.ResponseWriter, request *http.Request)

func HandleWorkflowRunSearch

func HandleWorkflowRunSearch(resp http.ResponseWriter, request *http.Request)

func HealthCheckHandler

func HealthCheckHandler(resp http.ResponseWriter, request *http.Request)

func IncrementCache

func IncrementCache(ctx context.Context, orgId, dataType string, amount ...int)

Rudementary caching system. WILL go wrong at times without sharding. It's only good for the user in cloud, hence wont bother for a while Optional input is the amount to increment

func IncrementCacheDump

func IncrementCacheDump(ctx context.Context, orgId, dataType string, amount ...int) error

func InitOpsWorkflow

func InitOpsWorkflow(apiKey string, OrgId string) (string, error)

func IsLicensed

func IsLicensed(ctx context.Context, org Org) bool

func IsRunningInCluster

func IsRunningInCluster() bool

func LoadStandardFromGithub

func LoadStandardFromGithub(client *github.Client, owner, repo, path, filename string) ([]*github.RepositoryContent, error)

func LoadUsecases

func LoadUsecases(resp http.ResponseWriter, request *http.Request)

func MakeGmailWebhookRequest

func MakeGmailWebhookRequest(ctx context.Context, webhookUrl string, mappedData []byte) error

Sending request to not complicate the use of webhooks vs non-webhooks, and dragging the execution model into shared area

func MakeOutlookSubscription

func MakeOutlookSubscription(client *http.Client, folderIds []string, notificationURL string) (string, error)

func MakePythoncode

func MakePythoncode(swagger *openapi3.Swagger, name, url, method string, parameters, optionalQueries, headers []string, fileField string, api WorkflowApp, handleFile bool) (string, string)

This function generates the python code that's being used. This is really meta when you program it. Handling parameters is hard here.

func MatchBodyWithInputdata

func MatchBodyWithInputdata(inputdata, appname, actionName, body string, appContext []AppContext) string

func MatchRequiredFieldsWithInputdata

func MatchRequiredFieldsWithInputdata(inputdata, appname, inputAction, body string) string

func Md5sum

func Md5sum(data []byte) string

func Md5sumfile

func Md5sumfile(filepath string) string

func ParseLoginParameters

func ParseLoginParameters(resp http.ResponseWriter, request *http.Request) (loginStruct, error)

func ParseVersions

func ParseVersions(versions []string) []string

func PrepareWorkflowExecution

func PrepareWorkflowExecution(ctx context.Context, workflow Workflow, request *http.Request, maxExecutionDepth int64) (WorkflowExecution, ExecInfo, string, error)

New execution with firestore The slow parts of it on FIRST request without cache: - Env loading (450ms) - Org Auth loading (500ms)

func RedirectUserRequest

func RedirectUserRequest(w http.ResponseWriter, req *http.Request)

func RefreshGmailClient

func RefreshGmailClient(ctx context.Context, auth TriggerAuth) (*http.Client, error)

func RefreshOutlookClient

func RefreshOutlookClient(ctx context.Context, auth TriggerAuth) error

func RemoveFromArray

func RemoveFromArray(array []string, element string) []string

Function with the name RemoveFromArray to remove a string from a string array

func RemoveJsonValues

func RemoveJsonValues(input []byte, depth int64) ([]byte, string, error)

Removes JSON values from the input

func RequestMiddleware

func RequestMiddleware(next http.Handler) http.Handler

func RerunExecution

func RerunExecution(ctx context.Context, environment string, workflow Workflow) (int, error)

func ResendActionResult

func ResendActionResult(actionData []byte, retries int64)

func RunActionAI

func RunActionAI(resp http.ResponseWriter, request *http.Request)

1. Return list of top apps matching the category if no apps match 2. Make sure it actually runs the thing. Use this: api/v1/apps/categories/run 3. Make it translate the input fields to the correct JSON format 4. Make sure it handles auth 5. Find apps based on Algolia 5. Make sure bodies are filled in correctly 6. Run without category/label and directly find app + action 7. Auto-label actions based on available labels & action name 8. Get documentation from doc URL, scrape & auto-input for each action 9. Get context awareness of what to do: workflow (create,modify), app (run,return, add to workflow)... 10. Continuing with context: Understand if they want to use ANY of the Shuffle API's, e.g. for listing apps, workflows, auth etc. "What actions does the x app have?" "how many?" 11. e.g. for JIRA: Add a way to understand if we need more context. Sample: If we get a response that the project ID is wrong, look for an API to list projects (solve the problem), then: either ask the user which one, or just choose one. 12. Add vector db and save for individual users 13. Add synonyms for words. e.g. for cases: alert = incident = case = issue = ticket, search = find = query, ... 14. Go check App's documentation for answers if we don't have the right info directly 15. how many clicks did our website have last week 16. Oauth2 autorefresh on single-actions 17. Make it work without action label (1) & category (2), and do auto-tagging if it's correct 18. Check for continuity. e.g. for an gmail, listing mails isn't always enough, but and requires further searching into the contents

func RunAgentDecisionAction

func RunAgentDecisionAction(execution WorkflowExecution, agentOutput AgentOutput, decision AgentDecision)

Runs an Agent Decision -> returns the result from it FIXME: Handle types: https://www.figma.com/board/V6Kg7KxbmuhIUyTImb20t1/Shuffle-AI-Agent-system?node-id=0-1&p=f&t=yIGaSXQYsYReR8cI-0 This function should handle: 1. Running the decided action (user input, Singul, Workflow, Other Agent, Custom HTTP function) 2. Taking the result and sending (?) it back 3. Ensuring cache for an action is kept up to date

func RunAgentDecisionSingulActionHandler

func RunAgentDecisionSingulActionHandler(execution WorkflowExecution, decision AgentDecision) ([]byte, string, error)

This is JUST for Singul actions with AI agents. As AI Agents can have multiple types of runs, this could change every time.

func RunAiQuery

func RunAiQuery(systemMessage, userMessage string, incomingRequest ...openai.ChatCompletionRequest) (string, error)

Runs ANY AI query based on the system message and user message. This can also be overridden by passing in a custom OpenAI ChatCompletion request

func RunCacheCleanup

func RunCacheCleanup(ctx context.Context, workflowExecution WorkflowExecution)

Stopped clearing them out as the result from it is used in subsequent workflows as well (subflows). This means the 31 min timeout is default.

func RunExecuteAccessValidation

func RunExecuteAccessValidation(request *http.Request, workflow *Workflow) (bool, string)

Check if the execution data has correct info in it! Happens based on subflows. 1. Parent workflow contains this workflow ID in the source trigger? 2. Parent workflow's owner is same org? 3. Parent execution auth is correct

func RunExecutionTranslation

func RunExecutionTranslation(ctx context.Context, actionResult ActionResult)

func RunFixParentWorkflowResult

func RunFixParentWorkflowResult(ctx context.Context, execution WorkflowExecution) error

Only returning error as the point is for the current workflow to update the parent workflow

func RunGoogleSearch

func RunGoogleSearch(ctx context.Context, query string) (string, error)

To self-learn about the correct answer Should use gpt-3.5 to find the right result, scrape, visit & answer question

func RunHealthTest

func RunHealthTest(resp http.ResponseWriter, req *http.Request)

func RunIOCFinder

func RunIOCFinder(ctx context.Context, workflowExecution WorkflowExecution)

Finds IPs, domains and hashes Point is to test out how we can create a structured database of these, correlate with, and store them

func RunKmsTranslation

func RunKmsTranslation(ctx context.Context, fullBody []byte, authConfig, paramName string) (string, error)

Translates the output of the KMS action to a usable format in the { "kms_key": "key", "kms_value": "value" } format

func RunOpsHealthCheck

func RunOpsHealthCheck(resp http.ResponseWriter, request *http.Request)

func RunTextClassifier

func RunTextClassifier(ctx context.Context, workflowExecution WorkflowExecution)

Checks same workflow's executions if it has had something similar happening in the last 10 workflows

func SaveWorkflow

func SaveWorkflow(resp http.ResponseWriter, request *http.Request)

Saves a workflow to an ID

func SendDeleteWorkflowRequest

func SendDeleteWorkflowRequest(childWorkflow Workflow, request *http.Request) error

func SendHookResult

func SendHookResult(resp http.ResponseWriter, request *http.Request)

func SetApikey

func SetApikey(ctx context.Context, Userdata User) error

Index = Username

func SetAppRevision

func SetAppRevision(ctx context.Context, app WorkflowApp) error

func SetAuthGroupDatastore

func SetAuthGroupDatastore(ctx context.Context, workflowappauthgroup AppAuthenticationGroup, id string) error

func SetAuthenticationConfig

func SetAuthenticationConfig(resp http.ResponseWriter, request *http.Request)

func SetAutofixAppLabelsCache

func SetAutofixAppLabelsCache(ctx context.Context, app WorkflowApp, appAction WorkflowAppAction, label string, keys []string) error

func SetCache

func SetCache(ctx context.Context, name string, data []byte, expiration int32) error

Sets a key in cache. Expiration is in minutes.

func SetCacheKey

func SetCacheKey(ctx context.Context, cacheData CacheKeyData) error

Used for cache for individual organizations

func SetConversation

func SetConversation(ctx context.Context, input QueryInput) error

func SetDetectionOrborusRequest

func SetDetectionOrborusRequest(ctx context.Context, orgId, execType, fileName, executionSource, environmentName string) error

func SetEnvironment

func SetEnvironment(ctx context.Context, env *Environment) error

func SetFile

func SetFile(ctx context.Context, file File) error

func SetFileSingul

func SetFileSingul(ctx context.Context, file File) error

func SetFrameworkConfiguration

func SetFrameworkConfiguration(resp http.ResponseWriter, request *http.Request)

func SetGitWorkflow

func SetGitWorkflow(ctx context.Context, workflow Workflow, org *Org) error

Uploads updates for a workflow to a specific file on git

func SetHook

func SetHook(ctx context.Context, hook Hook) error

func SetInitExecutionVariables

func SetInitExecutionVariables(ctx context.Context, workflowExecution WorkflowExecution)

Initializes an execution's extra variables

func SetJoinPrizedraw2021

func SetJoinPrizedraw2021(ctx context.Context, inputItem PrizedrawSubmitter) error

func SetKmsCache

func SetKmsCache(ctx context.Context, auth AppAuthenticationStorage, key, value string, ttl int32) error

func SetLiveWorkflowExecutionData

func SetLiveWorkflowExecutionData(ctx context.Context, liveExec LiveExecutionStatus) error

func SetNewDeal

func SetNewDeal(ctx context.Context, deal ResellerDeal) error

func SetNewValue

func SetNewValue(ctx context.Context, newvalue NewValue) error

func SetNewWorkflow

func SetNewWorkflow(resp http.ResponseWriter, request *http.Request)

func SetNotification

func SetNotification(ctx context.Context, notification Notification) error

func SetOpenApiDatastore

func SetOpenApiDatastore(ctx context.Context, id string, openapi ParsedOpenApi) error

func SetOpenseaAsset

func SetOpenseaAsset(ctx context.Context, collection OpenseaAsset, id string, optionalEditedSecondsOffset ...int) error

func SetOrg

func SetOrg(ctx context.Context, data Org, id string) error

func SetOrgMoveCache

func SetOrgMoveCache(ctx context.Context, orgId string) error

func SetOrgStatistics

func SetOrgStatistics(ctx context.Context, stats ExecutionInfo, id string) error

func SetPlatformHealth

func SetPlatformHealth(ctx context.Context, health HealthCheckDB) error

func SetSchedule

func SetSchedule(ctx context.Context, schedule ScheduleOld) error

Index = Username

func SetSession

func SetSession(ctx context.Context, user User, value string) error

Index = Username

func SetSingulStats added in v0.8.67

func SetSingulStats(ctx context.Context, stats SingulStats) error

func SetSubscriptionRecipient

func SetSubscriptionRecipient(ctx context.Context, sub SubscriptionRecipient, id string) error

func SetSuggestion

func SetSuggestion(ctx context.Context, suggestion Suggestion) error

func SetSyncApikey

func SetSyncApikey(ctx context.Context, synckey *SyncKey) error

func SetTraining

func SetTraining(ctx context.Context, training Training) error

func SetTriggerAuth

func SetTriggerAuth(ctx context.Context, trigger TriggerAuth) error

func SetUsecase

func SetUsecase(ctx context.Context, usecase Usecase, optionalEditedSecondsOffset ...int) error

func SetUser

func SetUser(ctx context.Context, user *User, updateOrg bool) error

func SetWorkflow

func SetWorkflow(ctx context.Context, workflow Workflow, id string, optionalEditedSecondsOffset ...int) error

func SetWorkflowAppAuthDatastore

func SetWorkflowAppAuthDatastore(ctx context.Context, workflowappauth AppAuthenticationStorage, id string) error

func SetWorkflowAppDatastore

func SetWorkflowAppDatastore(ctx context.Context, workflowapp WorkflowApp, id string) error

func SetWorkflowExecution

func SetWorkflowExecution(ctx context.Context, workflowExecution WorkflowExecution, dbSave bool) error

func SetWorkflowQueue

func SetWorkflowQueue(ctx context.Context, executionRequest ExecutionRequest, env string) error

func SetWorkflowRevision

func SetWorkflowRevision(ctx context.Context, workflow Workflow) error

func SetenvStats

func SetenvStats(ctx context.Context, input OrborusStats) error

func StoreDisabledRules

func StoreDisabledRules(ctx context.Context, file DisabledRules) error

func StoreSelectedRules

func StoreSelectedRules(ctx context.Context, TriggerId string, rules SelectedDetectionRules) error

func StreamZipdata

func StreamZipdata(ctx context.Context, identifier, pythoncode, requirements, bucketName string) (string, error)

Streams the data into a zip to be used for a cloud function

func TrimToNum

func TrimToNum(r int) bool

func UpdateActionBody

func UpdateActionBody(action WorkflowAppAction) (string, error)

func UpdateAppAuth

func UpdateAppAuth(ctx context.Context, auth AppAuthenticationStorage, workflowId, nodeId string, add bool) error

Adds app auth tracking

func UpdateExecutionVariables

func UpdateExecutionVariables(ctx context.Context, executionId, startnode string, children, parents map[string][]string, visited, executed, nextActions, environments []string, extra int) error

func UpdateUsecases

func UpdateUsecases(resp http.ResponseWriter, request *http.Request)

func UpdateWorkflowAppConfig

func UpdateWorkflowAppConfig(resp http.ResponseWriter, request *http.Request)

Only used for onprem :/

func UploadFile

func UploadFile(ctx context.Context, file *File, encryptionKey string, contents []byte) (string, error)

func UploadFileSingul

func UploadFileSingul(ctx context.Context, file *File, key string, data []byte) (string, error)

func UploadParameterBase

func UploadParameterBase(ctx context.Context, orgId, appId, actionName, paramName, paramValue string) error

Uploads modifyable parameter data to file storage, as to be used in the future executions of the app

func ValidateFinished

func ValidateFinished(ctx context.Context, extra int, workflowExecution WorkflowExecution) bool

func ValidateLabelAvailability

func ValidateLabelAvailability(category string, availableLabels []string)

func ValidateNewWorkerExecution

func ValidateNewWorkerExecution(ctx context.Context, body []byte, shouldReset bool) error

Checks if data is sent from Worker >0.8.51, which sends a full execution instead of individial results

func ValidateParameterName

func ValidateParameterName(name string) string

Returns a valid param name

func ValidateRequestOverload

func ValidateRequestOverload(resp http.ResponseWriter, request *http.Request, amount ...int) error

func ValidateSwagger

func ValidateSwagger(resp http.ResponseWriter, request *http.Request)

Types

type Action

type Action struct {
	AppName           string                       `json:"app_name" datastore:"app_name"`
	AppVersion        string                       `json:"app_version" datastore:"app_version"`
	Description       string                       `json:"description" datastore:"description,noindex"`
	AppID             string                       `json:"app_id" datastore:"app_id"`
	Errors            []string                     `json:"errors" datastore:"errors"`
	ID                string                       `json:"id" datastore:"id"`
	IsValid           bool                         `json:"is_valid" datastore:"is_valid"`
	IsStartNode       bool                         `json:"isStartNode,omitempty" datastore:"isStartNode"`
	Sharing           bool                         `json:"sharing,omitempty" datastore:"sharing"`
	PrivateID         string                       `json:"private_id,omitempty" datastore:"private_id"`
	Label             string                       `json:"label,omitempty" datastore:"label"`
	SmallImage        string                       `json:"small_image,omitempty" datastore:"small_image,noindex" required:false yaml:"small_image"`
	Public            bool                         `json:"public" datastore:"public"`
	Generated         bool                         `json:"generated" yaml:"generated" required:false datastore:"generated"`
	LargeImage        string                       `json:"large_image,omitempty" datastore:"large_image,noindex" yaml:"large_image" required:false`
	Environment       string                       `json:"environment,omitempty" datastore:"environment"`
	Name              string                       `json:"name" datastore:"name"`
	Parameters        []WorkflowAppActionParameter `json:"parameters" datastore: "parameters,noindex"`
	InvalidParameters []WorkflowAppActionParameter `json:"previous_parameters,omitempty" datastore: "previous_parameters,noindex"`
	ExecutionVariable Variable                     `json:"execution_variable,omitempty" datastore:"execution_variable,omitempty"`
	Position          Position                     `json:"position,omitempty"`
	Priority          int                          `json:"priority,omitempty" datastore:"priority"`
	AuthenticationId  string                       `json:"authentication_id" datastore:"authentication_id"`
	Example           string                       `json:"example,omitempty" datastore:"example,noindex"`
	AuthNotRequired   bool                         `json:"auth_not_required,omitempty" datastore:"auth_not_required" yaml:"auth_not_required"`
	Category          string                       `json:"category" datastore:"category"`
	ReferenceUrl      string                       `json:"reference_url" datastore:"reference_url"`
	SubAction         bool                         `json:"sub_action" datastore:"sub_action"`
	RunMagicOutput    bool                         `json:"run_magic_output" datastore:"run_magic_output" yaml:"run_magic_output"`
	RunMagicInput     bool                         `json:"run_magic_input" datastore:"run_magic_input" yaml:"run_magic_input"`
	ExecutionDelay    int64                        `json:"execution_delay" yaml:"execution_delay" datastore:"execution_delay"`
	CategoryLabel     []string                     `json:"category_label" datastore:"category_label"` // For categorization of the type of node in case it's available
	Suggestion        bool                         `json:"suggestion" datastore:"suggestion"`         // Whether it was a suggestion in the workflow or not

	ParentControlled bool `json:"parent_controlled" datastore:"parent_controlled"` // If the parent workflow node exists, and shouldn't be editable by child workflow

	// ParameterLocks []ParameterLock `json:"parameter_locks" datastore:"parameter_locks"`
	SourceWorkflow  string `json:"source_workflow" yaml:"source_workflow" datastore:"source_workflow"`
	SourceExecution string `json:"source_execution" yaml:"source_execution" datastore:"source_execution"`
}

This is for the nodes in a workflow, NOT the app action itself.

func FindNextApiStep

func FindNextApiStep(action Action, stepOutput []byte, additionalInfo, inputdata, originalAppname string, attempt ...int) (string, Action, error, string)

Used for recursively fixing HTTP outputs that are bad

func GetAction

func GetAction(workflowExecution WorkflowExecution, id, environment string) Action

func HandleAiAgentExecutionStart

func HandleAiAgentExecutionStart(execution WorkflowExecution, startNode Action) (Action, error)

func RunSelfCorrectingRequest

func RunSelfCorrectingRequest(action Action, status int, additionalInfo, outputBody, appname, inputdata string, attempt ...int) (Action, string, error)

Returns: 1. The fully filled-in action 2. The additional info from the previous request 3. Any error that may have occurred

type ActionRecommendations

type ActionRecommendations struct {
	Success bool              `json:"success"`
	Actions []RecommendAction `json:"actions"`
}

type ActionReference

type ActionReference struct {
	Name       string   `json:"name"`
	Id         string   `json:"id"`
	ImageUrl   string   `json:"image_url"`
	ActionName []string `json:"action_name"`
}

type ActionResult

type ActionResult struct {
	Action           Action          `json:"action" datastore:"action"`
	ExecutionId      string          `json:"execution_id" datastore:"execution_id"`
	Authorization    string          `json:"authorization" datastore:"authorization"`
	Result           string          `json:"result" datastore:"result,noindex"`
	StartedAt        int64           `json:"started_at" datastore:"started_at"`
	CompletedAt      int64           `json:"completed_at" datastore:"completed_at"`
	Status           string          `json:"status" datastore:"status"`
	AttackTechniques []string        `json:"attack_techniques" datastore:"attack_techniques"`
	AttackTactics    []string        `json:"attack_tactics" datastore:"attack_tactics"`
	SimilarActions   []SimilarAction `json:"similar_actions" datastore:"similar_actions"`
}

func FixActionResultOutput

func FixActionResultOutput(actionResult ActionResult) ActionResult

Function for translating action results into whatever. Came about because of general issues with Oauth2

type AdditionalUseConfig

type AdditionalUseConfig struct {
	Key   string `json:"key" datastore:"key"`
	Value int64  `json:"value" datastore:"value"`

	DailyValue int64     `json:"daily_value,omitempty" datastore:"daily_value"`
	Date       time.Time `json:"date,omitempty" datastore:"date"`
}

type AgentDecision

type AgentDecision struct {
	// Predictive Agent data
	I          int            `json:"i" datastore:"i"`
	Action     string         `json:"action" datastore:"action"`
	Tool       string         `json:"tool" datastore:"tool"`
	Category   string         `json:"category" datastore:"category"`
	Confidence float64        `json:"confidence" datastore:"confidence"`
	Runs       string         `json:"runs" datastore:"runs"`
	Sources    string         `json:"sources,omitempty" datastore:"sources"`
	Fields     []Valuereplace `json:"fields" datastore:"fields"`
	Reason     string         `json:"reason" datastore:"reason"`

	// Responses
	RunDetails AgentDecisionRunDetails `json:"run_details" datastore:"run_details"`
}

Each decision

type AgentDecisionRunDetails

type AgentDecisionRunDetails struct {
	Id string `json:"id" datastore:"id"`

	StartedAt   int64  `json:"started_at" datastore:"started_at"`
	CompletedAt int64  `json:"completed_at" datastore:"completed_at"`
	Type        string `json:"type" datastore:"type"`
	Status      string `json:"status" datastore:"status"`
	RawResponse string `json:"raw_response,omitempty" datastore:"raw_response"`
	DebugUrl    string `json:"debug_url,omitempty" datastore:"debug_url"`
}

The execution details of a decision

type AgentOutput

type AgentOutput struct {
	Status    string          `json:"status" datastore:"status"`
	Input     string          `json:"input" datastore:"input"`
	Error     string          `json:"error,omitempty" datastore:"error"`
	Decisions []AgentDecision `json:"decisions" datastore:"decisions"`

	// For easy testing
	DecisionString string `json:"decision_string,omitempty" datastore:"decision_string"`
	// For tracking of details parent<->child
	StartedAt   int64  `json:"started_at,omitempty" datastore:"started_at"`
	CompletedAt int64  `json:"completed_at,omitempty" datastore:"completed_at"`
	ExecutionId string `json:"execution_id,omitempty" datastore:"execution_id"`
	NodeId      string `json:"node_id,omitempty" datastore:"node_id"`
	Memory      string `json:"memory,omitempty" datastore:"memory"`
}

The overall Agent controller

type AlertThreshold

type AlertThreshold struct {
	Percentage int  `json:"percentage" datastore:"percentage"`
	Count      int  `json:"count" datastore:"count"`
	Email_send bool `json:"Email_send" datastore:"Email_send"`
}

type AlgoliaSearchApp

type AlgoliaSearchApp struct {
	Name         string   `json:"name"`
	Description  string   `json:"description"`
	ObjectID     string   `json:"objectID"`
	Creator      string   `json:"creator"`
	AppVersion   string   `json:"app_version"`
	ImageUrl     string   `json:"image_url"`
	TimeEdited   int64    `json:"time_edited"`
	Generated    bool     `json:"generated"`
	Invalid      bool     `json:"invalid"`
	Priority     int      `json:"priority"`
	Actions      int      `json:"actions"`
	Tags         []string `json:"tags"`
	AccessibleBy []string `json:"accessible_by"`
	Categories   []string `json:"categories"`
	ActionLabels []string `json:"action_labels"`
	Triggers     []string `json:"triggers"`
	Verified     bool     `json:"verified"`
}

func HandleAlgoliaAppSearch

func HandleAlgoliaAppSearch(ctx context.Context, appname string) (AlgoliaSearchApp, error)

func HandleAlgoliaAppSearchByUser

func HandleAlgoliaAppSearchByUser(ctx context.Context, userId string) ([]AlgoliaSearchApp, error)

type AlgoliaSearchCreator

type AlgoliaSearchCreator struct {
	ObjectID        string          `json:"objectID"`
	TimeEdited      int64           `json:"time_edited"`
	Username        string          `json:"username"`
	Image           string          `json:"image"`
	Banner          string          `datastore:"banner" json:"banner"`
	Skills          []string        `json:"skills"`
	Synonyms        []string        `json:"synonyms"`
	Workflows       int64           `json:"workflows"`
	Apps            int64           `json:"apps"`
	SpecializedApps []MinimizedApps `json:"specialized_apps"`
	Verified        bool            `json:"verified"`
	Social          []string        `datastore:"social" json:"social"`
	WorkStatus      string          `datastore:"work_status" json:"work_status"`
	Url             string          `datastore:"url" json:"url"`
	IsOrg           bool            `datastore:"is_org" json:"is_org"`
}

func HandleAlgoliaCreatorSearch

func HandleAlgoliaCreatorSearch(ctx context.Context, username string) (AlgoliaSearchCreator, error)

type AlgoliaSearchWorkflow

type AlgoliaSearchWorkflow struct {
	Name             string            `json:"name"`
	ObjectID         string            `json:"objectID"`
	Description      string            `json:"description"`
	Variables        int               `json:"variables"`
	ActionAmount     int               `json:"action_amount"`
	TriggerAmount    int               `json:"trigger_amount"`
	Triggers         []string          `json:"triggers"`
	Actions          []string          `json:"actions"`
	Tags             []string          `json:"tags"`
	Categories       []string          `json:"categories"`
	AccessibleBy     []string          `json:"accessible_by,omitempty"`
	ImageUrl         string            `json:"image_url"`
	TimeEdited       int64             `json:"time_edited"`
	Invalid          bool              `json:"invalid"`
	Creator          string            `json:"creator,omitempty"`
	SourceIPLower    string            `json:"source_ip,omitempty"`
	SourceIP         string            `json:"SourceIP,omitempty"`
	Type             string            `json:"type"`
	UsecaseIds       []string          `json:"usecase_ids"`
	CreatorInfo      CreatorInfo       `json:"creator_info,omitempty"`
	ActionReferences []ActionReference `json:"action_references,omitempty"`
	Priority         int               `json:"priority"`
	Validated        bool              `json:"validated"`
}

func HandleAlgoliaWorkflowSearchByApp

func HandleAlgoliaWorkflowSearchByApp(ctx context.Context, appname string) ([]AlgoliaSearchWorkflow, error)

func HandleAlgoliaWorkflowSearchByUser

func HandleAlgoliaWorkflowSearchByUser(ctx context.Context, userId string) ([]AlgoliaSearchWorkflow, error)

type AllHooksWrapper

type AllHooksWrapper struct {
	Hits struct {
		Total struct {
			Value    int    `json:"value"`
			Relation string `json:"relation"`
		} `json:"total"`
		Hits []struct {
			Index  string  `json:"_index"`
			ID     string  `json:"_id"`
			Score  float64 `json:"_score"`
			Source Hook    `json:"_source"`
		} `json:"hits"`
	} `json:"hits"`
}

type AllPipelinesWrapper

type AllPipelinesWrapper struct {
	Hits struct {
		Total struct {
			Value    int    `json:"value"`
			Relation string `json:"relation"`
		} `json:"total"`
		Hits []struct {
			Index  string   `json:"_index"`
			ID     string   `json:"_id"`
			Score  float64  `json:"_score"`
			Source Pipeline `json:"_source"`
		} `json:"hits"`
	} `json:"hits"`
}

type AllTriggersWrapper

type AllTriggersWrapper struct {
	Pipelines []PipelineInfoMini `json:"pipelines"`
	WebHooks  []Hook             `json:"webhooks"`
	Schedules []ScheduleOld      `json:"schedules"`
}

type ApiYaml

type ApiYaml struct {
	Name        string `json:"name" yaml:"name" required:"true datastore:"name"`
	Foldername  string `json:"foldername" yaml:"foldername" required:"true datastore:"foldername"`
	Id          string `json:"id" yaml:"id",required:"true, datastore:"id"`
	Description string `json:"description" datastore:"description" yaml:"description"`
	AppVersion  string `json:"app_version" yaml:"app_version",datastore:"app_version"`
	ContactInfo struct {
		Name string `json:"name" datastore:"name" yaml:"name"`
		Url  string `json:"url" datastore:"url" yaml:"url"`
	} `json:"contact_info" datastore:"contact_info" yaml:"contact_info"`
	Types []string `json:"types" datastore:"types" yaml:"types"`
	Input []struct {
		Name            string `json:"name" datastore:"name" yaml:"name"`
		Description     string `json:"description" datastore:"description" yaml:"description"`
		InputParameters []struct {
			Name        string `json:"name" datastore:"name" yaml:"name"`
			Description string `json:"description" datastore:"description" yaml:"description"`
			Required    string `json:"required" datastore:"required" yaml:"required"`
			Schema      struct {
				Type string `json:"type" datastore:"type" yaml:"type"`
			} `json:"schema" datastore:"schema" yaml:"schema"`
		} `json:"inputparameters" datastore:"inputparameters" yaml:"inputparameters"`
		OutputParameters []struct {
			Name        string `json:"name" datastore:"name" yaml:"name"`
			Description string `json:"description" datastore:"description" yaml:"description"`
			Required    string `json:"required" datastore:"required" yaml:"required"`
			Schema      struct {
				Type string `json:"type" datastore:"type" yaml:"type"`
			} `json:"schema" datastore:"schema" yaml:"schema"`
		} `json:"outputparameters" datastore:"outputparameters" yaml:"outputparameters"`
		Config []struct {
			Name        string `json:"name" datastore:"name" yaml:"name"`
			Description string `json:"description" datastore:"description" yaml:"description"`
			Required    string `json:"required" datastore:"required" yaml:"required"`
			Schema      struct {
				Type string `json:"type" datastore:"type" yaml:"type"`
			} `json:"schema" datastore:"schema" yaml:"schema"`
		} `json:"config" datastore:"config" yaml:"config"`
	} `json:"input" datastore:"input" yaml:"input"`
	Output []struct {
		Name        string `json:"name" datastore:"name" yaml:"name"`
		Description string `json:"description" datastore:"description" yaml:"description"`
		Config      []struct {
			Name        string `json:"name" datastore:"name" yaml:"name"`
			Description string `json:"description" datastore:"description" yaml:"description"`
			Required    string `json:"required" datastore:"required" yaml:"required"`
			Schema      struct {
				Type string `json:"type" datastore:"type" yaml:"type"`
			} `json:"schema" datastore:"schema" yaml:"schema"`
		} `json:"config" datastore:"config" yaml:"config"`
		InputParameters []struct {
			Name        string `json:"name" datastore:"name" yaml:"name"`
			Description string `json:"description" datastore:"description" yaml:"description"`
			Required    string `json:"required" datastore:"required" yaml:"required"`
			Schema      struct {
				Type string `json:"type" datastore:"type" yaml:"type"`
			} `json:"schema" datastore:"schema" yaml:"schema"`
		} `json:"inputparameters" datastore:"inputparameters" yaml:"inputparameters"`
		OutputParameters []struct {
			Name        string `json:"name" datastore:"name" yaml:"name"`
			Description string `json:"description" datastore:"description" yaml:"description"`
			Required    string `json:"required" datastore:"required" yaml:"required"`
			Schema      struct {
				Type string `json:"type" datastore:"type" yaml:"type"`
			} `json:"schema" datastore:"schema" yaml:"schema"`
		} `json:"outputparameters" datastore:"outputparameters" yaml:"outputparameters"`
	} `json:"output" datastore:"output" yaml:"output"`
}

Hmm

type AppAuthSearchWrapper

type AppAuthSearchWrapper struct {
	Took     int  `json:"took"`
	TimedOut bool `json:"timed_out"`
	Shards   struct {
		Total      int `json:"total"`
		Successful int `json:"successful"`
		Skipped    int `json:"skipped"`
		Failed     int `json:"failed"`
	} `json:"_shards"`
	Hits struct {
		Total struct {
			Value    int    `json:"value"`
			Relation string `json:"relation"`
		} `json:"total"`
		MaxScore float64 `json:"max_score"`
		Hits     []struct {
			Index  string                   `json:"_index"`
			Type   string                   `json:"_type"`
			ID     string                   `json:"_id"`
			Score  float64                  `json:"_score"`
			Source AppAuthenticationStorage `json:"_source"`
		} `json:"hits"`
	} `json:"hits"`
}

type AppAuthWrapper

type AppAuthWrapper struct {
	Index       string                   `json:"_index"`
	Type        string                   `json:"_type"`
	ID          string                   `json:"_id"`
	Version     int                      `json:"_version"`
	SeqNo       int                      `json:"_seq_no"`
	PrimaryTerm int                      `json:"_primary_term"`
	Found       bool                     `json:"found"`
	Source      AppAuthenticationStorage `json:"_source"`
}

type AppAuthenticationGroup

type AppAuthenticationGroup struct {
	Active      bool   `json:"active" datastore:"active"`
	Label       string `json:"label" datastore:"label"`
	Environment string `json:"environment" datastore:"environment"`
	Id          string `json:"id" datastore:"id"`
	Description string `json:"description" datastore:"description"`
	OrgId       string `json:"org_id" datastore:"org_id"`
	Created     int64  `json:"created" datastore:"created"`
	Edited      int64  `json:"edited" datastore:"edited"`

	AppAuths []AppAuthenticationStorage `json:"app_auths" datastore:"app_auths,noindex"`
}

func GetAppAuthGroup

func GetAppAuthGroup(ctx context.Context, id string) (*AppAuthenticationGroup, error)

func GetAuthGroups

func GetAuthGroups(ctx context.Context, orgId string) ([]AppAuthenticationGroup, error)

type AppAuthenticationStorage

type AppAuthenticationStorage struct {
	Active            bool                  `json:"active" datastore:"active"`
	Label             string                `json:"label" datastore:"label"`
	Id                string                `json:"id" datastore:"id"`
	App               WorkflowApp           `json:"app" datastore:"app,noindex"`
	Fields            []AuthenticationStore `json:"fields" datastore:"fields"`
	Usage             []AuthenticationUsage `json:"usage" datastore:"usage"`
	WorkflowCount     int64                 `json:"workflow_count" datastore:"workflow_count"`
	NodeCount         int64                 `json:"node_count" datastore:"node_count"`
	OrgId             string                `json:"org_id" datastore:"org_id"`
	Created           int64                 `json:"created" datastore:"created"`
	Edited            int64                 `json:"edited" datastore:"edited"`
	Defined           bool                  `json:"defined" datastore:"defined"`
	Type              string                `json:"type" datastore:"type"`
	Encrypted         bool                  `json:"encrypted" datastore:"encrypted"`
	ReferenceWorkflow string                `json:"reference_workflow" datastore:"reference_workflow"`
	AutoDistribute    bool                  `json:"auto_distribute" datastore:"auto_distribute"`

	Environment       string `json:"environment" datastore:"environment"`               // In case an auth should ALWAYS be mapped to an environment. Can help out with Oauth2 refresh (e.g. running partially on cloud and partially onprem), as well as for KMS. For now ONLY KMS has a frontend.
	SuborgDistributed bool   `json:"suborg_distributed" datastore:"suborg_distributed"` // Decides if it's distributed to suborgs or not

	Validation TypeValidation `json:"validation" datastore:"validation"`
}

func GetAllWorkflowAppAuth

func GetAllWorkflowAppAuth(ctx context.Context, orgId string) ([]AppAuthenticationStorage, error)

func GetOauth2ApplicationPermissionToken

func GetOauth2ApplicationPermissionToken(ctx context.Context, user User, appAuth AppAuthenticationStorage) (AppAuthenticationStorage, error)

func GetWorkflowAppAuthDatastore

func GetWorkflowAppAuthDatastore(ctx context.Context, id string) (*AppAuthenticationStorage, error)

Gets a specific auth for an org

func RunOauth2Request

func RunOauth2Request(ctx context.Context, user User, appAuth AppAuthenticationStorage, refresh bool) (AppAuthenticationStorage, error)

type AppCategory

type AppCategory struct {
	Name           string              `json:"name"`
	Color          string              `json:"color"`
	Icon           string              `json:"icon"`
	ActionLabels   []string            `json:"action_labels"`
	AppLabels      []AppLabel          `json:"app_labels"`
	RequiredFields map[string][]string `json:"required_fields"`
	OptionalFields map[string][]string `json:"optional_fields"`
}

func GetAllAppCategories

func GetAllAppCategories() []AppCategory

FIXME: why are there two?

func GetAppCategories

func GetAppCategories() []AppCategory

For now, just keeping it as a blob.

type AppCategoryLabel

type AppCategoryLabel struct {
	Label          string        `json:"label"`
	FormattedLabel string        `json:"formatted_label"`
	Apps           []WorkflowApp `json:"apps"`
}

type AppContext

type AppContext struct {
	AppName         string `json:"app_name"`
	AppID           string `json:"app_id"`
	ActionName      string `json:"action_name"`
	Label           string `json:"label"`
	ExampleResponse string `json:"example_response,omitempty" datastore:"example_response,noindex"`
	Example         string `json:"example,omitempty" datastore:"example,noindex"`
}

type AppExecutionExample

type AppExecutionExample struct {
	AppName         string   `json:"app_name" datastore:"app_name"`
	AppVersion      string   `json:"app_version" datastore:"app_version"`
	AppAction       string   `json:"app_action" datastore:"app_action"`
	AppId           string   `json:"app_id" datastore:"app_id"`
	ExampleId       string   `json:"example_id" datastore:"example_id"`
	SuccessExamples []string `json:"success_examples" datastore:"success_examples,noindex"`
	FailureExamples []string `json:"failure_examples" datastore:"failure_examples,noindex"`
}

type AppHealth

type AppHealth struct {
	Create      bool   `json:"create"`
	Run         bool   `json:"run"`
	Delete      bool   `json:"delete"`
	Validate    bool   `json:"validate"`
	AppId       string `json:"app_id"`
	Read        bool   `json:"read"`
	Result      string `json:"result"`
	ExecutionID string `json:"execution_id"`
}

func RunOpsAppHealthCheck

func RunOpsAppHealthCheck(apiKey string, orgId string) (AppHealth, error)

func RunOpsAppUpload

func RunOpsAppUpload(apiKey string, orgId string) (AppHealth, error)

type AppInfo

type AppInfo struct {
	SourceApp      ScheduleApp `json:"sourceapp,omitempty" datastore:"sourceapp,noindex"`
	DestinationApp ScheduleApp `json:"destinationapp,omitempty" datastore:"destinationapp,noindex"`
}

type AppLabel

type AppLabel struct {
	AppName    string        `json:"app_name"`
	LargeImage string        `json:"large_image"`
	ID         string        `json:"id"`
	Labels     []LabelStruct `json:"labels"`
}

type AppLabelData

type AppLabelData struct {
	AppName    string   `json:"app_name" datastore:"app_name"`
	AppId      string   `json:"app_id" datastore:"app_id"`
	AppVersion string   `json:"app_version" datastore:"app_version"`
	Categories []string `json:"categories" datastore:"categories"`
	ImageURL   string   `json:"image_url" datastore:"image_url"`

	ActionName string `json:"action_name" datastore:"action_name"`
	Label      string `json:"label" datastore:"label"`
}

type AppMini

type AppMini struct {
	Id                     string         `json:"id"`
	Name                   string         `json:"name"`
	Version                string         `json:"version"`
	LargeImage             string         `json:"large_image"`
	Authentication         Authentication `json:"authentication"`
	AuthenticationRequired bool           `json:"authentication_required"`

	ActionName string `json:"action_name,omitempty"`
	Category   string `json:"category,omitempty"`
}

type AppParser

type AppParser struct {
	Success bool   `json:"success"`
	OpenAPI []byte `json:"openapi"`
	App     []byte `json:"app"`
}

type AppResponse

type AppResponse struct {
	Success bool   `json:"success"`
	Id      string `json:"id"`
	Details string `json:"details"`
}

type AppSearchWrapper

type AppSearchWrapper struct {
	Took     int  `json:"took"`
	TimedOut bool `json:"timed_out"`
	Shards   struct {
		Total      int `json:"total"`
		Successful int `json:"successful"`
		Skipped    int `json:"skipped"`
		Failed     int `json:"failed"`
	} `json:"_shards"`
	Hits struct {
		Total struct {
			Value    int    `json:"value"`
			Relation string `json:"relation"`
		} `json:"total"`
		MaxScore float64 `json:"max_score"`
		Hits     []struct {
			Index  string      `json:"_index"`
			Type   string      `json:"_type"`
			ID     string      `json:"_id"`
			Score  float64     `json:"_score"`
			Source WorkflowApp `json:"_source"`
		} `json:"hits"`
	} `json:"hits"`
}

type AppStats

type AppStats struct {
	TotalSearches    int           `json:"total_searches" datastore:"total_searches"`
	Events           []WidgetPoint `json:"events" datastore:"events"`
	TotalConversions int           `json:"total_conversions" datastore:"total_conversions"`
	TotalClicks      int           `json:"total_clicks" datastore:"total_clicks"`
	AppName          string        `json:"app_name" datastore:"app_name"`
}

type AppUsage

type AppUsage struct {
	AppName string `json:"app_name" datastore:"app_name"`
	AppId   string `json:"app_id" datastore:"app_id"`
	Usage   int64  `json:"usage" datastore:"usage"`
}

type AppVersion

type AppVersion struct {
	Version string `json:"version" datastore:"version"`
	ID      string `json:"id" datastore:"id"`
}

type AppWrapper

type AppWrapper struct {
	Index       string      `json:"_index"`
	Type        string      `json:"_type"`
	ID          string      `json:"_id"`
	Version     int         `json:"_version"`
	SeqNo       int         `json:"_seq_no"`
	PrimaryTerm int         `json:"_primary_term"`
	Found       bool        `json:"found"`
	Source      WorkflowApp `json:"_source"`
}

type Appconfig

type Appconfig struct {
	Key   string `json:"key" datastore:"key"`
	Value string `json:"value" datastore:"value,noindex"`
}

type AtomicOutput

type AtomicOutput struct {
	Success bool   `json:"success"`
	Reason  string `json:"reason"`

	ThreadId   string `json:"thread_id"`              // Thread the assistant ran
	RunId      string `json:"run_id"`                 // Run ID for the thread
	ToolCallID string `json:"tool_call_id,omitempty"` // Result inside the run
}

type Attachment

type Attachment struct {
	ContentTransferEncoding string  `` /* 135-byte string literal not displayed */
	ContentType             string  `description:"Content-Type extracted from the MIME payload" json:"content_type,omitempty" validate:"omitempty"`
	FileExtension           string  `description:"File extension" json:"file_extension,omitempty" validate:"omitempty,isdefault"`
	FileName                string  `description:"File name" json:"file_name,omitempty" validate:"omitempty"`
	FileType                string  `` /* 136-byte string literal not displayed */
	Size                    *int64  `description:"Size of the attachment in bytes" json:"size,omitempty" validate:"omitempty,isdefault"`
	Raw                     *string `description:"Base64 encoded source of the attachment" json:"raw,omitempty" validate:"omitempty"`
}

type AuthGroupWrapper

type AuthGroupWrapper struct {
	Index       string                 `json:"_index"`
	Type        string                 `json:"_type"`
	ID          string                 `json:"_id"`
	Version     int                    `json:"_version"`
	SeqNo       int                    `json:"_seq_no"`
	PrimaryTerm int                    `json:"_primary_term"`
	Found       bool                   `json:"found"`
	Source      AppAuthenticationGroup `json:"_source"`
}

type AuthResults

type AuthResults struct {
	Type         string      `description:"The type of authentication result, derived from the field name" json:"type,omitempty" validate:"omitempty"`
	Instance     string      `description:"Instance number of this auth result (if ARC)" json:"instance,omitempty" validate:"omitempty"`
	CompAuth     *CompAuth   `description:"Composite Authentication result, used by Microsoft O365" json:"compauth,omitempty" validate:"omitempty"`
	DKIM         string      `` /* 162-byte string literal not displayed */
	DKIMDetails  []Signature `description:"List of details of the Domain Keys Identified Mail checks" json:"dkim_details,omitempty" validate:"omitempty"`
	DMARC        string      `` /* 202-byte string literal not displayed */
	DMARCDetails *DMARC      `` /* 147-byte string literal not displayed */
	SPF          string      `` /* 160-byte string literal not displayed */
	SPFDetails   *SPF        `description:"Details of the Sender Policy Framework" json:"spf_details,omitempty" validate:"omitempty"`
	Server       *Domain     `description:"The domain of the verifying mail server" json:"server,omitempty" validate:"omitempty"`
}

type Authentication

type Authentication struct {
	Type         string                 `json:"type" datastore:"type" yaml:"type"`
	Required     bool                   `json:"required" datastore:"required" yaml:"required" `
	Parameters   []AuthenticationParams `json:"parameters" datastore:"parameters" yaml:"parameters"`
	RedirectUri  string                 `json:"redirect_uri" datastore:"redirect_uri" yaml:"redirect_uri"`
	TokenUri     string                 `json:"token_uri" datastore:"token_uri" yaml:"token_uri"`
	RefreshUri   string                 `json:"refresh_uri" datastore:"refresh_uri" yaml:"refresh_uri"`
	Scope        []string               `json:"scope" datastore:"scope" yaml:"scope"`
	ClientId     string                 `json:"client_id" datastore:"client_id"`
	ClientSecret string                 `json:"client_secret" datastore:"client_secret"`
	GrantType    string                 `json:"grant_type" datastore:"grant_type"`
}

type AuthenticationParams

type AuthenticationParams struct {
	Description string           `json:"description" datastore:"description,noindex" yaml:"description"`
	ID          string           `json:"id" datastore:"id" yaml:"id"`
	Name        string           `json:"name" datastore:"name" yaml:"name"`
	Example     string           `json:"example" datastore:"example,noindex" yaml:"example"`
	Value       string           `json:"value,omitempty" datastore:"value,noindex" yaml:"value"`
	Multiline   bool             `json:"multiline" datastore:"multiline" yaml:"multiline"`
	Required    bool             `json:"required" datastore:"required" yaml:"required"`
	In          string           `json:"in" datastore:"in" yaml:"in"`
	Schema      SchemaDefinition `json:"schema" datastore:"schema" yaml:"schema"`
	Scheme      string           `json:"scheme" datastore:"scheme" yaml:"scheme"` // Deprecated
}

type AuthenticationStore

type AuthenticationStore struct {
	Key   string `json:"key" datastore:"key"`
	Value string `json:"value" datastore:"value,noindex"`
}

type AuthenticationUsage

type AuthenticationUsage struct {
	WorkflowId string   `json:"workflow_id" datastore:"workflow_id"`
	Nodes      []string `json:"nodes" datastore:"nodes"`
}

type AuthorizationCode

type AuthorizationCode struct {
	AuthorizationUrl string   `json:"authorizationUrl"`
	RefreshUrl       string   `json:"refreshUrl"`
	Scopes           []string `json:"scopes"`
	TokenUrl         string   `json:"tokenUrl"`
}

type BackupConfig

type BackupConfig struct {
	OnpremBackup bool `json:"onprem_backup" datastore:"onprem_backup"`

	UploadRepo     string `json:"upload_repo" datastore:"upload_repo"`
	UploadBranch   string `json:"upload_branch" datastore:"upload_branch"`
	UploadUsername string `json:"upload_username" datastore:"upload_username"`
	UploadToken    string `json:"upload_token" datastore:"upload_token"`

	TokensEncrypted bool `json:"tokens_encrypted" datastore:"tokens_encrypted"`
}

type BackupJob

type BackupJob struct {
	Version    string `json:"version"`     // Instance version
	LastSignin int64  `json:"last_signin"` // Last time user signed in

	Stats     ExecutionInfo `json:"stats"`
	Workflows []Workflow    `json:"workflows"`
	Apps      []WorkflowApp `json:"apps"`
}

Anonymized data that is sent to the cloud as backup. Saved in your organization and region

type BaseFile

type BaseFile struct {
	Name               string   `json:"name"`
	ID                 string   `json:"id"`
	Type               string   `json:"type"`
	UpdatedAt          int64    `json:"updated_at"`
	Md5Sum             string   `json:"md5_sum"`
	Status             string   `json:"status"`
	FileSize           int64    `json:"filesize"`
	OrgId              string   `json:"org_id"`
	SuborgDistribution []string `json:"suborg_distribution"`
}

type Billing

type Billing struct {
	Email          string           `json:"Email" datastore:"Email"`
	AlertThreshold []AlertThreshold `json:"AlertThreshold" datastore:"AlertThreshold"`
	Consultation   Consultation     `json:"Consultation" datastore:"Consultation"`
}

type Body

type Body struct {
	HTML  *BodyText `description:"The body part containing content-type text/html" json:"html,omitempty" validate:"omitempty"`
	Plain *BodyText `description:"The body part containing content-type text/plain" json:"plain,omitempty" validate:"omitempty"`
	IPs   []IP      `description:"IP Addresses located in the body" json:"ips,omitempty" validate:"omitempty"`
	Links []Link    `` /* 128-byte string literal not displayed */
}

type BodyText

type BodyText struct {
	Raw                     *string `description:"Decoded raw content of a body text type (text/[subtype] section)" json:"raw,omitempty" validate:"omitempty"`
	Charset                 string  `description:"charset of the text/[subtype]" json:"charset,omitempty" validate:"omitempty"`
	ContentTransferEncoding string  `description:"Content-Transfer-Encoding of the text/[subtype]" json:"content_transfer_encoding,omitempty" validate:"omitempty"`
}

type Branch

type Branch struct {
	DestinationID string      `json:"destination_id" datastore:"destination_id"`
	ID            string      `json:"id" datastore:"id"`
	SourceID      string      `json:"source_id" datastore:"source_id"`
	Label         string      `json:"label" datastore:"label"`
	HasError      bool        `json:"has_errors" datastore: "has_errors"`
	Conditions    []Condition `json:"conditions" datastore: "conditions"`
	Decorator     bool        `json:"decorator" datastore:"decorator"`

	ParentControlled bool   `json:"parent_controlled" datastore:"parent_controlled"` // If the parent workflow node exists, and shouldn't be editable by child workflow
	SourceParent     string `json:"source_parent" datastore:"source_parent"`         // Parent node of the actual source we use. Mainly added for handling else/if-s in branches. Automatically happens during workflow saves (frontend for now)
}

type BuildLaterStruct

type BuildLaterStruct struct {
	Tags  []string
	Extra string
	Id    string
}

type CacheKeyData

type CacheKeyData struct {
	Success       bool   `json:"success" datastore:"Success"`
	WorkflowId    string `json:"workflow_id," datastore:"WorkflowId"`
	ExecutionId   string `json:"execution_id,omityempty" datastore:"ExecutionId"`
	Authorization string `json:"authorization,omitempty" datastore:"Authorization"`
	OrgId         string `json:"org_id,omitempty" datastore:"OrgId"`
	Key           string `json:"key" datastore:"Key"`
	Value         string `json:"value" datastore:"Value,noindex"`
	Category      string `json:"category" datastore:"category"`

	Created int64 `json:"created" datastore:"Created"`
	Edited  int64 `json:"edited" datastore:"Edited"`

	FormattedKey        string   `json:"formatted_key,omitempty" datastore:"FormattedKey"`
	PublicAuthorization string   `json:"public_authorization,omitempty" datastore:"PublicAuthorization"` // Used for public authorization
	SuborgDistribution  []string `json:"suborg_distribution" datastore:"suborg_distribution"`
}

func GetAllCacheKeys

func GetAllCacheKeys(ctx context.Context, orgId string, category string, max int, inputcursor string) ([]CacheKeyData, string, error)

func GetCacheKey

func GetCacheKey(ctx context.Context, id string, category string) (*CacheKeyData, error)

Used for cache for individual organizations

type CacheKeySearchWrapper

type CacheKeySearchWrapper struct {
	Took     int  `json:"took"`
	TimedOut bool `json:"timed_out"`
	Shards   struct {
		Total      int `json:"total"`
		Successful int `json:"successful"`
		Skipped    int `json:"skipped"`
		Failed     int `json:"failed"`
	} `json:"_shards"`
	Hits struct {
		Total struct {
			Value    int    `json:"value"`
			Relation string `json:"relation"`
		} `json:"total"`
		MaxScore float64 `json:"max_score"`
		Hits     []struct {
			Index  string       `json:"_index"`
			Type   string       `json:"_type"`
			ID     string       `json:"_id"`
			Score  float64      `json:"_score"`
			Source CacheKeyData `json:"_source"`
		} `json:"hits"`
	} `json:"hits"`
}

type CacheKeyWrapper

type CacheKeyWrapper struct {
	Index       string       `json:"_index"`
	Type        string       `json:"_type"`
	ID          string       `json:"_id"`
	Version     int          `json:"_version"`
	SeqNo       int          `json:"_seq_no"`
	PrimaryTerm int          `json:"_primary_term"`
	Found       bool         `json:"found"`
	Source      CacheKeyData `json:"_source"`
}

type CacheReturn

type CacheReturn struct {
	Success bool           `json:"success"`
	Keys    []CacheKeyData `json:"keys"`
	Cursor  string         `json:"cursor"`
}

Create struct

type Categories

type Categories struct {
	SIEM          Category `json:"siem" datastore:"siem"`
	Communication Category `json:"communication" datastore:"communication"`
	Assets        Category `json:"assets" datastore:"assets"`
	Cases         Category `json:"cases" datastore:"cases"`
	Network       Category `json:"network" datastore:"network"`
	Intel         Category `json:"intel" datastore:"intel"`
	EDR           Category `json:"edr" datastore:"edr"`
	IAM           Category `json:"iam" datastore:"IAM"`
	AI            Category `json:"ai" datastore:"ai"`

	Email Category `json:"email" datastore:"email"`
	Other Category `json:"other" datastore:"other"`
}

func HandleCategoryIncrease

func HandleCategoryIncrease(categories Categories, action Action, workflowapps []WorkflowApp) Categories

type Category

type Category struct {
	Name        string `json:"name" datastore:"name"`
	Count       int64  `json:"count" datastore:"count"`
	ID          string `json:"id" datastore:"id"`
	Description string `json:"description" datastore:"description,noindex"`
	LargeImage  string `json:"large_image" datastore:"large_image,noindex"`
}

type CategoryAction

type CategoryAction struct {
	AppName string         `json:"app_name"`
	Label   string         `json:"label"`
	Fields  []Valuereplace `json:"fields"`

	// Optional~
	AppVersion     string         `json:"app_version"`
	AppId          string         `json:"app_id"`
	ActionName     string         `json:"action_name"`
	Category       string         `json:"category"`
	OptionalFields []Valuereplace `json:"optional_fields"`

	OrgId            string `json:"org_id"`
	WorkflowId       string `json:"workflow_id"` // Forces it to use a specific workflow ID. This can be used to build multiple steps in the same workflow
	AuthenticationId string `json:"authentication_id"`

	Step                  int64  `json:"step"`                    // The step to use put it in a workflow if generated
	Query                 string `json:"query,omitempty"`         // Due to the API being built around programmatic, and then with LLMs, this was added to make context possible between nodes when using Atomic Actions
	DryRun                bool   `json:"dry_run"`                 // If true, it will not actually execute the action, but instead just build the workflow
	SkipWorkflow          bool   `json:"skip_workflow"`           // If true, it will not put it in a workflow, but instead just execute it
	SkipOutputTranslation bool   `json:"skip_output_translation"` // If true, it will not translate the output to the default format for the label
	Environment           string `json:"environment"`             // The environment to use for the action (Orborus)
	App                   string `jjson:"app"`                    // The app to use for the action (Orborus)
	Action                string `json:"action"`                  // The action to use for the action (Orborus)
}

type CategoryActionFieldOverride

type CategoryActionFieldOverride struct {
	Fields map[string]interface{} `json:"fields"`
}

type CloudSyncJob

type CloudSyncJob struct {
	Id            string `json:"id" datastore:"id"`
	Type          string `json:"type" datastore:"type"`
	Action        string `json:"action" datastore:"action"`
	OrgId         string `json:"org_id" datastore:"org_id"`
	PrimaryItemId string `json:"primary_item_id" datastore:"primary_item_id"`
	SecondaryItem string `json:"secondary_item" datastore:"secondary_item"`
	ThirdItem     string `json:"third_item" datastore:"third_item"`
	FourthItem    string `json:"fourth_item" datastore:"fourth_item"`
	FifthItem     string `json:"fifth_item" datastore:"fifth_item"`
	Created       string `json:"created" datastore:"created"`
}

Primary = usually an outer ID, e.g. workflow ID Secondary = something to specify what inside workflow to execute Third = Some data to add to it

type CodeVerifier

type CodeVerifier struct {
	Value string
}

func CreateCodeVerifierFromBytes

func CreateCodeVerifierFromBytes(b []byte) (*CodeVerifier, error)

func (*CodeVerifier) CodeChallengeS256

func (v *CodeVerifier) CodeChallengeS256() string

type Comment

type Comment struct {
	ID              string `json:"id" datastore:"id"`
	Label           string `json:"label" datastore:"label"`
	Type            string `json:"type" datastore:"type"`
	IsValid         bool   `json:"is_valid" datastore:"is_valid"`
	Decorator       bool   `json:"decorator" datastore:"decorator"`
	Width           int64  `json:"width" datastore:"width"`
	Height          int64  `json:"height" datastore:"height"`
	Color           string `json:"color" datastore:"color"`
	BackgroundColor string `json:"backgroundcolor" datastore:"backgroundcolor"`
	Position        struct {
		X float64 `json:"x" datastore:"x"`
		Y float64 `json:"y" datastore:"y"`
	} `json:"position"`
}

type CompAuth

type CompAuth struct {
	Verdict string `description:"Verdict of the compauth" json:"verdict" validate:"required"`
	Reason  string `description:"Reason for the verdict" json:"reason" validate:"required"`
}

type Condition

type Condition struct {
	Source      WorkflowAppActionParameter `json:"source" datastore:"source"`
	Condition   WorkflowAppActionParameter `json:"condition" datastore:"condition"`
	Destination WorkflowAppActionParameter `json:"destination" datastore:"destination"`
}

Same format for a lot of stuff

type Consultation

type Consultation struct {
	Hours   string `json:"hours" datastore:"hours"`
	Minutes string `json:"minutes" datastore:"minutes"`
}

type Contact

type Contact struct {
	Firstname     string   `json:"firstname"`
	Lastname      string   `json:"lastname"`
	Title         string   `json:"title"`
	Companyname   string   `json:"companyname"`
	Phone         string   `json:"phone"`
	Email         string   `json:"email"`
	ValidateEmail string   `json:"validate_email"`
	Message       string   `json:"message"`
	DealType      string   `json:"dealtype"`
	DealCountry   string   `json:"dealcountry"`
	Category      string   `json:"Category"`
	Interests     []string `json:"interests"`
}

type ContributionCount

type ContributionCount struct {
	Count int64 `datastore:"contribution_count" json:"contribution_count"`
}

type Conversionevents

type Conversionevents struct {
	Id          string        `json:"id" datastore:"id"`
	Name        string        `json:"name" datastore:"name"`
	Type        string        `json:"type" datastore:"type"`
	Events      []WidgetPoint `json:"events" datastore:"events"`
	Invalid     bool          `json:"invalid" datastore:"invalid"`
	Verified    bool          `json:"verified" datastore:"verified"`
	Orgs        int           `json:"orgs" datastore:"orgs"`
	Searches    int           `json:"searches" datastore:"searches"`
	Clicks      int           `json:"clicks" datastore:"clicks"`
	Conversions int           `json:"conversions" datastore:"conversions"`
	Forks       int           `json:"forks" datastore:"forks"`
	EditedForks int           `json:"edited_forks" datastore:"edited_forks"`
	Success     bool          `json:"success"`
}

func GetAppStats

func GetAppStats(ctx context.Context, id string) (*Conversionevents, error)

type CreatorInfo

type CreatorInfo struct {
	Username string `json:"username"`
	Image    string `json:"image"`
}

type CreatorStats

type CreatorStats struct {
	Creator          string     `json:"creator" datastore:"creator"`
	Apps             int        `json:"apps" datastore:"apps"`
	MostClickedApp   string     `json:"most_clicked_app" datastore:"most_clicked_app"`
	MostConversedApp string     `json:"most_conversed_app" datastore:"most_conversed_app"`
	Verified         bool       `json:"verified" datastore:"verified"`
	Workflows        int        `json:"workflows" datastore:"workflows"`
	AppStats         []AppStats `json:"app_stats" datastore:"app_stats"`
}

func GetCreatorStats

func GetCreatorStats(ctx context.Context, creatorName string, startDate string, endDate string) ([]CreatorStats, error)

type DMARC

type DMARC struct {
	Version     *string `description:"DMARC version" json:"version" validate:"omitempty"`
	Verdict     *string `description:"Verdict of the DMARC" json:"verdict" validate:"omitempty"`
	Action      *string `description:"Action" json:"action" validate:"omitempty"`
	Policy      *string `description:"Policy for the organizational domain" json:"policy,omitempty" validate:"omitempty"`
	SubPolicy   *string `description:"Policy for the subdomain of the organizational domain" json:"sub_policy,omitempty" validate:"omitempty"`
	Disposition *string `description:"Gmail-applied policy" json:"disposition,omitempty" validate:"omitempty"`
	From        *Domain `description:"Domain of the server that checked the SPF" json:"from,omitempty" validate:"omitempty"`
}

type DailyStatistics

type DailyStatistics struct {
	Date time.Time `json:"date" datastore:"date"`

	AppExecutions              int64 `json:"app_executions" datastore:"app_executions"`
	ChildAppExecutions         int64 `json:"child_app_executions" datastore:"child_app_executions"`
	AppExecutionsFailed        int64 `json:"app_executions_failed" datastore:"app_executions_failed"`
	SubflowExecutions          int64 `json:"subflow_executions" datastore:"subflow_executions"`
	WorkflowExecutions         int64 `json:"workflow_executions" datastore:"workflow_executions"`
	WorkflowExecutionsFinished int64 `json:"workflow_executions_finished" datastore:"workflow_executions_finished"`
	WorkflowExecutionsFailed   int64 `json:"workflow_executions_failed" datastore:"workflow_executions_failed"`
	OrgSyncActions             int64 `json:"org_sync_actions" datastore:"org_sync_actions"`
	CloudExecutions            int64 `json:"cloud_executions" datastore:"cloud_executions"`
	OnpremExecutions           int64 `json:"onprem_executions" datastore:"onprem_executions"`
	AIUsage                    int64 `json:"ai_executions" datastore:"ai_executions"`

	ApiUsage int64      `json:"api_usage" datastore:"api_usage"`
	AppUsage []AppUsage `json:"app_usage" datastore:"app_usage"`

	Additions []AdditionalUseConfig `json:"additions,omitempty" datastore:"additions"`
}

Should be for a particular day Reset is handled during caching. If the date is not today, then the reset is handled

type DataToSend

type DataToSend struct {
	Code         string `json:"code"  datastore:"code" url:"code,omitempty"`
	GrantType    string `json:"grant_type"  datastore:"grant_type" url:"grant_type,omitempty"`
	ClientSecret string `json:"client_secret"  datastore:"client_secret" url:"client_secret,omitempty"`
	ClientId     string `json:"client_id"  datastore:"client_id" url:"client_id,omitempty"`
	Scope        string `json:"scope"  datastore:"scope" url:"scope,omitempty"`
	RedirectUri  string `json:"redirect_uri" datastore:"id" url:"redirect_uri,omitempty"`
	Name         string `json:"name,omitempty"  datastore:"name" url:"name,omitempty"`
	Id           string `json:"id,omitempty" datastore:"id" url:"id,omitempty"`
	Resource     string `json:"resource,omitempty" datastore:"resource" url:"resource,omitempty"`
}

The data to be parsed

func GetHostedOAuth

func GetHostedOAuth(ctx context.Context, id string) (*DataToSend, error)

Finds custom oauth2 secret etc. based on

type DealSearchWrapper

type DealSearchWrapper struct {
	Took     int  `json:"took"`
	TimedOut bool `json:"timed_out"`
	Shards   struct {
		Total      int `json:"total"`
		Successful int `json:"successful"`
		Skipped    int `json:"skipped"`
		Failed     int `json:"failed"`
	} `json:"_shards"`
	Hits struct {
		Total struct {
			Value    int    `json:"value"`
			Relation string `json:"relation"`
		} `json:"total"`
		MaxScore float64 `json:"max_score"`
		Hits     []struct {
			Index  string       `json:"_index"`
			Type   string       `json:"_type"`
			ID     string       `json:"_id"`
			Score  float64      `json:"_score"`
			Source ResellerDeal `json:"_source"`
		} `json:"hits"`
	} `json:"hits"`
}

type Defaults

type Defaults struct {
	AppDownloadRepo        string `json:"app_download_repo" datastore:"app_download_repo"`
	AppDownloadBranch      string `json:"app_download_branch" datastore:"app_download_branch"`
	WorkflowDownloadRepo   string `json:"workflow_download_repo" datastore:"workflow_download_repo"`
	WorkflowDownloadBranch string `json:"workflow_download_branch" datastore:"workflow_download_branch"`
	NotificationWorkflow   string `json:"notification_workflow" datastore:"notification_workflow"`
	DocumentationReference string `json:"documentation_reference" datastore:"documentation_reference"`

	WorkflowUploadRepo     string `json:"workflow_upload_repo" datastore:"workflow_upload_repo"`
	WorkflowUploadBranch   string `json:"workflow_upload_branch" datastore:"workflow_upload_branch"`
	WorkflowUploadUsername string `json:"workflow_upload_username" datastore:"workflow_upload_username"`
	WorkflowUploadToken    string `json:"workflow_upload_token" datastore:"workflow_upload_token"`

	TokensEncrypted bool `json:"tokens_encrypted" datastore:"tokens_encrypted"`

	NewsletterDisabled            bool `json:"newsletter" datastore:"newsletter_disabled"`
	WeeklyRecommendationsDisabled bool `json:"weekly_recommendations" datastore:"weekly_recommendations_disabled"`

	KmsId string `json:"kms_id" datastore:"kms_id"`
}

type DetectionFileInfo

type DetectionFileInfo struct {
	FileName    string `json:"file_name" yaml:"file_name"`
	RuleTitle   string `json:"title" yaml:"title"`
	Description string `json:"description" yaml:"description"`
	FileId      string `json:"file_id"`
	IsEnabled   bool   `json:"is_enabled"`
}

type DetectionResponse

type DetectionResponse struct {
	Title             string              `json:"title"`
	DetectionName     string              `json:"detection_name"`
	Category          string              `json:"category"`
	OrgId             string              `json:"org_id"`
	DetectionInfo     []DetectionFileInfo `json:"detection_info"`
	FolderDisabled    bool                `json:"folder_disabled"`
	IsConnectorActive bool                `json:"is_connector_active"`

	DownloadRepo string `json:"download_repo"`
}

func GetPublicDetections

func GetPublicDetections() []DetectionResponse

type DisabledHookWrapper

type DisabledHookWrapper struct {
	Index       string        `json:"_index"`
	Type        string        `json:"_type"`
	ID          string        `json:"_id"`
	Version     int           `json:"_version"`
	SeqNo       int           `json:"_seq_no"`
	PrimaryTerm int           `json:"_primary_term"`
	Found       bool          `json:"found"`
	Source      DisabledRules `json:"_source"`
}

type DisabledRules

type DisabledRules struct {
	Files           []File `json:"files"        datastore:"files"`
	DisabledFolder  bool   `json:"disabled_folder" datastore:"disabled_folder"`
	DetectionActive string `json:"detection_active"  datastore:"detection_active"`
	LastActive      int64  `json:"last_active" datastore:"last_active"`
}

func GetDisabledRules

func GetDisabledRules(ctx context.Context, orgId string) (*DisabledRules, error)

type DockerRequestCheck

type DockerRequestCheck struct {
	Name  string `datastore:"name" json:"name" yaml:"name"`
	Image string `datastore:"image" json:"image" yaml:"image"`
}

type Domain

type Domain struct {
	Domain     string `` /* 216-byte string literal not displayed */
	RootDomain string `description:"The root domain, including the TLD" json:"root_domain,omitempty" validate:"omitempty"`
	Sld        string `description:"Second-level domain, e.g. 'windows' for the domain 'windows.net'" json:"sld,omitempty" validate:"omitempty"`
	Subdomain  string `description:"Subdomain, e.g. 'drive' for the domain 'drive.google.com'" json:"subdomain,omitempty" validate:"omitempty"`
	Tld        string `description:"The domain's top-level domain. E.g. the TLD of google.com is 'com'" json:"tld,omitempty" validate:"omitempty"`
	Valid      bool   `description:"Whether the domain is valid" json:"valid,omitempty" validate:"omitempty"`
}

type EmailAddress

type EmailAddress struct {
	Email     string `description:"Full email address" json:"email" validate:"required"`
	LocalPart string `description:"Local-part, i.e. before the @" json:"local_part" validate:"required"`
	Domain    Domain `description:"Domain of the email address" json:"domain,omitempty" validate:"omitempty"`
}

type EnvWrapper

type EnvWrapper struct {
	Index       string      `json:"_index"`
	Type        string      `json:"_type"`
	ID          string      `json:"_id"`
	Version     int         `json:"_version"`
	SeqNo       int         `json:"_seq_no"`
	PrimaryTerm int         `json:"_primary_term"`
	Found       bool        `json:"found"`
	Source      Environment `json:"_source"`
}

type EnvironentSearchWrapper

type EnvironentSearchWrapper struct {
	Took     int  `json:"took"`
	TimedOut bool `json:"timed_out"`
	Shards   struct {
		Total      int `json:"total"`
		Successful int `json:"successful"`
		Skipped    int `json:"skipped"`
		Failed     int `json:"failed"`
	} `json:"_shards"`
	Hits struct {
		Total struct {
			Value    int    `json:"value"`
			Relation string `json:"relation"`
		} `json:"total"`
		MaxScore float64 `json:"max_score"`
		Hits     []struct {
			Index  string      `json:"_index"`
			Type   string      `json:"_type"`
			ID     string      `json:"_id"`
			Score  float64     `json:"_score"`
			Source Environment `json:"_source"`
		} `json:"hits"`
	} `json:"hits"`
}

type Environment

type Environment struct {
	Name       string `datastore:"name"`
	Type       string `datastore:"type"`
	Registered bool   `datastore:"registered"`
	Default    bool   `datastore:"default" json:"default"`
	Archived   bool   `datastore:"archived" json:"archived"`
	Id         string `datastore:"id" json:"id"`
	OrgId      string `datastore:"org_id" json:"org_id"`
	Created    int64  `json:"created" datastore:"created"`
	Edited     int64  `json:"edited" datastore:"edited"`
	Checkin    int64  `json:"checkin" datastore:"checkin"`
	RunningIp  string `json:"running_ip" datastore:"running_ip"`
	Auth       string `json:"auth" datastore:"auth"`
	Queue      int    `json:"queue" datastore:"queue"`

	Licensed bool       `json:"licensed" datastore:"licensed"`
	RunType  string     `json:"run_type" datastore:"run_type"`
	DataLake LakeConfig `json:"data_lake" datastore:"data_lake"`

	SuborgDistribution []string `json:"suborg_distribution" datastore:"suborg_distribution"`
}

FIXME: DONT FIX ME! If you add JSON object handling, it will break frontend.

func GetEnvironment

func GetEnvironment(ctx context.Context, id, orgId string) (*Environment, error)

func GetEnvironments

func GetEnvironments(ctx context.Context, orgId string) ([]Environment, error)

type EnvironmentSearchWrapper

type EnvironmentSearchWrapper struct {
	Took     int  `json:"took"`
	TimedOut bool `json:"timed_out"`
	Shards   struct {
		Total      int `json:"total"`
		Successful int `json:"successful"`
		Skipped    int `json:"skipped"`
		Failed     int `json:"failed"`
	} `json:"_shards"`
	Hits struct {
		Total struct {
			Value    int    `json:"value"`
			Relation string `json:"relation"`
		} `json:"total"`
		MaxScore float64 `json:"max_score"`
		Hits     []struct {
			Index  string      `json:"_index"`
			Type   string      `json:"_type"`
			ID     string      `json:"_id"`
			Score  float64     `json:"_score"`
			Source Environment `json:"_source"`
		} `json:"hits"`
	} `json:"hits"`
}

type EthInfo

type EthInfo struct {
	Account string `datastore:"account" json:"account"`
	Balance string `datastore:"balance" json:"balance"`
}

type ExecInfo

type ExecInfo struct {
	OnpremExecution bool
	CloudExec       bool
	Environments    []string
	ImageNames      []string
}

type ExecRequestSearchWrapper

type ExecRequestSearchWrapper struct {
	Took     int  `json:"took"`
	TimedOut bool `json:"timed_out"`
	Shards   struct {
		Total      int `json:"total"`
		Successful int `json:"successful"`
		Skipped    int `json:"skipped"`
		Failed     int `json:"failed"`
	} `json:"_shards"`
	Hits struct {
		Total struct {
			Value    int    `json:"value"`
			Relation string `json:"relation"`
		} `json:"total"`
		MaxScore float64 `json:"max_score"`
		Hits     []struct {
			Index  string           `json:"_index"`
			Type   string           `json:"_type"`
			ID     string           `json:"_id"`
			Score  float64          `json:"_score"`
			Source ExecutionRequest `json:"_source"`
		} `json:"hits"`
	} `json:"hits"`
}

type ExecRequestWrapper

type ExecRequestWrapper struct {
	Index       string           `json:"_index"`
	Type        string           `json:"_type"`
	ID          string           `json:"_id"`
	Version     int              `json:"_version"`
	SeqNo       int              `json:"_seq_no"`
	PrimaryTerm int              `json:"_primary_term"`
	Found       bool             `json:"found"`
	Source      ExecutionRequest `json:"_source"`
}

type ExecWrapper

type ExecWrapper struct {
	Index       string            `json:"_index"`
	Type        string            `json:"_type"`
	ID          string            `json:"_id"`
	Version     int               `json:"_version"`
	SeqNo       int               `json:"_seq_no"`
	PrimaryTerm int               `json:"_primary_term"`
	Found       bool              `json:"found"`
	Source      WorkflowExecution `json:"_source"`
}

type ExecutionInfo

type ExecutionInfo struct {
	// These have been configured for cache updates in db-connector.go with 5 hour (300 minutes) timeouts before dumping
	OrgId   string `json:"org_id" datastore:"org_id"`
	OrgName string `json:"org_name" datastore:"org_name"`

	LastCleared int64 `json:"last_cleared" datastore:"last_cleared"`

	DailyStatistics []DailyStatistics `json:"daily_statistics" datastore:"daily_statistics"`
	OnpremStats     []DailyStatistics `json:"onprem_stats,omitempty" datastore:"onprem_stats"`

	TotalAppExecutions              int64 `json:"total_app_executions" datastore:"total_app_executions"`
	TotalChildAppExecutions         int64 `json:"total_child_app_executions" datastore:"total_child_app_executions"`
	TotalAppExecutionsFailed        int64 `json:"total_app_executions_failed" datastore:"total_app_executions_failed"`
	TotalSubflowExecutions          int64 `json:"total_subflow_executions" datastore:"total_subflow_executions"`
	TotalWorkflowExecutions         int64 `json:"total_workflow_executions" datastore:"total_workflow_executions"`
	TotalWorkflowExecutionsFinished int64 `json:"total_workflow_executions_finished" datastore:"total_workflow_executions_finished"`
	TotalWorkflowExecutionsFailed   int64 `json:"total_workflow_executions_failed" datastore:"total_workflow_executions_failed"`
	TotalOrgSyncActions             int64 `json:"total_org_sync_actions" datastore:"total_org_sync_actions"`
	TotalCloudExecutions            int64 `json:"total_cloud_executions" datastore:"total_cloud_executions"`
	TotalOnpremExecutions           int64 `json:"total_onprem_executions" datastore:"total_onprem_executions"`
	TotalAIUsage                    int64 `json:"total_ai_executions" datastore:"total_ai_executions"`

	MonthlyApiUsage                   int64 `json:"monthly_api_usage,omitempty" datastore:"monthly_api_usage"`
	MonthlyChildAppExecutions         int64 `json:"monthly_child_app_executions,omitempty" datastore:"monthly_child_app_executions"`
	MonthlyAppExecutions              int64 `json:"monthly_app_executions,omitempty" datastore:"monthly_app_executions"`
	MonthlyAppExecutionsFailed        int64 `json:"monthly_app_executions_failed,omitempty" datastore:"monthly_app_executions_failed"`
	MonthlySubflowExecutions          int64 `json:"monthly_subflow_executions,omitempty" datastore:"monthly_subflow_executions"`
	MonthlyWorkflowExecutions         int64 `json:"monthly_workflow_executions,omitempty" datastore:"monthly_workflow_executions"`
	MonthlyWorkflowExecutionsFinished int64 `json:"monthly_workflow_executions_finished,omitempty" datastore:"monthly_workflow_executions_finished"`
	MonthlyWorkflowExecutionsFailed   int64 `json:"monthly_workflow_executions_failed,omitempty" datastore:"monthly_workflow_executions_failed"`
	MonthlyOrgSyncActions             int64 `json:"monthly_org_sync_actions,omitempty" datastore:"monthly_org_sync_actions"`
	MonthlyCloudExecutions            int64 `json:"monthly_cloud_executions,omitempty" datastore:"monthly_cloud_executions"`
	MonthlyOnpremExecutions           int64 `json:"monthly_onprem_executions,omitempty" datastore:"monthly_onprem_executions"`
	MonthlyAIUsage                    int64 `json:"monthly_ai_executions,omitempty" datastore:"monthly_ai_executions"`

	WeeklyAppExecutions              int64 `json:"weekly_app_executions,omitempty" datastore:"weekly_app_executions"`
	WeeklyChildAppExecutions         int64 `json:"weekly_child_app_executions,omitempty" datastore:"weekly_child_app_executions"`
	WeeklyAppExecutionsFailed        int64 `json:"weekly_app_executions_failed,omitempty" datastore:"weekly_app_executions_failed"`
	WeeklySubflowExecutions          int64 `json:"weekly_subflow_executions,omitempty" datastore:"weekly_subflow_executions"`
	WeeklyWorkflowExecutions         int64 `json:"weekly_workflow_executions,omitempty" datastore:"weekly_workflow_executions"`
	WeeklyWorkflowExecutionsFinished int64 `json:"weekly_workflow_executions_finished,omitempty" datastore:"weekly_workflow_executions_finished"`
	WeeklyWorkflowExecutionsFailed   int64 `json:"weekly_workflow_executions_failed,omitempty" datastore:"weekly_workflow_executions_failed"`
	WeeklyOrgSyncActions             int64 `json:"weekly_org_sync_actions,omitempty" datastore:"weekly_org_sync_actions"`
	WeeklyCloudExecutions            int64 `json:"weekly_cloud_executions,omitempty" datastore:"weekly_cloud_executions"`
	WeeklyOnpremExecutions           int64 `json:"weekly_onprem_executions,omitempty" datastore:"weekly_onprem_executions"`
	WeeklyAIUsage                    int64 `json:"weekly_ai_executions,omitempty" datastore:"weekly_ai_executions"`

	DailyAppExecutions              int64 `json:"daily_app_executions" datastore:"daily_app_executions"`
	DailyChildAppExecutions         int64 `json:"daily_child_app_executions" datastore:"daily_child_app_executions"`
	DailyAppExecutionsFailed        int64 `json:"daily_app_executions_failed" datastore:"daily_app_executions_failed"`
	DailySubflowExecutions          int64 `json:"daily_subflow_executions" datastore:"daily_subflow_executions"`
	DailyWorkflowExecutions         int64 `json:"daily_workflow_executions" datastore:"daily_workflow_executions"`
	DailyWorkflowExecutionsFinished int64 `json:"daily_workflow_executions_finished" datastore:"daily_workflow_executions_finished"`
	DailyWorkflowExecutionsFailed   int64 `json:"daily_workflow_executions_failed" datastore:"daily_workflow_executions_failed"`
	DailyOrgSyncActions             int64 `json:"daily_org_sync_actions" datastore:"daily_org_sync_actions"`
	DailyCloudExecutions            int64 `json:"daily_cloud_executions" datastore:"daily_cloud_executions"`
	DailyOnpremExecutions           int64 `json:"daily_onprem_executions" datastore:"daily_onprem_executions"`
	DailyAIUsage                    int64 `json:"daily_ai_executions" datastore:"daily_ai_executions"`

	HourlyAppExecutions              int64 `json:"hourly_app_executions,omitempty" datastore:"hourly_app_executions"`
	HourlyChildAppExecutions         int64 `json:"hourly_child_app_executions,omitempty" datastore:"hourly_child_app_executions"`
	HourlyAppExecutionsFailed        int64 `json:"hourly_app_executions_failed,omitempty" datastore:"hourly_app_executions_failed"`
	HourlySubflowExecutions          int64 `json:"hourly_subflow_executions,omitempty" datastore:"hourly_subflow_executions"`
	HourlyWorkflowExecutions         int64 `json:"hourly_workflow_executions,omitempty" datastore:"hourly_workflow_executions"`
	HourlyWorkflowExecutionsFinished int64 `json:"hourly_workflow_executions_finished,omitempty" datastore:"hourly_workflow_executions_finished"`
	HourlyWorkflowExecutionsFailed   int64 `json:"hourly_workflow_executions_failed,omitempty" datastore:"hourly_workflow_executions_failed"`
	HourlyOrgSyncActions             int64 `json:"hourly_org_sync_actions,omitempty" datastore:"hourly_org_sync_actions"`
	HourlyCloudExecutions            int64 `json:"hourly_cloud_executions,omitempty" datastore:"hourly_cloud_executions"`
	HourlyOnpremExecutions           int64 `json:"hourly_onprem_executions,omitempty" datastore:"hourly_onprem_executions"`
	HourlyAIUsage                    int64 `json:"hourly_ai_executions,omitempty" datastore:"hourly_ai_executions"`

	// These are just here in case we get use of them
	TotalApiUsage int64 `json:"total_api_usage" datastore:"total_api_usage"`
	DailyApiUsage int64 `json:"daily_api_usage" datastore:"daily_api_usage"`

	Additions             []AdditionalUseConfig `json:"additions,omitempty" datastore:"additions"`
	LastMonthlyResetMonth int                   `json:"last_monthly_reset_month" datastore:"last_monthly_reset_month"`
}

Used to be related to users, now related to orgs. Not directly, but being updated by org actions

func GetOrgStatistics

func GetOrgStatistics(ctx context.Context, orgId string) (*ExecutionInfo, error)

func HandleIncrement

func HandleIncrement(dataType string, orgStatistics *ExecutionInfo, increment uint) *ExecutionInfo

type ExecutionInfoWrapper

type ExecutionInfoWrapper struct {
	Index       string        `json:"_index"`
	Type        string        `json:"_type"`
	ID          string        `json:"_id"`
	Version     int           `json:"_version"`
	SeqNo       int           `json:"_seq_no"`
	PrimaryTerm int           `json:"_primary_term"`
	Found       bool          `json:"found"`
	Source      ExecutionInfo `json:"_source"`
}

type ExecutionRequest

type ExecutionRequest struct {
	ExecutionId       string   `json:"execution_id"`
	ExecutionArgument string   `json:"execution_argument"`
	ExecutionSource   string   `json:"execution_source"`
	WorkflowId        string   `json:"workflow_id"`
	Environments      []string `json:"environments"`
	Authorization     string   `json:"authorization"`
	Status            string   `json:"status"`
	Start             string   `json:"start"`
	Type              string   `json:"type"`
	Priority          int64    `json:"priority" datastore:"priority" yaml:"priority"` // Mapped back to workflowexecutions' priority

	Authgroup string `json:"authgroup" datastore:"authgroup"`
}

type ExecutionRequestWrapper

type ExecutionRequestWrapper struct {
	Data []ExecutionRequest `json:"data"`
}

func GetWorkflowQueue

func GetWorkflowQueue(ctx context.Context, id string, limit int) (ExecutionRequestWrapper, error)

type ExecutionReturn

type ExecutionReturn struct {
	Success    bool                `json:"success"`
	Executions []WorkflowExecution `json:"executions"`
	Cursor     string              `json:"cursor"`
}

Create struct

type ExecutionSearchWrapper

type ExecutionSearchWrapper struct {
	Took     int  `json:"took"`
	TimedOut bool `json:"timed_out"`
	Shards   struct {
		Total      int `json:"total"`
		Successful int `json:"successful"`
		Skipped    int `json:"skipped"`
		Failed     int `json:"failed"`
	} `json:"_shards"`
	Hits struct {
		Total struct {
			Value    int    `json:"value"`
			Relation string `json:"relation"`
		} `json:"total"`
		MaxScore float64 `json:"max_score"`
		Hits     []struct {
			Index  string            `json:"_index"`
			Type   string            `json:"_type"`
			ID     string            `json:"_id"`
			Score  float64           `json:"_score"`
			Source WorkflowExecution `json:"_source"`
		} `json:"hits"`
	} `json:"hits"`
}

type ExecutionStruct

type ExecutionStruct struct {
	Start             string `json:"start"`
	ExecutionSource   string `json:"execution_source"`
	ExecutionArgument string `json:"execution_argument"`
}

type ExecutionVariableWrapper

type ExecutionVariableWrapper struct {
	StartNode    string              `json:"startnode"`
	Children     map[string][]string `json:"children"`
	Parents      map[string][]string `json:"parents""`
	Visited      []string            `json:"visited"`
	Executed     []string            `json:"executed"`
	NextActions  []string            `json:"nextActions"`
	Environments []string            `json:"environments"`
	Extra        int                 `json:"extra"`
}

type External

type External struct {
	CreatedAt  *time.Time `` /* 260-byte string literal not displayed */
	MessageID  string     `` /* 155-byte string literal not displayed */
	RouteType  string     `description:"whether the message was sent or" json:"route_type,omitempty" validate:"omitempty" enum:"sent,received"`
	Spam       *bool      `` /* 311-byte string literal not displayed */
	SpamFolder *bool      `` /* 166-byte string literal not displayed */
	ThreadID   string     `` /* 150-byte string literal not displayed */
}

type ExtraButton

type ExtraButton struct {
	Name  string `json:"name"`
	Image string `json:"image"`
	Link  string `json:"link"`
	App   string `json:"app"`
	Type  string `json:"type"`
}

type File

type File struct {
	Id                 string   `json:"id" datastore:"id"`
	ReferenceFileId    string   `json:"reference_file_id" datastore:"reference_file_id"`
	Type               string   `json:"type" datastore:"type"`
	CreatedAt          int64    `json:"created_at" datastore:"created_at"`
	UpdatedAt          int64    `json:"updated_at" datastore:"updated_at"`
	MetaAccessAt       int64    `json:"meta_access_at" datastore:"meta_access_at"`
	DownloadAt         int64    `json:"last_downloaded" datastore:"last_downloaded"`
	Description        string   `json:"description" datastore:"description"`
	ExpiresAt          string   `json:"expires_at" datastore:"expires_at"`
	Status             string   `json:"status" datastore:"status"`
	Filename           string   `json:"filename" datastore:"filename"`
	URL                string   `json:"url" datastore:"org"`
	OrgId              string   `json:"org_id" datastore:"org_id"`
	WorkflowId         string   `json:"workflow_id" datastore:"workflow_id"`
	Workflows          []string `json:"workflows" datastore:"workflows"`
	DownloadPath       string   `json:"download_path" datastore:"download_path"`
	Md5sum             string   `json:"md5_sum" datastore:"md5_sum"`
	Sha256sum          string   `json:"sha256_sum" datastore:"sha256_sum"`
	FileSize           int64    `json:"filesize" datastore:"filesize"`
	Duplicate          bool     `json:"duplicate" datastore:"duplicate"`
	Subflows           []string `json:"subflows" datastore:"subflows"`
	Tags               []string `json:"tags" datastore:"tags"`
	StorageArea        string   `json:"storage_area" datastore:"storage_area"`
	Etag               int      `json:"etag" datastore:"etag"`
	ContentType        string   `json:"content_type" datastore:"content_type"`
	UpdatedBy          string   `json:"updated_by" datastore:"updated_by"`
	CreatedBy          string   `json:"created_by" datastore:"created_by"`
	Encrypted          bool     `json:"encrypted" datastore:"encrypted"`
	IsEdited           bool     `json:"isedited" datastore:"isedited"`
	LastEditor         string   `json:"lasteditor" datastore:"lasteditor"`
	OriginalMd5sum     string   `json:"Originalmd5_sum" datastore:"Originalmd5_sum"`
	SuborgDistribution []string `json:"suborg_distribution" datastore:"suborg_distribution"`

	// Category control
	Namespace string `json:"namespace" datastore:"namespace"`
}

func FindSimilarFile

func FindSimilarFile(ctx context.Context, md5, orgId string) ([]File, error)

Check OrgId later No deduplication for popular files

func FindSimilarFilename

func FindSimilarFilename(ctx context.Context, filename, orgId string) ([]File, error)

No deduplication for popular files

func GetAllFiles

func GetAllFiles(ctx context.Context, orgId, namespace string) ([]File, error)

func GetFile

func GetFile(ctx context.Context, id string) (*File, error)

func GetFileSingul

func GetFileSingul(ctx context.Context, fileId string) (*File, error)

type FileList

type FileList struct {
	Success bool         `json:"success"`
	Reason  string       `json:"reason"`
	List    []GithubResp `json:"list"`
}

type FileResponse

type FileResponse struct {
	Success    bool       `json:"success" datastore:"success"`
	Files      []File     `json:"files,omitempty" datastore:"files"`
	Namespaces []string   `json:"namespaces,omitempty" datastore:"namespaces"`
	List       []BaseFile `json:"list,omitempty" datastore:"list"`
}

type FileSearchWrapper

type FileSearchWrapper struct {
	Took     int  `json:"took"`
	TimedOut bool `json:"timed_out"`
	Shards   struct {
		Total      int `json:"total"`
		Successful int `json:"successful"`
		Skipped    int `json:"skipped"`
		Failed     int `json:"failed"`
	} `json:"_shards"`
	Hits struct {
		Total struct {
			Value    int    `json:"value"`
			Relation string `json:"relation"`
		} `json:"total"`
		MaxScore float64 `json:"max_score"`
		Hits     []struct {
			Index  string  `json:"_index"`
			Type   string  `json:"_type"`
			ID     string  `json:"_id"`
			Score  float64 `json:"_score"`
			Source File    `json:"_source"`
		} `json:"hits"`
	} `json:"hits"`
}

type FileWrapper

type FileWrapper struct {
	Index       string `json:"_index"`
	Type        string `json:"_type"`
	ID          string `json:"_id"`
	Version     int    `json:"_version"`
	SeqNo       int    `json:"_seq_no"`
	PrimaryTerm int    `json:"_primary_term"`
	Found       bool   `json:"found"`
	Source      File   `json:"_source"`
}

type FormControl

type FormControl struct {
	InputMarkdown  string   `json:"input_markdown" datastore:"input_markdown,noindex"`
	OutputYields   []string `json:"output_yields" datastore:"output_yields"`     // Defines the nodes that will YIELD their output to the frontend during execution
	CleanupActions []string `json:"cleanup_actions" datastore:"cleanup_actions"` // Defines the nodes that will not return any value at the end of a workflow (stored)

	FormWidth int64 `json:"form_width" datastore:"form_width"`
}

type FullEmail

type FullEmail struct {
	OdataContext               string        `json:"@odata.context"`
	OdataEtag                  string        `json:"@odata.etag"`
	ID                         string        `json:"id"`
	Createddatetime            time.Time     `json:"createdDateTime"`
	Lastmodifieddatetime       time.Time     `json:"lastModifiedDateTime"`
	Changekey                  string        `json:"changeKey"`
	Categories                 []interface{} `json:"categories"`
	Receiveddatetime           time.Time     `json:"receivedDateTime"`
	Sentdatetime               time.Time     `json:"sentDateTime"`
	Hasattachments             bool          `json:"hasAttachments"`
	Internetmessageid          string        `json:"internetMessageId"`
	Subject                    string        `json:"subject"`
	Bodypreview                string        `json:"bodyPreview"`
	Importance                 string        `json:"importance"`
	Parentfolderid             string        `json:"parentFolderId"`
	Conversationid             string        `json:"conversationId"`
	Conversationindex          string        `json:"conversationIndex"`
	Isdeliveryreceiptrequested interface{}   `json:"isDeliveryReceiptRequested"`
	Isreadreceiptrequested     bool          `json:"isReadReceiptRequested"`
	Isread                     bool          `json:"isRead"`
	Isdraft                    bool          `json:"isDraft"`
	Weblink                    string        `json:"webLink"`
	Inferenceclassification    string        `json:"inferenceClassification"`
	Body                       struct {
		Contenttype string `json:"contentType"`
		Content     string `json:"content"`
	} `json:"body"`
	Sender struct {
		Emailaddress struct {
			Name    string `json:"name"`
			Address string `json:"address"`
		} `json:"emailAddress"`
	} `json:"sender"`
	From struct {
		Emailaddress struct {
			Name    string `json:"name"`
			Address string `json:"address"`
		} `json:"emailAddress"`
	} `json:"from"`
	Torecipients []struct {
		Emailaddress struct {
			Name    string `json:"name"`
			Address string `json:"address"`
		} `json:"emailAddress"`
	} `json:"toRecipients"`
	Ccrecipients  []interface{} `json:"ccRecipients"`
	Bccrecipients []interface{} `json:"bccRecipients"`
	Replyto       []interface{} `json:"replyTo"`
	Flag          struct {
		Flagstatus string `json:"flagStatus"`
	} `json:"flag"`
	Attachments []struct {
		OdataType             string      `json:"@odata.type"`
		OdataMediacontenttype string      `json:"@odata.mediaContentType"`
		ID                    string      `json:"id"`
		Lastmodifieddatetime  time.Time   `json:"lastModifiedDateTime"`
		Name                  string      `json:"name"`
		Contenttype           string      `json:"contentType"`
		Size                  int         `json:"size"`
		Isinline              bool        `json:"isInline"`
		Contentid             interface{} `json:"contentId"`
		Contentlocation       interface{} `json:"contentLocation"`
		Contentbytes          string      `json:"contentBytes"`
	} `json:"attachments"`
	FileIds []string `json:"file_ids"`
}

func GetOutlookEmail

func GetOutlookEmail(client *http.Client, maildata MailDataOutlook) ([]FullEmail, error)

type GCPIncident

type GCPIncident struct {
	Incident struct {
		Condition struct {
			ConditionMatchedLog struct {
				Filter             string   `json:"filter"`
				ResourceContainers []string `json:"resourceContainers"`
			} `json:"conditionMatchedLog"`
			DisplayName string `json:"displayName"`
			Name        string `json:"name"`
		} `json:"condition"`
		ConditionName string `json:"condition_name"`
		IncidentID    string `json:"incident_id"`
		Metadata      struct {
			SystemLabels struct {
			} `json:"system_labels"`
			UserLabels struct {
			} `json:"user_labels"`
		} `json:"metadata"`
		Metric struct {
			DisplayName string `json:"displayName"`
			Labels      struct {
			} `json:"labels"`
			Type string `json:"type"`
		} `json:"metric"`
		PolicyName string `json:"policy_name"`
		Resource   struct {
			Labels struct {
				FunctionName string `json:"function_name"`
				ProjectID    string `json:"project_id"`
				Region       string `json:"region"`
			} `json:"labels"`
			Type string `json:"type"`
		} `json:"resource"`
		ResourceID              string `json:"resource_id"`
		ResourceName            string `json:"resource_name"`
		ResourceTypeDisplayName string `json:"resource_type_display_name"`
		ScopingProjectID        string `json:"scoping_project_id"`
		ScopingProjectNumber    int64  `json:"scoping_project_number"`
		StartedAt               int    `json:"started_at"`
		State                   string `json:"state"`
		Summary                 string `json:"summary"`
		URL                     string `json:"url"`
	} `json:"incident"`
	Version string `json:"version"`
}

type GeneratedMitre

type GeneratedMitre struct {
	Success bool `json:"success"`
	Timing  struct {
		AnalysisTime float64 `json:"analysis_time"`
		TimeVariant  string  `json:"time_variant"`
	} `json:"timing"`
	InputLength       int `json:"input_length"`
	TacticsChecked    int `json:"tactics_checked"`
	TechniquesChecked int `json:"techniques_checked"`
	Tactics           []struct {
		Code              string  `json:"code"`
		Confidence        float64 `json:"confidence"`
		ConfidenceVariant string  `json:"confidence_variant"`
	} `json:"tactics"`
	Techniques []struct {
		Code              string  `json:"code"`
		Confidence        float64 `json:"confidence"`
		ConfidenceVariant string  `json:"confidence_variant"`
	} `json:"techniques"`
	AnalysisID string `json:"analysis_id"`
	Reason     string `json:"reason"`
}

type GithubAuthor

type GithubAuthor struct {
	Name     string `json:"name"`
	Url      string `json:"url"`
	ImageUrl string `json:"image"`
}

type GithubContributions

type GithubContributions struct {
	Core      ContributionCount `datastore:"core" json:"core"`
	Workflows ContributionCount `datastore:"workflows" json:"workflows"`
	Apps      ContributionCount `datastore:"apps" json:"apps"`
	Docs      ContributionCount `datastore:"docs" json:"docs"`
}

type GithubProfile

type GithubProfile struct {
	Login                   string    `json:"login"`
	ID                      int       `json:"id"`
	NodeID                  string    `json:"node_id"`
	AvatarURL               string    `json:"avatar_url"`
	GravatarID              string    `json:"gravatar_id"`
	URL                     string    `json:"url"`
	HTMLURL                 string    `json:"html_url"`
	FollowersURL            string    `json:"followers_url"`
	FollowingURL            string    `json:"following_url"`
	GistsURL                string    `json:"gists_url"`
	StarredURL              string    `json:"starred_url"`
	SubscriptionsURL        string    `json:"subscriptions_url"`
	OrganizationsURL        string    `json:"organizations_url"`
	ReposURL                string    `json:"repos_url"`
	EventsURL               string    `json:"events_url"`
	ReceivedEventsURL       string    `json:"received_events_url"`
	Type                    string    `json:"type"`
	SiteAdmin               bool      `json:"site_admin"`
	Name                    string    `json:"name"`
	Company                 string    `json:"company"`
	Blog                    string    `json:"blog"`
	Location                string    `json:"location"`
	Email                   string    `json:"email"`
	Hireable                bool      `json:"hireable"`
	Bio                     string    `json:"bio"`
	TwitterUsername         string    `json:"twitter_username"`
	PublicRepos             int       `json:"public_repos"`
	PublicGists             int       `json:"public_gists"`
	Followers               int       `json:"followers"`
	Following               int       `json:"following"`
	CreatedAt               time.Time `json:"created_at"`
	UpdatedAt               time.Time `json:"updated_at"`
	PrivateGists            int       `json:"private_gists"`
	TotalPrivateRepos       int       `json:"total_private_repos"`
	OwnedPrivateRepos       int       `json:"owned_private_repos"`
	DiskUsage               int       `json:"disk_usage"`
	Collaborators           int       `json:"collaborators"`
	TwoFactorAuthentication bool      `json:"two_factor_authentication"`
	Plan                    struct {
		Name          string `json:"name"`
		Space         int    `json:"space"`
		PrivateRepos  int    `json:"private_repos"`
		Collaborators int    `json:"collaborators"`
	} `json:"plan"`
	Contributions int64 `json:"contributions"`
}

func GetGithubProfile

func GetGithubProfile(ctx context.Context, githubClient *http.Client) (GithubProfile, error)

func GetGithubRepoContributors

func GetGithubRepoContributors(ctx context.Context, githubClient *http.Client, repo string) ([]GithubProfile, error)

type GithubResp

type GithubResp struct {
	Name          string         `json:"name"`
	Contributors  []GithubAuthor `json:"contributors"`
	PublishedDate int64          `json:"published_date"`
	Edited        string         `json:"edited"`
	ReadTime      int            `json:"read_time"`
	Link          string         `json:"link"`
}

type GmailAttachment

type GmailAttachment struct {
	Size int    `json:"size"`
	Data string `json:"data"`
}

func GetGmailMessageAttachment

func GetGmailMessageAttachment(ctx context.Context, gmailClient *http.Client, userId, messageId, attachmentId string) (GmailAttachment, error)

type GmailHistoryStruct

type GmailHistoryStruct struct {
	History []struct {
		ID       string `json:"id"`
		Messages []struct {
			ID       string `json:"id"`
			ThreadID string `json:"threadId"`
		} `json:"messages"`
		MessagesDeleted []struct {
			Message struct {
				ID       string   `json:"id"`
				ThreadID string   `json:"threadId"`
				LabelIds []string `json:"labelIds"`
			} `json:"message"`
		} `json:"messagesDeleted,omitempty"`
		MessagesAdded []MessageAdded `json:"messagesAdded,omitempty"`
	} `json:"history"`
	HistoryID string `json:"historyId"`
}

func GetGmailHistory

func GetGmailHistory(ctx context.Context, gmailClient *http.Client, userId, historyId string) (GmailHistoryStruct, error)

func GetGmailProfile

func GetGmailProfile(ctx context.Context, gmailClient *http.Client, userId string) (GmailHistoryStruct, error)

type GmailLabel

type GmailLabel struct {
	ID                    string `json:"id"`
	Name                  string `json:"name"`
	MessageListVisibility string `json:"messageListVisibility"`
	LabelListVisibility   string `json:"labelListVisibility"`
	Type                  string `json:"type"`
}

type GmailLabels

type GmailLabels struct {
	Labels []GmailLabel `json:"labels"`
}

type GmailMessageStruct

type GmailMessageStruct struct {
	ID       string   `json:"id"`
	ThreadID string   `json:"threadId"`
	LabelIds []string `json:"labelIds"`
	Snippet  string   `json:"snippet"`
	Payload  struct {
		PartID       string `json:"partId"`
		MessageID    string `json:"message_id"`
		MimeType     string `json:"mimeType"`
		Filename     string `json:"filename"`
		FileMimeType string `json:"file_mimetype"`
		Sender       string `json:"sender"`
		Subject      string `json:"subject"`
		Recipient    string `json:"recipient"`
		ParsedBody   string `json:"parsed_body"`
		Headers      []struct {
			Name  string `json:"name"`
			Value string `json:"value"`
		} `json:"headers"`
		Body struct {
			Size int `json:"size"`
		} `json:"body"`
		Parts []struct {
			PartID   string `json:"partId"`
			MimeType string `json:"mimeType"`
			Filename string `json:"filename"`
			Headers  []struct {
				Name  string `json:"name"`
				Value string `json:"value"`
			} `json:"headers"`
			Body struct {
				AttachmentID string `json:"attachmentId"`
				Size         int    `json:"size"`
				Data         string `json:"data"`
			} `json:"body"`
		} `json:"parts"`
	} `json:"payload"`
	SizeEstimate int      `json:"sizeEstimate"`
	HistoryID    string   `json:"historyId"`
	InternalDate string   `json:"internalDate"`
	FileIds      []string `json:"file_ids"`
	Type         string   `json:"type"`
}

func GetGmailMessage

func GetGmailMessage(ctx context.Context, gmailClient *http.Client, userId, messageId string) (GmailMessageStruct, error)

type GmailMessagesStruct

type GmailMessagesStruct struct {
	Messages []struct {
		ID       string `json:"id"`
		ThreadID string `json:"threadId"`
	} `json:"messages"`
	NextPageToken      string `json:"nextPageToken"`
	ResultSizeEstimate int    `json:"resultSizeEstimate"`
}

func GetGmailMessages

func GetGmailMessages(ctx context.Context, gmailClient *http.Client, userId string) (GmailMessagesStruct, error)

type GmailProfile

type GmailProfile struct {
	EmailAddress  string `json:"emailAddress"`
	MessagesTotal int    `json:"messagesTotal"`
	ThreadsTotal  int    `json:"threadsTotal"`
	HistoryId     string `json:"historyId"`
}

func GetGmailUserProfile

func GetGmailUserProfile(ctx context.Context, gmailClient *http.Client) (GmailProfile, error)

type GmailSubscription

type GmailSubscription struct {
	TopicName         string   `json:"topicName"`
	LabelIds          []string `json:"labelIds"`
	LabelFilterAction []string `json:"labelFilterAction"`
}

type GmailThreadStruct

type GmailThreadStruct struct {
	ID        string               `json:"id"`
	HistoryID string               `json:"historyId"`
	Messages  []GmailMessageStruct `json:"messages"`
}

func GetGmailThread

func GetGmailThread(ctx context.Context, gmailClient *http.Client, userId, messageId string) (GmailThreadStruct, error)

type HTTPOutput

type HTTPOutput struct {
	Success   bool   `json:"success"`
	Reason    string `json:"reason,omitempty"`
	Exception string `json:"exception,omitempty"`
	Details   string `json:"details,omitempty"`

	Status  int               `json:"status,omitempty"`
	Url     string            `json:"url,omitempty"`
	Body    interface{}       `json:"body,omitempty"`
	Headers map[string]string `json:"headers,omitempty"`
	Cookies map[string]string `json:"cookies,omitempty"`
	Errors  []string          `json:"errors,omitempty"`
}

func FindHttpBody

func FindHttpBody(fullBody []byte) (HTTPOutput, []byte, error)

type HTTPWrapper

type HTTPWrapper struct {
	ActionName             string `json:"action_name"`
	URL                    string `json:"url"`
	Headers                string `json:"headers"`
	Body                   string `json:"body"`
	Method                 string `json:"method"`
	RequiresAuthentication bool   `json:"requires_authentication"`
	Oauth2Auth             bool   `json:"oauth2_auth"`
	CurlCommand            string `json:"curl_command"`
	Apikey                 string `json:"apikey"`
}

type HandleInfo

type HandleInfo struct {
	Success            bool            `json:"success"`
	Admin              string          `json:"admin"`
	Username           string          `json:"username"`
	PublicUsername     string          `json:"public_username"`
	Name               string          `json:"name"`
	ActiveApps         []string        `json:"active_apps"`
	Id                 string          `json:"id"`
	Avatar             string          `json:"avatar"`
	Orgs               []OrgMini       `json:"orgs"`
	ActiveOrg          OrgMini         `json:"active_org"`
	EthInfo            EthInfo         `json:"eth_info,omitempty"`
	ChatDisabled       bool            `json:"chat_disabled"`
	Interests          []Priority      `json:"interests"`
	Priorities         []Priority      `json:"priorities"`
	Cookies            []SessionCookie `json:"cookies"`
	AppExecutionsLimit int64           `json:"app_execution_limit"`
	AppExecutionsUsage int64           `json:"app_execution_usage"`
	RegionUrl          string          `json:"region_url"`
	Support            bool            `json:"support"`
	Tutorials          []Tutorial      `json:"tutorials"`
	OrgStatus          []string        `json:"org_status"`

	HasCardAvailable    bool        `json:"has_card_available,omitempty"`
	ActivatedPayasyougo bool        `json:"activated_pay_as_you_go,omitempty"`
	Licensed            bool        `json:"licensed"`
	UserGeoInfo         UserGeoInfo `json:"user_geo_info,omitempty"`
	Theme               string      `json:"theme"`
}

type Headers

type Headers struct {
	Date               *time.Time    `description:"Date the email was sent in UTC." json:"date,omitempty" validate:"omitempty"`
	DateOriginalOffset *string       `description:"UTC timezone offset of the sender" json:"date_original_offset,omitempty" validate:"omitempty"`
	Domains            []Domain      `description:"All domains found in the Received headers" json:"domains,omitempty" validate:"omitempty"`
	DeliveredTo        *EmailAddress `description:"Delivered-to header value" json:"delivered_to,omitempty" validate:"omitempty"`
	IPs                []IP          `description:"All IP addresses found in the Received headers" json:"ips,omitempty" validate:"omitempty"`
	Mailer             *string       `description:"X-Mailer or User-Agent extracted from headers" json:"mailer,omitempty" validate:"omitempty"`
	MessageID          *string       `description:"Message-ID extracted from the header" json:"message_id,omitempty" validate:"omitempty"`
	References         []string      `description:"The Message-IDs of the other messages within this chain" json:"references,omitempty" validate:"omitempty"`
	ReplyTo            []Mailbox     `description:"Where replies should be delivered to" json:"reply_to,omitempty" validate:"omitempty"`
	ReturnPath         *EmailAddress `` /* 146-byte string literal not displayed */
	XOriginatingIP     *IP           `` /* 158-byte string literal not displayed */
	Hops               []Hop         `description:"List of hops the message took from Sender to Recipient" json:"hops" validate:"required"`
}

type HealthCheck

type HealthCheck struct {
	Success    bool           `json:"success"`
	Updated    int64          `json:"updated"`
	Apps       AppHealth      `json:"apps"`
	Workflows  WorkflowHealth `json:"workflows"`
	PythonApps AppHealth      `json:"python_apps"`
}

type HealthCheckDB

type HealthCheckDB struct {
	Success   bool           `json:"success"`
	Updated   int64          `json:"updated"`
	Workflows WorkflowHealth `json:"workflows"`
	ID        string         `json:"id"`
}

func GetPlatformHealth

func GetPlatformHealth(ctx context.Context, beforeTimestamp int, afterTimestamp int, limit int) ([]HealthCheckDB, error)

type HealthCheckSearchWrapper

type HealthCheckSearchWrapper struct {
	Took     int  `json:"took"`
	TimedOut bool `json:"timed_out"`
	Shards   struct {
		Total      int `json:"total"`
		Successful int `json:"successful"`
		Skipped    int `json:"skipped"`
		Failed     int `json:"failed"`
	} `json:"_shards"`
	Hits struct {
		Total struct {
			Value    int    `json:"value"`
			Relation string `json:"relation"`
		} `json:"total"`
		MaxScore float64 `json:"max_score"`
		Hits     []struct {
			Index  string        `json:"_index"`
			Type   string        `json:"_type"`
			ID     string        `json:"_id"`
			Score  float64       `json:"_score"`
			Source HealthCheckDB `json:"_source"`
		} `json:"hits"`
	} `json:"hits"`
}

type Hook

type Hook struct {
	Id             string       `json:"id" datastore:"id"`
	Start          string       `json:"start" datastore:"start"`
	Info           Info         `json:"info" datastore:"info"`
	Actions        []HookAction `json:"actions" datastore:"actions,noindex"`
	Type           string       `json:"type" datastore:"type"`
	Owner          string       `json:"owner" datastore:"owner"`
	Status         string       `json:"status" datastore:"status"`
	Workflows      []string     `json:"workflows" datastore:"workflows"`
	Running        bool         `json:"running" datastore:"running"`
	OrgId          string       `json:"org_id" datastore:"org_id"`
	Environment    string       `json:"environment" datastore:"environment"`
	Auth           string       `json:"auth" datastore:"auth"`
	CustomResponse string       `json:"custom_response" datastore:"custom_response"`
	Version        string       `json:"version" datastore:"version"`
	VersionTimeout int          `json:"version_timeout" datastore:"version_timeout"`
}

func GetAllHooks

func GetAllHooks(ctx context.Context) ([]Hook, error)

func GetHook

func GetHook(ctx context.Context, hookId string) (*Hook, error)

func GetHooks

func GetHooks(ctx context.Context, OrgId string) ([]Hook, error)

type HookAction

type HookAction struct {
	Type  string `json:"type" datastore:"type"`
	Name  string `json:"name" datastore:"name"`
	Id    string `json:"id" datastore:"id"`
	Field string `json:"field" datastore:"field"`
}

Actions to be done by webhooks etc Field is the actual field to use from json

type HookWrapper

type HookWrapper struct {
	Index       string `json:"_index"`
	Type        string `json:"_type"`
	ID          string `json:"_id"`
	Version     int    `json:"_version"`
	SeqNo       int    `json:"_seq_no"`
	PrimaryTerm int    `json:"_primary_term"`
	Found       bool   `json:"found"`
	Source      Hook   `json:"_source"`
}

type Hooks

type Hooks struct {
	Hooks   []Hook `json:"hooks"`
	Success bool   `json:"-"`
}

type Hop

type Hop struct {
	Index       int          `description:"Index indicates the order in which a hop occurred from sender to recipient" json:"index" validate:"required"`
	AuthResults *AuthResults `` /* 370-byte string literal not displayed */
	Signature   *Signature   `` /* 213-byte string literal not displayed */
	SPF         *SPF         `` /* 171-byte string literal not displayed */
	Fields      []HopField   `description:"List of all raw header fields contained within this hop" json:"fields" validate:"required"`
}

type HopField

type HopField struct {
	Name     string `description:"The name of the field" json:"name" validate:"required"`
	Value    string `description:"The value contained within the field" json:"value" validate:"required"`
	Position int    `description:"This field's position along the entire list of header fields" json:"position" validate:"required"`
}

type IP

type IP struct {
	IP string `description:"The raw IP" json:"ip" validate:"required"`
}

type IdTokenCheck

type IdTokenCheck struct {
	Aud   string   `json:"aud"`
	Iss   string   `json:"iss"`
	Iat   int      `json:"iat"`
	Nbf   int      `json:"nbf"`
	Exp   int      `json:"exp"`
	Aio   string   `json:"aio"`
	Nonce string   `json:"nonce"`
	Rh    string   `json:"rh"`
	Sub   string   `json:"sub"`
	Tid   string   `json:"tid"`
	Uti   string   `json:"uti"`
	Ver   string   `json:"ver"`
	Email string   `json:"email"`
	Org   Org      `json:"org"`
	Roles []string `json:"roles"`
}

func VerifyIdToken

func VerifyIdToken(ctx context.Context, idToken string) (IdTokenCheck, error)

type IncrementInCache

type IncrementInCache struct {
	Amount    uint64 `json:"amount" datastore:"amount"`
	CreatedAt int64  `json:"created_at" datastore:"created_at"`
}

type Info

type Info struct {
	Url         string `json:"url" datastore:"url"`
	Name        string `json:"name" datastore:"name"`
	Description string `json:"description" datastore:"description"`
}

type InputQuestion

type InputQuestion struct {
	Name     string `json:"name" datastore:"name,noindex"`
	Value    string `json:"value" datastore:"value,noindex"`
	Required bool   `json:"required" datastore:"required"`
	Deleted  bool   `json:"deleted" datastore:"deleted"`
}

type Inputdata

type Inputdata struct {
	Message      WrappedData `json:"message"`
	Subscription string      `json:"subscription"`
}

type LabelStruct

type LabelStruct struct {
	Category string `json:"category"`
	Label    string `json:"label"`
}

type LakeConfig

type LakeConfig struct {
	Enabled   bool               `json:"enabled" datastore:"enabled"`
	Pipelines []PipelineInfoMini `json:"pipelines" datastore:"pipelines"`
}

type LeadInfo

type LeadInfo struct {
	Contacted      bool `json:"contacted,omitempty" datastore:"contacted"`
	Student        bool `json:"student,omitempty" datastore:"student"`
	Lead           bool `json:"lead,omitempty" datastore:"lead"`
	POV            bool `json:"pov,omitempty" datastore:"pov"`
	TestingShuffle bool `json:"testing_shuffle,omitempty" datastore:"testing_shuffle"`
	DemoDone       bool `json:"demo_done,omitempty" datastore:"demo_done"`
	Customer       bool `json:"customer,omitempty" datastore:"customer"`
	OpenSource     bool `json:"opensource,omitempty" datastore:"opensource"`
	Internal       bool `json:"internal,omitempty" datastore:"internal"`
	SubOrg         bool `json:"sub_org,omitempty" datastore:"sub_org"`

	OldCustomer bool `json:"old_customer,omitempty" datastore:"old_customer"`
	OldLead     bool `json:"old_lead,omitempty" datastore:"old_lead"`

	TechPartner         bool `json:"tech_partner,omitempty" datastore:"tech_partner"`
	IntegrationPartner  bool `json:"integration_partner,omitempty" datastore:"integration_partner"`
	DistributionPartner bool `json:"distribution_partner,omitempty" datastore:"distribution_partner"`
	ServicePartner      bool `json:"service_partner,omitempty" datastore:"service_partner"`

	Creator bool `json:"creator,omitempty" datastore:"creator"`
}
type Link struct {
	DisplayText string `description:"The text of a hyperlink, if it's not a URL" json:"display_text,omitempty" validate:"omitempty"`
	DisplayURL  *URL   `description:"URL the user sees when viewing the message" json:"display_url,omitempty" validate:"omitempty"`
	HrefURL     *URL   `` /* 152-byte string literal not displayed */
	Mismatched  *bool  `` /* 127-byte string literal not displayed */
}

type LiveExecutionStatus

type LiveExecutionStatus struct {
	ID                string `json:"id"`
	Failed            int    `json:"failed"`
	Executing         int    `json:"executing"`
	Finished          int    `json:"finished"`
	Aborted           int    `json:"aborted"`
	NotificationCount int    `json:"notification_count"`

	CreatedAt int64 `json:"created_at"`
}

func GetLiveWorkflowExecutionData

func GetLiveWorkflowExecutionData(ctx context.Context, beforeTimestamp int, afterTimestamp int, limit int, mode string) ([]LiveExecutionStatus, error)

type LogRequest

type LogRequest struct {
	Timestamp int64 `json:"timestamp"`

	Method  string              `json:"method"`
	URL     string              `json:"url"`
	Header  map[string][]string `json:"header"`
	Referer string              `json:"referer"`
}

type LoginInfo

type LoginInfo struct {
	IP        string `json:"ip" datastore:"ip"`
	Timestamp int64  `json:"timestamp" datastore:"timestamp"`
}

type MFAInfo

type MFAInfo struct {
	Active       bool   `datastore:"active" json:"active"`
	ActiveCode   string `datastore:"active_code" json:"active_code"`
	PreviousCode string `datastore:"previous_code" json:"previous_code"`
}

type MailDataOutlook

type MailDataOutlook struct {
	Value []struct {
		Subscriptionid                 string `json:"subscriptionId"`
		Subscriptionexpirationdatetime string `json:"subscriptionExpirationDateTime"`
		Changetype                     string `json:"changeType"`
		Resource                       string `json:"resource"`
		Resourcedata                   struct {
			OdataType string `json:"@odata.type"`
			OdataID   string `json:"@odata.id"`
			OdataEtag string `json:"@odata.etag"`
			ID        string `json:"id"`
		} `json:"resourceData"`
		Clientstate string `json:"clientState"`
		Tenantid    string `json:"tenantId"`
	} `json:"value"`
}

type MailDataOutlookList

type MailDataOutlookList struct {
	OdataContext string `json:"@odata.context"`
	Value        []struct {
		OdataType             string      `json:"@odata.type"`
		OdataMediaContentType string      `json:"@odata.mediaContentType"`
		ID                    string      `json:"id"`
		LastModifiedDateTime  time.Time   `json:"lastModifiedDateTime"`
		Name                  string      `json:"name"`
		ContentType           string      `json:"contentType"`
		Size                  int         `json:"size"`
		IsInline              bool        `json:"isInline"`
		ContentID             interface{} `json:"contentId"`
		ContentLocation       interface{} `json:"contentLocation"`
		ContentBytes          string      `json:"contentBytes"`
	} `json:"value"`
}

func GetOutlookAttachmentList

func GetOutlookAttachmentList(client *http.Client, emailId string) (MailDataOutlookList, error)

type MailLevel

type MailLevel struct {
	Type       string `json:"type"`
	Percentage int64  `json:"percentage"`
	LastSent   int64  `json:"last_sent"`
}

type Mailbox

type Mailbox struct {
	DisplayName string       `description:"Display name" json:"display_name,omitempty" validate:"omitempty"`
	Email       EmailAddress `description:"Email address object" json:"email" validate:"required"`
}

type Mailcheck

type Mailcheck struct {
	Targets            []string `json:"targets"`
	Body               string   `json:"body"`
	Subject            string   `json:"subject"`
	Type               string   `json:"type"`
	EmailApp           bool     `json:"email_app"`
	SenderCompany      string   `json:"sender_company"`
	WorkflowId         string   `json:"workflow_id"`
	ReferenceExecution string   `json:"reference_execution"`
	Authorization      string   `json:"authorization"`
	ExecutionType      string   `json:"execution_type"`
	Start              string   `json:"start"`
	Bcc                []string `json:"bcc"`
}

type MdmAttachment

type MdmAttachment struct {
	ContentTransferEncoding string `json:"content_transfer_encoding"`
	ContentType             string `json:"content_type"`
	FileExtension           string `json:"file_extension"`
	FileName                string `json:"file_name"`
	Filetype                string `json:"file_type"`
	Raw                     string `json:"raw"`
	Size                    int    `json:"size"`
}

type MdmBody

type MdmBody struct {
	Html  MdmHtml   `json:"html"`
	IPs   []MdmIP   `json:"ips"`
	Links []MdmLink `json:"links"`
	Plain MdmPlain  `json:"_errors"`
}

type MdmDisplayUrl

type MdmDisplayUrl struct {
}

type MdmExternal

type MdmExternal struct {
}

type MdmHeaders

type MdmHeaders struct {
}

type MdmHtml

type MdmHtml struct {
	Charset                 string `json:"_errors"`
	ContentTransferEncoding string `json:"_errors"`
	Raw                     string `json:"_errors"`
}

type MdmIP

type MdmIP struct {
	IP string `json:"ip"`
}

TBD

type MdmLink struct {
	DisplayText string        `json:"ip"`
	DisplayUrl  MdmDisplayUrl `json:"ip"`
}

TBD

type MdmMailbox

type MdmMailbox struct {
}

type MdmMeta

type MdmMeta struct {
	CanonicalId   string `json:"canonical_id"`
	CreatedAt     string `json:"created_at"`
	Id            string `json:"id"`
	SchemaVersion string `json:"schema_version"`
}

type MdmPlain

type MdmPlain struct {
	Charset                 string `json:"_errors"`
	ContentTransferEncoding string `json:"_errors"`
	Raw                     string `json:"_errors"`
}

type MdmRecipients

type MdmRecipients struct {
}

type MdmSender

type MdmSender struct {
}

type MdmSubject

type MdmSubject struct {
}

type MdmType

type MdmType struct {
}

type MessageAdded

type MessageAdded struct {
	Message MessageAddedMessage `json:"message"`
}

type MessageAddedMessage

type MessageAddedMessage struct {
	ID       string   `json:"id"`
	ThreadID string   `json:"threadId"`
	LabelIds []string `json:"labelIds"`
}

type MessageDataModel

type MessageDataModel struct {
	Attachments []Attachment        `description:"Attachments" json:"attachments,omitempty" validate:"omitempty"`
	Body        *Body               `description:"Body of the email" json:"body,omitempty" validate:"omitempty"`
	External    *External           `description:"Cloud API provider or other external source metadata" json:"external,omitempty" validate:"omitempty"`
	Headers     Headers             `description:"The message headers" json:"headers" validate:"required"`
	Type        MessageType         `description:"The types of the message from the perspective of the message source" json:"type" validate:"required"`
	Mailbox     *Mailbox            `description:"The mailbox we retrieved the message from" json:"mailbox,omitempty" validate:"omitempty"`
	Recipients  Recipients          `description:"Recipient objects" json:"recipients" validate:"required"`
	Sender      Mailbox             `description:"Sender object" json:"sender" validate:"required"`
	Subject     *Subject            `description:"Subject object" json:"subject,omitempty" validate:"omitempty"`
	Meta        Metadata            `description:"Metadata" json:"_meta" validate:"required"`
	Errors      []map[string]string `description:"Non-fatal errors while parsing MDM" json:"_errors,omitempty"`
}

type MessageType

type MessageType struct {
	Inbound  bool `` /* 169-byte string literal not displayed */
	Internal bool `` /* 135-byte string literal not displayed */
	Outbound bool `` /* 170-byte string literal not displayed */
}

type Metadata

type Metadata struct {
	ID            string    `description:"Message ID" json:"id" format:"uuid4" validate:"required,uuid4"`
	CanonicalID   string    `description:"An ID that can be used to group similar messages/campaigns together" json:"canonical_id" validate:"required"`
	CreatedAt     time.Time `description:"Creation time of the data model" json:"created_at" format:"date-time" validate:"required"`
	SchemaVersion string    `description:"Schema version number" json:"schema_version" validate:"required"`
}

type MinimizedApps

type MinimizedApps struct {
	Name     string `json:"name"`
	Image    string `json:"image"`
	Category string `json:"category"`
}

type ModelLabelParameter

type ModelLabelParameter struct {
	Name        string `json:"name"`
	Description string `json:"description"`
	Type        string `json:"type"`
	Required    bool   `json:"required"`
}

type NewValue

type NewValue struct {
	OrgId               string `json:"org_id" datastore:"org_id"`
	WorkflowId          string `json:"workflow_id" datastore:"workflow_id"`
	WorkflowExecutionId string `json:"workflow_execution_id" datastore:"workflow_execution_id"`
	ParameterName       string `json:"parameter_name" datastore:"parameter_name"`
	Value               string `json:"value" datastore:"value,noindex"`
	Created             int64  `json:"created" datastore:"created"`
	Id                  string `json:"id" datastore:"id"`
}

func GetAppExecutionValues

func GetAppExecutionValues(ctx context.Context, parameterNames, orgId, workflowId, value string) ([]NewValue, error)

type NewValueSearchWrapper

type NewValueSearchWrapper struct {
	Took     int  `json:"took"`
	TimedOut bool `json:"timed_out"`
	Shards   struct {
		Total      int `json:"total"`
		Successful int `json:"successful"`
		Skipped    int `json:"skipped"`
		Failed     int `json:"failed"`
	} `json:"_shards"`
	Hits struct {
		Total struct {
			Value    int    `json:"value"`
			Relation string `json:"relation"`
		} `json:"total"`
		MaxScore float64 `json:"max_score"`
		Hits     []struct {
			Index  string   `json:"_index"`
			Type   string   `json:"_type"`
			ID     string   `json:"_id"`
			Score  float64  `json:"_score"`
			Source NewValue `json:"_source"`
		} `json:"hits"`
	} `json:"hits"`
}

type NodeData

type NodeData struct {
	Name  string `json:"name"`
	Count int    `json:"count"`
}

type NodeRelation

type NodeRelation struct {
	AppCategory string     `json:"app_category"`
	AppNames    []string   `json:"app_names"`
	AppIds      []string   `json:"app_ids"`
	Synonyms    []string   `json:"synonyms"`
	Incoming    []NodeData `json:"incoming"`
	Outgoing    []NodeData `json:"outgoing"`
}

type Notification

type Notification struct {
	Image             string   `json:"image" datastore:"image"`
	CreatedAt         int64    `json:"created_at" datastore:"created_at"`
	UpdatedAt         int64    `json:"updated_at" datastore:"updated_at"`
	Title             string   `json:"title" datastore:"title"`
	Description       string   `json:"description" datastore:"description"`
	OrgId             string   `json:"org_id" datastore:"org_id"`
	OrgName           string   `json:"org_name" datastore:"org_name"`
	UserId            string   `json:"user_id" datastore:"user_id"`
	Tags              []string `json:"tags" datastore:"tags"`
	Amount            int      `json:"amount" datastore:"amount"`
	BucketDescription string   `json:"bucket_description" datastore:"bucket_description"`
	Id                string   `json:"id" datastore:"id"`
	ReferenceUrl      string   `json:"reference_url" datastore:"reference_url"`
	OrgNotificationId string   `json:"org_notification_id" datastore:"org_notification_id"`
	Dismissable       bool     `json:"dismissable" datastore:"dismissable"`
	Personal          bool     `json:"personal" datastore:"personal"`
	Read              bool     `json:"read" datastore:"read"`

	ModifiedBy  string `json:"modified_by" datastore:"modified_by"`
	Ignored     bool   `json:"ignored" datastore:"ignored"`
	ExecutionId string `json:"execution_id" datastore:"execution_id"`
}

func GetNotification

func GetNotification(ctx context.Context, id string) (*Notification, error)

func GetOrgNotifications

func GetOrgNotifications(ctx context.Context, orgId string) ([]Notification, error)

func GetUserNotifications

func GetUserNotifications(ctx context.Context, userId string) ([]Notification, error)

type NotificationCached

type NotificationCached struct {
	NotificationId            string `json:"notification_id" datastore:"notification_id"`
	WorkflowId                string `json:"workflow_id" datastore:"workflow_id"`
	LastUpdated               int64  `json:"last_updated" datastore:"last_updated"`
	FirstUpdated              int64  `json:"first_updated" datastore:"first_updated"`
	LastNotificationAttempted string `json:"last_notification_attempted" datastore:"last_notification_attempted"`
	OriginalNotification      string `json:"original_notification" datastore:"original_notification"`
	Amount                    int64  `json:"amount" datastore:"amount"`
}

type NotificationResponse

type NotificationResponse struct {
	Success       bool           `json:"success"`
	Notifications []Notification `json:"notifications"`
}

type NotificationSearchWrapper

type NotificationSearchWrapper struct {
	Took     int  `json:"took"`
	TimedOut bool `json:"timed_out"`
	Shards   struct {
		Total      int `json:"total"`
		Successful int `json:"successful"`
		Skipped    int `json:"skipped"`
		Failed     int `json:"failed"`
	} `json:"_shards"`
	Hits struct {
		Total struct {
			Value    int    `json:"value"`
			Relation string `json:"relation"`
		} `json:"total"`
		MaxScore float64 `json:"max_score"`
		Hits     []struct {
			Index  string       `json:"_index"`
			Type   string       `json:"_type"`
			ID     string       `json:"_id"`
			Score  float64      `json:"_score"`
			Source Notification `json:"_source"`
		} `json:"hits"`
	} `json:"hits"`
}

type NotificationWrapper

type NotificationWrapper struct {
	Index       string       `json:"_index"`
	Type        string       `json:"_type"`
	ID          string       `json:"_id"`
	Version     int          `json:"_version"`
	SeqNo       int          `json:"_seq_no"`
	PrimaryTerm int          `json:"_primary_term"`
	Found       bool         `json:"found"`
	Source      Notification `json:"_source"`
}

type Oauth2Openapi

type Oauth2Openapi struct {
	AuthorizationCode AuthorizationCode `json:"authorizationCode"`
}

type Oauth2Resp

type Oauth2Resp struct {
	AccessToken  string `json:"access_token" url:"access_token,omitempty"`
	RefreshToken string `json:"refresh_token" url:"refresh_token,omitempty"`
	TokenType    string `json:"token_type" url:"token_type,omitempty"`
	Scope        string `json:"scope" url:"scope,omitempty"`
	ExpiresIn    int    `json:"expires_in" url:"expires_in,omitempty"`
	ExtExpiresIn int    `json:"ext_expires_in" url:"ext_expires_in,omitempty"`
}

AuthenticationStore with oauth2

type OauthToken

type OauthToken struct {
	AccessToken  string    `json:"AccessToken" datastore:"AccessToken,noindex"`
	TokenType    string    `json:"TokenType" datastore:"TokenType,noindex"`
	RefreshToken string    `json:"RefreshToken" datastore:"RefreshToken,noindex"`
	Expiry       time.Time `json:"Expiry" datastore:"Expiry,noindex"`
}

type OpenidResp

type OpenidResp struct {
	AccessToken  string `json:"access_token"`
	IdToken      string `json:"id_token"`
	Scope        string `json:"scope"`
	TokenType    string `json:"token_type"`
	ExpiresIn    int    `json:"expires_in"`
	ExtExpiresIn int    `json:"ext_expires_in"`
}

type OpenidUserinfo

type OpenidUserinfo struct {
	Sub   string   `json:"sub"`
	Email string   `json:"email"`
	Roles []string `json:"roles"`
}

type OpenseaAsset

type OpenseaAsset struct {
	Name              string `json:"name" datastore:"name"`
	Collection        string `json:"collection" datastore:"collection"`
	CollectionURL     string `json:"collection_url" datastore:"collection_url"`
	Image             string `json:"image" datastore:"image"`
	Asset             string `json:"asset" datastore:"asset"`
	AssetLink         string `json:"asset_link" datastore:"asset_link"`
	Polygon           bool   `json:"polygon" datastore:"polygon"`
	WorkflowReference string `json:"workflow_reference" datastore:"workflow_reference"`
	Workflow          string `json:"workflow" datastore:"workflow"`
	Creator           string `json:"creator" datastore:"creator"`
	OwnerUsername     string `json:"owner_username" datastore:"owner_username"`
	Owner             string `json:"owner" datastore:"owner"`
	ID                string `json:"id" datastore:"id"`
	Created           int64  `json:"created" datastore:"created"`
	Edited            int64  `json:"edited" datastore:"edited"`
}

func GetOpenseaAsset

func GetOpenseaAsset(ctx context.Context, id string) (*OpenseaAsset, error)

func GetOpenseaAssets

func GetOpenseaAssets(ctx context.Context, collectionName string) ([]OpenseaAsset, error)

type OpenseaAssetSearchWrapper

type OpenseaAssetSearchWrapper struct {
	Took     int  `json:"took"`
	TimedOut bool `json:"timed_out"`
	Shards   struct {
		Total      int `json:"total"`
		Successful int `json:"successful"`
		Skipped    int `json:"skipped"`
		Failed     int `json:"failed"`
	} `json:"_shards"`
	Hits struct {
		Total struct {
			Value    int    `json:"value"`
			Relation string `json:"relation"`
		} `json:"total"`
		MaxScore float64 `json:"max_score"`
		Hits     []struct {
			Index  string       `json:"_index"`
			Type   string       `json:"_type"`
			ID     string       `json:"_id"`
			Score  float64      `json:"_score"`
			Source OpenseaAsset `json:"_source"`
		} `json:"hits"`
	} `json:"hits"`
}

type OpenseaAssetWrapper

type OpenseaAssetWrapper struct {
	Index       string       `json:"_index"`
	Type        string       `json:"_type"`
	ID          string       `json:"_id"`
	Version     int          `json:"_version"`
	SeqNo       int          `json:"_seq_no"`
	PrimaryTerm int          `json:"_primary_term"`
	Found       bool         `json:"found"`
	Source      OpenseaAsset `json:"_source"`
}

type OrborusExecutionRequest

type OrborusExecutionRequest struct {
	ExecutionId           string            `json:"execution_id"`
	Authorization         string            `json:"authorization"`
	HTTPProxy             string            `json:"http_proxy"`
	HTTPSProxy            string            `json:"https_proxy"`
	BaseUrl               string            `json:"base_url"`
	Url                   string            `json:"url"`
	EnvironmentName       string            `json:"environment_name"`
	Timezone              string            `json:"timezone"`
	Cleanup               string            `json:"cleanup"`
	ShufflePassProxyToApp string            `json:"shuffle_pass_proxy_to_app"`
	Action                Action            `json:"action"`
	FullExecution         WorkflowExecution `json:"workflow_execution"`
	WorkerServerUrl       string            `json:"worker_server_url"`
}

BaseUrl = Backend URL Url = Worker URL

type OrborusStats

type OrborusStats struct {
	Id string `json:"id"`

	OrgId        string `json:"org_id"`
	Environment  string `json:"environment"`
	OrborusLabel string `json:"orborus_label"`
	Timestamp    int64  `json:"timestamp"`
	Swarm        bool   `json:"swarm"`
	Kubernetes   bool   `json:"kubernetes"`

	// Shuffle
	MaxQueue int `json:"max_queue"`
	Queue    int `json:"queue"`
	PollTime int `json:"poll_time"`

	// General
	MaxCPU     int     `json:"max_cpu"`
	CPU        int     `json:"cpu"`
	CPUPercent float64 `json:"cpu_percent"`

	MaxMemory     int     `json:"max_memory"`
	Memory        int     `json:"memory"`
	MemoryPercent float64 `json:"memory_percent"`

	MaxDisk     int     `json:"max_disk"`
	Disk        int     `json:"disk"`
	DiskPercent float64 `json:"disk_percent"`

	// Docker
	AppContainers     int `json:"app_containers"`
	WorkerContainers  int `json:"worker_containers"`
	StoppedContainers int `json:"stopped_containers"`
	TotalContainers   int `json:"total_containers"`

	// New cache mechanics to keep better track of running/not running
	RunningIp string     `json:"running_ip"`
	Licensed  bool       `json:"licensed"`
	DataLake  LakeConfig `json:"data_lake" datastore:"data_lake"`
}

Parse out CPU, memory and disk. Make struct

type Org

type Org struct {
	Name            string       `json:"name" datastore:"name"`
	Description     string       `json:"description" datastore:"description"`
	CompanyType     string       `json:"company_type" datastore:"company_type"`
	Image           string       `json:"image" datastore:"image,noindex"`
	Id              string       `json:"id" datastore:"id"`
	Org             string       `json:"org" datastore:"org"`
	Users           []User       `json:"users" datastore:"users"`
	Role            string       `json:"role" datastore:"role"`
	Roles           []string     `json:"roles" datastore:"roles"`
	ActiveApps      []string     `json:"active_apps" datastore:"active_apps"`
	CloudSync       bool         `json:"cloud_sync" datastore:"CloudSync"`
	CloudSyncActive bool         `json:"cloud_sync_active" datastore:"CloudSyncActive"`
	SyncConfig      SyncConfig   `json:"sync_config" datastore:"sync_config"`
	SyncFeatures    SyncFeatures `json:"sync_features,omitempty" datastore:"sync_features"`
	MFARequired     bool         `json:"mfa_required" datastore:"mfa_required"`

	SubscriptionUserId string                `json:"subscription_user_id" datastore:"subscription_user_id"`
	Subscriptions      []PaymentSubscription `json:"subscriptions" datastore:"subscriptions"`

	SyncUsage         SyncUsage   `json:"sync_usage" datastore:"sync_usage"`
	Created           int64       `json:"created" datastore:"created"`
	Edited            int64       `json:"edited" datastore:"edited"`
	Defaults          Defaults    `json:"defaults" datastore:"defaults"`
	Invites           []string    `json:"invites" datastore:"invites"`
	ChildOrgs         []OrgMini   `json:"child_orgs" datastore:"child_orgs"`
	ManagerOrgs       []OrgMini   `json:"manager_orgs" datastore:"manager_orgs"` // Multi in case more than one org should be able to control another
	PartnerInfo       PartnerInfo `json:"partner_info" datastore:"partner_info"`
	SSOConfig         SSOConfig   `json:"sso_config" datastore:"sso_config"`
	SecurityFramework Categories  `json:"security_framework" datastore:"security_framework,noindex"`

	Interests    []Priority `json:"interests" datastore:"interests"`
	Priorities   []Priority `json:"priorities" datastore:"priorities,noindex"`
	MainPriority string     `json:"main_priority" datastore:"main_priority"`

	Region    string     `json:"region" datastore:"region"`
	RegionUrl string     `json:"region_url" datastore:"region_url"`
	Tutorials []Tutorial `json:"tutorials" datastore:"tutorials"`
	LeadInfo  LeadInfo   `json:"lead_info,omitempty" datastore:"lead_info"`
	OrgAuth   OrgAuth    `json:"org_auth" datastore:"org_auth"`

	CreatorId string `json:"creator_id" datastore:"creator_id"`
	Disabled  bool   `json:"disabled" datastore:"disabled"`

	EulaSigned   bool        `json:"eula_signed" datastore:"eula_signed"`
	EulaSignedBy string      `json:"eula_signed_by" datastore:"eula_signed_by"`
	Billing      Billing     `json:"Billing" datastore:"Billing"`
	CreatorOrg   string      `json:"creator_org" datastore:"creator_org"`
	Branding     OrgBranding `json:"branding" datastore:"branding"`
}

func AddPriority

func AddPriority(org Org, priority Priority, updated bool) (*Org, bool)

func GetAllChildOrgs

func GetAllChildOrgs(ctx context.Context, orgId string) ([]Org, error)

func GetAllOrgs

func GetAllOrgs(ctx context.Context) ([]Org, error)

func GetFirstOrg

func GetFirstOrg(ctx context.Context) (*Org, error)

func GetOrg

func GetOrg(ctx context.Context, id string) (*Org, error)

ListBooks returns a list of books, ordered by title. Handles org grabbing and user / org migrations

func GetOrgByCreatorId

func GetOrgByCreatorId(ctx context.Context, id string) (*Org, error)

func GetOrgByField

func GetOrgByField(ctx context.Context, fieldName, value string) ([]Org, error)

func GetTutorials

func GetTutorials(ctx context.Context, org Org, updateOrg bool) *Org

func GetWorkflowSuggestions

func GetWorkflowSuggestions(ctx context.Context, user User, org *Org, orgUpdated bool, amount int) (*Org, bool)

func ValidateExecutionUsage

func ValidateExecutionUsage(ctx context.Context, orgId string) (*Org, error)

Returns an error if the users' org is over quota

type OrgAuth

type OrgAuth struct {
	Token   string    `json:"token" datastore:"token"`
	Expires time.Time `json:"expires" datastore:"expires"`
}

Authentication overrides that times out Only works for certain features, such as public auth keys Timeout after 24 hours

type OrgBranding

type OrgBranding struct {
	EnableChat        bool   `json:"enable_chat" datastore:"enable_chat"`
	HomeUrl           string `json:"home_url" datastore:"home_url"`
	Theme             string `json:"theme" datastore:"theme"`
	DocumentationLink string `json:"documentation_link" datastore:"documentation_link"`
	GlobalUser        bool   `json:"global_user" datastore:"global_user"` // Global user is true when the user is admin of both parent org and suborg.
	SupportEmail      string `json:"support_email" datastore:"support_email"`
	LogoutUrl         string `json:"logout_url" datastore:"logout_url"`
	BrandColor        string `json:"brand_color" datastore:"brand_color"`
	BrandName         string `json:"brand_name" datastore:"brand_name"`
}

type OrgMini

type OrgMini struct {
	Name      string     `json:"name" datastore:"name"`
	Id        string     `json:"id" datastore:"id"`
	Users     []UserMini `json:"users" datastore:"users"`
	Role      string     `json:"role" datastore:"role"`
	ChildOrgs []OrgMini  `json:"child_orgs" datastore:"child_orgs"`
	RegionUrl string     `json:"region_url" datastore:"region_url"`

	// Branding related
	Image      string      `json:"image" datastore:"image,noindex"`
	CreatorOrg string      `json:"creator_org" datastore:"creator_org"`
	Branding   OrgBranding `json:"branding" datastore:"branding"`
}

Used within a user

func SortOrgList

func SortOrgList(orgs []OrgMini) []OrgMini

Sorts an org list in order to make ChildOrgs appear under their parent org

type OrgSearchWrapper

type OrgSearchWrapper struct {
	Took     int  `json:"took"`
	TimedOut bool `json:"timed_out"`
	Shards   struct {
		Total      int `json:"total"`
		Successful int `json:"successful"`
		Skipped    int `json:"skipped"`
		Failed     int `json:"failed"`
	} `json:"_shards"`
	Hits struct {
		Total struct {
			Value    int    `json:"value"`
			Relation string `json:"relation"`
		} `json:"total"`
		MaxScore float64 `json:"max_score"`
		Hits     []struct {
			Index  string  `json:"_index"`
			Type   string  `json:"_type"`
			ID     string  `json:"_id"`
			Score  float64 `json:"_score"`
			Source Org     `json:"_source"`
		} `json:"hits"`
	} `json:"hits"`
}

type OrgWrapper

type OrgWrapper struct {
	Index       string `json:"_index"`
	Type        string `json:"_type"`
	ID          string `json:"_id"`
	Version     int    `json:"_version"`
	SeqNo       int    `json:"_seq_no"`
	PrimaryTerm int    `json:"_primary_term"`
	Found       bool   `json:"found"`
	Source      Org    `json:"_source"`
}

type OutlookAttachment

type OutlookAttachment struct {
	OdataContext          string      `json:"@odata.context"`
	OdataType             string      `json:"@odata.type"`
	OdataMediaContentType string      `json:"@odata.mediaContentType"`
	ID                    string      `json:"id"`
	LastModifiedDateTime  time.Time   `json:"lastModifiedDateTime"`
	Name                  string      `json:"name"`
	ContentType           string      `json:"contentType"`
	Size                  int         `json:"size"`
	IsInline              bool        `json:"isInline"`
	ContentID             interface{} `json:"contentId"`
	ContentLocation       interface{} `json:"contentLocation"`
	ContentBytes          string      `json:"contentBytes"`
}

func GetOutlookAttachment

func GetOutlookAttachment(client *http.Client, emailId, attachmentId string) (OutlookAttachment, []byte, error)

type OutlookFolder

type OutlookFolder struct {
	ID               string `json:"id"`
	DisplayName      string `json:"displayName"`
	ParentFolderID   string `json:"parentFolderId"`
	ChildFolderCount int    `json:"childFolderCount"`
	UnreadItemCount  int    `json:"unreadItemCount"`
	TotalItemCount   int    `json:"totalItemCount"`
}

type OutlookFolders

type OutlookFolders struct {
	OdataContext  string          `json:"@odata.context"`
	OdataNextLink string          `json:"@odata.nextLink"`
	Value         []OutlookFolder `json:"value"`
}

func GetGmailFolders

func GetGmailFolders(client *http.Client) (OutlookFolders, error)

type OutlookProfile

type OutlookProfile struct {
	OdataContext      string      `json:"@odata.context"`
	BusinessPhones    []string    `json:"businessPhones"`
	DisplayName       string      `json:"displayName"`
	GivenName         string      `json:"givenName"`
	JobTitle          interface{} `json:"jobTitle"`
	Mail              string      `json:"mail"`
	MobilePhone       interface{} `json:"mobilePhone"`
	OfficeLocation    interface{} `json:"officeLocation"`
	PreferredLanguage interface{} `json:"preferredLanguage"`
	Surname           string      `json:"surname"`
	UserPrincipalName string      `json:"userPrincipalName"`
	ID                string      `json:"id"`
}

type OutlookSubscription

type OutlookSubscription struct {
	ChangeType         string `json:"changeType"`
	NotificationURL    string `json:"notificationUrl"`
	Resource           string `json:"resource"`
	ExpirationDateTime string `json:"expirationDateTime"`
	ClientState        string `json:"clientState"`
	Id                 string `json:"id"`
}

type ParsedApiWrapper

type ParsedApiWrapper struct {
	Index       string        `json:"_index"`
	Type        string        `json:"_type"`
	ID          string        `json:"_id"`
	Version     int           `json:"_version"`
	SeqNo       int           `json:"_seq_no"`
	PrimaryTerm int           `json:"_primary_term"`
	Found       bool          `json:"found"`
	Source      ParsedOpenApi `json:"_source"`
}

type ParsedMessage

type ParsedMessage struct {
	EmailAddress string `json:"emailAddress"`
	HistoryId    int    `json:"historyId"`
	MessageId    string `json:"messageId"`
}

type ParsedOpenApi

type ParsedOpenApi struct {
	Body    string `datastore:"body,noindex" json:"body"`
	ID      string `datastore:"id" json:"id,omitempty"`
	Success bool   `datastore:"success,omitempty" json:"success,omitempty"`
}

func GetAllOpenApi

func GetAllOpenApi(ctx context.Context) ([]ParsedOpenApi, error)

func GetOpenApiDatastore

func GetOpenApiDatastore(ctx context.Context, id string) (ParsedOpenApi, error)

type ParsedShuffleMail

type ParsedShuffleMail struct {
	Body struct {
		URI           []string `json:"uri"`
		Email         []string `json:"email"`
		Domain        []string `json:"domain"`
		ContentHeader struct {
		} `json:"content_header"`
		Content     string `json:"content"`
		ContentType string `json:"content_type"`
		Hash        string `json:"hash"`
		RawBody     string `json:"raw_body"`
	} `json:"body"`
	Header struct {
		Subject  string   `json:"subject"`
		From     string   `json:"from"`
		To       []string `json:"to"`
		Date     string   `json:"date"`
		Received []struct {
			Src  string   `json:"src"`
			From []string `json:"from"`
			By   []string `json:"by"`
			With string   `json:"with"`
			Date string   `json:"date"`
		} `json:"received"`
		ReceivedDomain []string `json:"received_domain"`
		ReceivedIP     []string `json:"received_ip"`
		Header         struct {
		} `json:"header"`
	} `json:"header"`
	MessageID      string   `json:"message_id"`
	EmailFileid    string   `json:"email_fileid"`
	AttachmentUids []string `json:"attachment_uids"`
}

This is what the structure should be when it's sent into a workflow

type PartnerInfo

type PartnerInfo struct {
	Reseller      bool   `json:"reseller" datastore:"reseller"`
	ResellerLevel string `json:"reseller_level" datastore:"reseller_level"`
}

type PasswordChange

type PasswordChange struct {
	Username        string `json:"username"`
	Newpassword     string `json:"newpassword"`
	Newpassword2    string `json:"newpassword2"`
	Currentpassword string `json:"currentpassword"`
}

type PaymentSubscription

type PaymentSubscription struct {
	Active           bool     `json:"active" datastore:"active"`
	Startdate        int64    `json:"startdate" datastore:"startdate"`
	CancellationDate int64    `json:"cancellationdate" datastore:"cancellationdate"`
	Enddate          int64    `json:"enddate" datastore:"enddate"`
	Name             string   `json:"name" datastore:"name"`
	Recurrence       string   `json:"recurrence" datastore:"recurrence"`
	Reference        string   `json:"reference" datastore:"reference"`
	Level            string   `json:"level" datastore:"level"`
	Amount           string   `json:"amount" datastore:"amount"`
	Currency         string   `json:"currency" datastore:"currency"`
	Limit            int64    `json:"limit" datastore:"limit"`
	Features         []string `json:"features" datastore:"features"`

	Eula         string `json:"eula" datastore:"eula,noindex"`
	EulaSigned   bool   `json:"eula_signed" datastore:"eula_signed"`
	EulaSignedBy string `json:"eula_signed_by" datastore:"eula_signed_by"`
}

type PersonalInfo

type PersonalInfo struct {
	Firstname string   `datastore:"firstname" json:"firstname"`
	Lastname  string   `datastore:"lastname" json:"lastname"`
	Role      string   `datastore:"role" json:"role"`
	Tutorials []string `datastore:"tutorials" json:"tutorials"`
}

type Pipeline

type Pipeline struct {
	Name        string   `json:"name" datastore:"name"`
	ID          string   `json:"id" datastore:"id"`
	Type        string   `json:"type" datastore:"type"`
	Command     string   `json:"command" datastore:"command"`
	Environment string   `json:"environment" datastore:"environment"`
	WorkflowId  string   `json:"workflow_id" datastore:"workflow_id"`
	StartNode   string   `json:"start_node" datastore:"start_node"`
	OrgId       string   `json:"org_id" datastore:"org_id"`
	Status      string   `json:"status" datastore:"status"`
	Errors      []string `json:"errors" datastore:"errors"`
	Url         string   `json:"url" datastore:"url"`
	Owner       string   `json:"owner" datastore:"owner"`

	PipelineId string `json:"pipeline_id" datastore:"pipeline_id"`
	TriggerId  string `json:"trigger_id" datastore:"trigger_id"`
}

func GetPipeline

func GetPipeline(ctx context.Context, triggerId string) (*Pipeline, error)

func GetPipelines

func GetPipelines(ctx context.Context, OrgId string) ([]Pipeline, error)

type PipelineInfo

type PipelineInfo struct {
	ID           string `json:"id"`
	Name         string `json:"name"`
	Hidden       bool   `json:"hidden"`
	Definition   string `json:"definition"`
	Configured   bool   `json:"configured"`
	Package      any    `json:"package"`
	Unstoppable  bool   `json:"unstoppable"`
	CreatedAt    int64  `json:"created_at"`
	LastModified int64  `json:"last_modified"`
	StartTime    string `json:"start_time"`
	TotalRuns    int    `json:"total_runs"`
	State        string `json:"state"`
	Error        string `json:"error"`
	Diagnostics  []any  `json:"diagnostics"`
	Labels       []any  `json:"labels"`
	RetryDelay   string `json:"retry_delay"`
	Autostart    struct {
		Created   bool `json:"created"`
		Completed bool `json:"completed"`
		Failed    bool `json:"failed"`
	} `json:"autostart"`
	Autodelete struct {
		Completed bool `json:"completed"`
		Failed    bool `json:"failed"`
		Stopped   bool `json:"stopped"`
	} `json:"autodelete"`
	TTL          any `json:"ttl"`
	RemainingTTL any `json:"remaining_ttl"`
}

The raw output from pipelines in Tenzir

type PipelineInfoMini

type PipelineInfoMini struct {
	Name       string `json:"name"`
	ID         string `json:"id"`
	Definition string `json:"definition"`
	TotalRuns  int    `json:"total_runs"`
	CreatedAt  int64  `json:"created_at"`

	Environment string `json:"environment"`
}

type PipelineInfoWrapper

type PipelineInfoWrapper struct {
	Pipelines []PipelineInfo `json:"pipelines"`
}

type PipelineRequest

type PipelineRequest struct {
	ID          string `json:"id"`
	Name        string `json:"name"`
	Type        string `json:"type"`
	Command     string `json:"command"`
	Environment string `json:"environment"`
	WorkflowId  string `json:"workflow_id"`
	StartNode   string `json:"start_node"`
	Url         string `json:"url"`

	PipelineId string `json:"pipeline_id"`
	TriggerId  string `json:"trigger_id"`
}

type PipelineWrapper

type PipelineWrapper struct {
	Index   string   `json:"_index"`
	Type    string   `json:"_type"`
	ID      string   `json:"_id"`
	Version int      `json:"_version"`
	Found   bool     `json:"found"`
	Source  Pipeline `json:"_source"`
}

type Position

type Position struct {
	X float64 `json:"x" datastore:"x"`
	Y float64 `json:"y" datastore:"y"`
}

type Priority

type Priority struct {
	Name        string `json:"name" datastore:"name"`
	Description string `json:"description" datastore:"description"`
	Type        string `json:"type" datastore:"type"`
	Active      bool   `json:"active" datastore:"active"`
	URL         string `json:"url" datastore:"url"`
	Severity    int    `json:"severity" datastore:"severity"` // 1 = high, 2 = mid, 3 = low

	Time int64 `json:"time" datastore:"time"`
}

func GetPriorities

func GetPriorities(ctx context.Context, user User, org *Org) ([]Priority, error)

Should just be based on cache, not queries - keep it fast!

type PrizedrawSubmitter

type PrizedrawSubmitter struct {
	IP             string   `json:"ip"`
	ID             string   `json:"id"`
	Username       string   `json:"username"`
	UserId         string   `json:"user_id""`
	Email          string   `json:"email"`
	Firstname      string   `json:"firstname"`
	Lastname       string   `json:"lastname"`
	Twitter        string   `json:"twitter"`
	Address        string   `json:"address"`
	WinningIds     []string `json:"winning_ids"`
	PreviousWinner bool     `json:"previous_winner"`
	Created        int64    `json:"created"`
	Edited         int64    `json:"edited"`
}

type PublicProfile

type PublicProfile struct {
	Public              bool                `datastore:"public" json:"public"`
	Self                bool                `datastore:"self" json:"self"`
	GithubUsername      string              `datastore:"github_username" json:"github_username"`
	GithubUserid        string              `datastore:"github_userid" json:"github_userid"`
	GithubAvatar        string              `datastore:"github_avatar,noindex" json:"github_avatar"`
	GithubLocation      string              `datastore:"github_location" json:"github_location"`
	GithubUrl           string              `datastore:"github_url" json:"github_url"`
	GithubBio           string              `datastore:"github_bio" json:"github_bio"`
	GithubTwitter       string              `datastore:"github_twitter" json:"github_twitter"`
	WorkStatus          string              `datastore:"work_status" json:"work_status"`
	Banner              string              `datastore:"banner" json:"banner"`
	GithubContributions GithubContributions `datastore:"github_contributions" json:"github_contributions"`
	ShuffleEarnings     string              `datastore:"shuffle_earnings" json:"shuffle_earnings"`
	ShuffleRanking      string              `datastore:"shuffle_ranking" json:"shuffle_ranking"`

	Skills          []string        `json:"skills"`
	Synonyms        []string        `json:"synonyms"`
	Workflows       int64           `json:"workflows"`
	Apps            int64           `json:"apps"`
	SpecializedApps []MinimizedApps `json:"specialized_apps"`
	Verified        bool            `json:"verified"`
	Social          []string        `json:"social"`
}

type QueryInput

type QueryInput struct {
	// Required
	Query string `json:"query" datastore:"query,noindex"`

	// Output helpers
	Id           string `json:"id,omitempty"`
	OutputFormat string `json:"output_format,omitempty"`

	// App helpers
	WorkflowId string                       `json:"workflow_id"`
	AppName    string                       `json:"app_name,omitempty"`
	AppId      string                       `json:"app_id,omitempty"`
	Category   string                       `json:"category,omitempty"`
	ActionName string                       `json:"action_name,omitempty"`
	Parameters []WorkflowAppActionParameter `json:"parameters,omitempty"`

	// Optional Input Parameters for more context
	AppContext  []AppContext `json:"app_context,omitempty"`
	UserId      string       `json:"user_id,omitempty"`
	Username    string       `json:"username,omitempty"`
	OrgId       string       `json:"org_id,omitempty"`
	TimeStarted int64        `json:"time_started,omitempty"`
	TimeEnded   int64        `json:"time_ended,omitempty"`
	Formatting  string       `json:"formatting,omitempty"`

	// For OpenAI assistant with Shuffle labels
	ThreadId string `json:"thread_id,omitempty"`
	RunId    string `json:"run_id,omitempty"`
}

type Recipients

type Recipients struct {
	Bcc []Mailbox `description:"List of 'bcc' Mailbox objects" json:"bcc,omitempty" validate:"omitempty"`
	Cc  []Mailbox `description:"List of 'cc' Mailbox objects" json:"cc,omitempty" validate:"omitempty"`
	To  []Mailbox `description:"List of 'to' Mailbox objects" json:"to,omitempty" validate:"omitempty"`
}

type RecommendAction

type RecommendAction struct {
	AppName         string            `json:"app_name"`
	ActionId        string            `json:"action_id"`
	Recommendations []Recommendations `json:"recommendations"`
}

type RecommendationAction

type RecommendationAction struct {
	Action string `json:"action"`
	Name   string `json:"name"`
}

type Recommendations

type Recommendations struct {
	AppName    string `json:"app_name"`
	AppVersion string `json:"app_version"`
	AppAction  string `json:"app_action"`
	AppId      string `json:"app_id"`
	LargeImage string `json:"large_image"`
}

type RegionBody

type RegionBody struct {
	DstRegion string `json:"dst_region"`
	SrcRegion string `json:"src_region"`
	OrgId     string `json:"org_id"`
}

type RegionChangeHistory

type RegionChangeHistory struct {
	OrgId       string `json:"org_id"`
	LastAttempt int64  `json:"last_attempt"`
}

func GetOrgMoveCache

func GetOrgMoveCache(ctx context.Context, orgId string) (RegionChangeHistory, error)

type RequestResponse

type RequestResponse struct {
	Success bool   `json:"success"`
	Reason  string `json:"reason"`
	Details string `json:"details"`
}

type ResellerDeal

type ResellerDeal struct {
	ID          string `json:"id" datastore:"id"`
	Name        string `json:"name" datastore:"name"`
	Type        string `json:"type" datastore:"type"`
	Address     string `json:"address" datastore:"address"`
	Country     string `json:"country" datastore:"country"`
	Currency    string `json:"currency" datastore:"currency"`
	Status      string `json:"status" datastore:"status"`
	Value       string `json:"value" datastore:"value"`
	Discount    string `json:"discount" datastore:"discount"`
	ResellerOrg string `json:"reseller_org" datastore:"reseller_org"`
	Created     int64  `json:"created" datastore:"created"`
	Edited      int64  `json:"edited" datastore:"edited"`
}

func GetAllDeals

func GetAllDeals(ctx context.Context, orgId string) ([]ResellerDeal, error)

type ResultChecker

type ResultChecker struct {
	Success bool   `json:"success"`
	Reason  string `json:"reason"`
	Extra   string `json:"extra,omitempty"`
}

type RetStruct

type RetStruct struct {
	Success         bool         `json:"success"`
	SyncFeatures    SyncFeatures `json:"sync_features"`
	SessionKey      string       `json:"session_key"`
	IntervalSeconds int64        `json:"interval_seconds"`
}

type SAMLResponse

type SAMLResponse struct {
	XMLName      xml.Name `xml:"Response"`
	Text         string   `xml:",chardata"`
	Destination  string   `xml:"Destination,attr"`
	ID           string   `xml:"ID,attr"`
	IssueInstant string   `xml:"IssueInstant,attr"`
	Version      string   `xml:"Version,attr"`
	Saml2p       string   `xml:"saml2p,attr"`
	Issuer       struct {
		Text   string `xml:",chardata"`
		Format string `xml:"Format,attr"`
		Saml2  string `xml:"saml2,attr"`
	} `xml:"Issuer"`
	Signature struct {
		Text       string `xml:",chardata"`
		Ds         string `xml:"ds,attr"`
		SignedInfo struct {
			Text                   string `xml:",chardata"`
			CanonicalizationMethod struct {
				Text      string `xml:",chardata"`
				Algorithm string `xml:"Algorithm,attr"`
			} `xml:"CanonicalizationMethod"`
			SignatureMethod struct {
				Text      string `xml:",chardata"`
				Algorithm string `xml:"Algorithm,attr"`
			} `xml:"SignatureMethod"`
			Reference struct {
				Text       string `xml:",chardata"`
				URI        string `xml:"URI,attr"`
				Transforms struct {
					Text      string `xml:",chardata"`
					Transform []struct {
						Text      string `xml:",chardata"`
						Algorithm string `xml:"Algorithm,attr"`
					} `xml:"Transform"`
				} `xml:"Transforms"`
				DigestMethod struct {
					Text      string `xml:",chardata"`
					Algorithm string `xml:"Algorithm,attr"`
				} `xml:"DigestMethod"`
				DigestValue string `xml:"DigestValue"`
			} `xml:"Reference"`
		} `xml:"SignedInfo"`
		SignatureValue string `xml:"SignatureValue"`
		KeyInfo        struct {
			Text     string `xml:",chardata"`
			X509Data struct {
				Text            string `xml:",chardata"`
				X509Certificate string `xml:"X509Certificate"`
			} `xml:"X509Data"`
		} `xml:"KeyInfo"`
	} `xml:"Signature"`
	Status struct {
		Text       string `xml:",chardata"`
		Saml2p     string `xml:"saml2p,attr"`
		StatusCode struct {
			Text  string `xml:",chardata"`
			Value string `xml:"Value,attr"`
		} `xml:"StatusCode"`
	} `xml:"Status"`
	Assertion struct {
		Text         string `xml:",chardata"`
		ID           string `xml:"ID,attr"`
		IssueInstant string `xml:"IssueInstant,attr"`
		Version      string `xml:"Version,attr"`
		Saml2        string `xml:"saml2,attr"`
		Issuer       struct {
			Text   string `xml:",chardata"`
			Format string `xml:"Format,attr"`
			Saml2  string `xml:"saml2,attr"`
		} `xml:"Issuer"`
		Signature struct {
			Text       string `xml:",chardata"`
			Ds         string `xml:"ds,attr"`
			SignedInfo struct {
				Text                   string `xml:",chardata"`
				CanonicalizationMethod struct {
					Text      string `xml:",chardata"`
					Algorithm string `xml:"Algorithm,attr"`
				} `xml:"CanonicalizationMethod"`
				SignatureMethod struct {
					Text      string `xml:",chardata"`
					Algorithm string `xml:"Algorithm,attr"`
				} `xml:"SignatureMethod"`
				Reference struct {
					Text       string `xml:",chardata"`
					URI        string `xml:"URI,attr"`
					Transforms struct {
						Text      string `xml:",chardata"`
						Transform []struct {
							Text      string `xml:",chardata"`
							Algorithm string `xml:"Algorithm,attr"`
						} `xml:"Transform"`
					} `xml:"Transforms"`
					DigestMethod struct {
						Text      string `xml:",chardata"`
						Algorithm string `xml:"Algorithm,attr"`
					} `xml:"DigestMethod"`
					DigestValue string `xml:"DigestValue"`
				} `xml:"Reference"`
			} `xml:"SignedInfo"`
			SignatureValue string `xml:"SignatureValue"`
			KeyInfo        struct {
				Text     string `xml:",chardata"`
				X509Data struct {
					Text            string `xml:",chardata"`
					X509Certificate string `xml:"X509Certificate"`
				} `xml:"X509Data"`
			} `xml:"KeyInfo"`
		} `xml:"Signature"`
		Subject struct {
			Text   string `xml:",chardata"`
			Saml2  string `xml:"saml2,attr"`
			NameID struct {
				Text   string `xml:",chardata"`
				Format string `xml:"Format,attr"`
			} `xml:"NameID"`
			SubjectConfirmation struct {
				Text                    string `xml:",chardata"`
				Method                  string `xml:"Method,attr"`
				SubjectConfirmationData struct {
					Text         string `xml:",chardata"`
					NotOnOrAfter string `xml:"NotOnOrAfter,attr"`
					Recipient    string `xml:"Recipient,attr"`
				} `xml:"SubjectConfirmationData"`
			} `xml:"SubjectConfirmation"`
		} `xml:"Subject"`
		Conditions struct {
			Text                string `xml:",chardata"`
			NotBefore           string `xml:"NotBefore,attr"`
			NotOnOrAfter        string `xml:"NotOnOrAfter,attr"`
			Saml2               string `xml:"saml2,attr"`
			AudienceRestriction struct {
				Text     string `xml:",chardata"`
				Audience string `xml:"Audience"`
			} `xml:"AudienceRestriction"`
		} `xml:"Conditions"`
		AuthnStatement struct {
			Text         string `xml:",chardata"`
			AuthnInstant string `xml:"AuthnInstant,attr"`
			SessionIndex string `xml:"SessionIndex,attr"`
			Saml2        string `xml:"saml2,attr"`
			AuthnContext struct {
				Text                 string `xml:",chardata"`
				AuthnContextClassRef string `xml:"AuthnContextClassRef"`
			} `xml:"AuthnContext"`
		} `xml:"AuthnStatement"`
	} `xml:"Assertion"`
}

type SPF

type SPF struct {
	Verdict     *string `description:"Verdict of the SPF" json:"verdict" validate:"omitempty"`
	Server      *Domain `description:"Domain of the server that checked the SPF" json:"server,omitempty" validate:"omitempty"`
	ClientIP    *IP     `description:"IP of the client the email originated from" json:"client_ip,omitempty" validate:"omitempty"`
	Designator  *string `description:"Email or domain of the designating body" json:"designator,omitempty" validate:"omitempty"`
	Helo        *Domain `description:"Domain of the previous server this message hopped from" json:"helo,omitempty" validate:"omitempty"`
	Description *string `description:"Verbose description of the SPF verdict" json:"description,omitempty" validate:"omitempty"`
}

type SSOConfig

type SSOConfig struct {
	SSOEntrypoint       string `json:"sso_entrypoint" datastore:"sso_entrypoint"`
	SSOCertificate      string `json:"sso_certificate" datastore:"sso_certificate"`
	OpenIdClientId      string `json:"client_id" datastore:"client_id"`
	OpenIdClientSecret  string `json:"client_secret" datastore:"client_secret"`
	OpenIdAuthorization string `json:"openid_authorization" datastore:"openid_authorization"`
	OpenIdToken         string `json:"openid_token" datastore:"openid_token"`
	SSORequired         bool   `json:"SSORequired" datastore:"SSORequired"`
	AutoProvision       bool   `json:"auto_provision" datastore:"auto_provision"`
	RoleRequired        bool   `json:"role_required" datastore:"role_required"`
}

type SSOResponse

type SSOResponse struct {
	Success bool   `json:"success"`
	Reason  string `json:"reason"`
	URL     string `json:"url"`
}

type SamlRequest

type SamlRequest struct {
	XMLName                     xml.Name `xml:"AuthnRequest"`
	Text                        string   `xml:",chardata"`
	Samlp                       string   `xml:"samlp,attr"`
	Xmlns                       string   `xml:"xmlns,attr"`
	Saml                        string   `xml:"saml,attr"`
	AssertionConsumerServiceURL string   `xml:"AssertionConsumerServiceURL,attr"`
	Destination                 string   `xml:"Destination,attr"`
	ForceAuthn                  string   `xml:"ForceAuthn,attr"`
	ID                          string   `xml:"ID,attr"`
	IssueInstant                string   `xml:"IssueInstant,attr"`
	ProtocolBinding             string   `xml:"ProtocolBinding,attr"`
	Version                     string   `xml:"Version,attr"`
	Issuer                      string   `xml:"Issuer"`
	NameIDPolicy                struct {
		Text        string `xml:",chardata"`
		AllowCreate string `xml:"AllowCreate,attr"`
		Format      string `xml:"Format,attr"`
	} `xml:"NameIDPolicy"`
}

type Schedule

type Schedule struct {
	Name              string `json:"name" datastore:"name"`
	Frequency         string `json:"frequency" datastore:"frequency"`
	ExecutionArgument string `json:"execution_argument" datastore:"execution_argument,noindex"`
	Id                string `json:"id" datastore:"id"`
	OrgId             string `json:"org_id" datastore:"org_id"`
	Environment       string `json:"environment" datastore:"environment"`
	Start             string `json:"start" datastore:"start"`
}

type ScheduleApp

type ScheduleApp struct {
	Foldername  string      `json:"foldername" datastore:"foldername,noindex"`
	Name        string      `json:"name" datastore:"name,noindex"`
	Id          string      `json:"id" datastore:"id,noindex"`
	Description string      `json:"description" datastore:"description,noindex"`
	Action      string      `json:"action" datastore:"action,noindex"`
	Config      []Appconfig `json:"config,omitempty" datastore:"config,noindex"`
}

type ScheduleApps

type ScheduleApps struct {
	Apps    []ApiYaml `json:"apps"`
	Success bool      `json:"success"`
}

type ScheduleOld

type ScheduleOld struct {
	Name                 string       `json:"name" datastore:"name"`
	Id                   string       `json:"id" datastore:"id"`
	StartNode            string       `json:"start_node" datastore:"start_node"`
	Seconds              int          `json:"seconds" datastore:"seconds"`
	WorkflowId           string       `json:"workflow_id" datastore:"workflow_id", `
	Argument             string       `json:"argument" datastore:"argument"`
	WrappedArgument      string       `json:"wrapped_argument" datastore:"wrapped_argument"`
	AppInfo              AppInfo      `json:"appinfo" datastore:"appinfo,noindex"`
	Finished             bool         `json:"finished" finished:"id"`
	BaseAppLocation      string       `json:"base_app_location" datastore:"baseapplocation,noindex"`
	Translator           []Translator `json:"translator,omitempty" datastore:"translator"`
	Org                  string       `json:"org" datastore:"org"`
	CreatedBy            string       `json:"createdby" datastore:"createdby"`
	Availability         string       `json:"availability" datastore:"availability"`
	CreationTime         int64        `json:"creationtime" datastore:"creationtime,noindex"`
	LastModificationtime int64        `json:"lastmodificationtime" datastore:"lastmodificationtime,noindex"`
	LastRuntime          int64        `json:"lastruntime" datastore:"lastruntime,noindex"`
	Frequency            string       `json:"frequency" datastore:"frequency,noindex"`
	Environment          string       `json:"environment" datastore:"environment"`
	Status               string       `json:"status" datastore:"status"`
}

func GetAllSchedules

func GetAllSchedules(ctx context.Context, orgId string) ([]ScheduleOld, error)

func GetGcpSchedule

func GetGcpSchedule(ctx context.Context, id string) (*ScheduleOld, error)

func GetSchedule

func GetSchedule(ctx context.Context, schedulename string) (*ScheduleOld, error)

func GetScheduleByWorkflowId

func GetScheduleByWorkflowId(ctx context.Context, workflowId string) (*ScheduleOld, error)

type ScheduleSearchWrapper

type ScheduleSearchWrapper struct {
	Took     int  `json:"took"`
	TimedOut bool `json:"timed_out"`
	Shards   struct {
		Total      int `json:"total"`
		Successful int `json:"successful"`
		Skipped    int `json:"skipped"`
		Failed     int `json:"failed"`
	} `json:"_shards"`
	Hits struct {
		Total struct {
			Value    int    `json:"value"`
			Relation string `json:"relation"`
		} `json:"total"`
		MaxScore float64 `json:"max_score"`
		Hits     []struct {
			Index  string      `json:"_index"`
			Type   string      `json:"_type"`
			ID     string      `json:"_id"`
			Score  float64     `json:"_score"`
			Source ScheduleOld `json:"_source"`
		} `json:"hits"`
	} `json:"hits"`
}

type ScheduleWrapper

type ScheduleWrapper struct {
	Index       string      `json:"_index"`
	Type        string      `json:"_type"`
	ID          string      `json:"_id"`
	Version     int         `json:"_version"`
	SeqNo       int         `json:"_seq_no"`
	PrimaryTerm int         `json:"_primary_term"`
	Found       bool        `json:"found"`
	Source      ScheduleOld `json:"_source"`
}

type Schedules

type Schedules struct {
	Schedules []ScheduleOld `json:"schedules"`
	Success   bool          `json:"success"`
}

Returned from /GET /schedules

type SchemaDefinition

type SchemaDefinition struct {
	Type string `json:"type" datastore:"type"`
	Name string `json:"name,omitempty" datastore:"name"`
}

type SchemalessOutput

type SchemalessOutput struct {
	Success bool   `json:"success"`
	Action  string `json:"action"`
	Status  int    `json:"status,omitempty"`
	URL     string `json:"url,omitempty"`

	// JSON output. What if it's a list?
	//Output map[string]interface{} `json:"output"`
	Output interface{} `json:"output"`

	// Optional
	RawResponse interface{} `json:"raw_response,omitempty"`
}

type SelectedDetectionRules

type SelectedDetectionRules struct {
	SelectedRules []DetectionFileInfo `json:"detection_rules" datastore:"detection_rules"`
}

func GetSelectedRules

func GetSelectedRules(ctx context.Context, TriggerId string) (*SelectedDetectionRules, error)

type SelectedRulesWrapper

type SelectedRulesWrapper struct {
	Index       string                 `json:"_index"`
	Type        string                 `json:"_type"`
	ID          string                 `json:"_id"`
	Version     int                    `json:"_version"`
	SeqNo       int                    `json:"_seq_no"`
	PrimaryTerm int                    `json:"_primary_term"`
	Found       bool                   `json:"found"`
	Source      SelectedDetectionRules `json:"_source"`
}

type Session

type Session struct {
	Username string `datastore:"Username,noindex"`
	Id       string `datastore:"Id,noindex"`
	UserId   string `datastore:"user_id,noindex"`
	Session  string `datastore:"session,noindex"`
}

type SessionCookie

type SessionCookie struct {
	Key        string `json:"key"`
	Value      string `json:"value"`
	Expiration int64  `json:"expiration"`
}

type SessionWrapper

type SessionWrapper struct {
	Index       string  `json:"_index"`
	Type        string  `json:"_type"`
	ID          string  `json:"_id"`
	Version     int     `json:"_version"`
	SeqNo       int     `json:"_seq_no"`
	PrimaryTerm int     `json:"_primary_term"`
	Found       bool    `json:"found"`
	Source      Session `json:"_source"`
}

type SettingsReturn

type SettingsReturn struct {
	Success  bool   `json:"success"`
	Username string `json:"username"`
	Verified bool   `json:"verified"`
	Apikey   string `json:"apikey"`
	Image    string `json:"image"`
}

type ShuffleStorage

type ShuffleStorage struct {
	GceProject    string
	Dbclient      datastore.Client
	StorageClient storage.Client
	Environment   string
	CacheDb       bool
	Es            opensearch.Client
	DbType        string
	CloudUrl      string
	BucketName    string
}

Dumps data from cache to DB for every {dbInterval} action (tried 5, 10, 25)

func GetProject

func GetProject() ShuffleStorage

func RunInit

func RunInit(dbclient datastore.Client, storageClient storage.Client, gceProject, environment string, cacheDb bool, dbType string, defaultCreds bool, count int) (ShuffleStorage, error)

type Signature

type Signature struct {
	Type      string `description:"The type of signature, derived from the field name" json:"type,omitempty" validate:"omitempty"`
	Instance  string `description:"Instance number of this signature (if ARC)" json:"instance,omitempty" validate:"omitempty"`
	Version   string `description:"Version" json:"version,omitempty" validate:"omitempty"`
	Algorithm string `description:"Signing algorithm" json:"algorithm,omitempty" validate:"omitempty"`
	Selector  string `description:"Selector" json:"selector,omitempty" validate:"omitempty"`
	Signature string `description:"Signature of headers and body" json:"signature,omitempty" validate:"omitempty"`
	BodyHash  string `description:"Body Hash" json:"body_hash,omitempty" validate:"omitempty"`
	Domain    string `description:"Domain" json:"domain,omitempty" validate:"omitempty"`
	Headers   string `description:"Header fields signed by the algorithm" json:"headers,omitempty" validate:"omitempty"`
}

type SimilarAction

type SimilarAction struct {
	WorkflowId  string `json:"workflow_id" datastore:"workflow_id"`
	ExecutionId string `json:"execution_id" datastore:"execution_id"`
	Similarity  int64  `json:"similarity" datastore:"similarity"`
}

type SingleResult

type SingleResult struct {
	Success       bool           `json:"success"`
	Result        string         `json:"result"`
	Id            string         `json:"id"`
	Authorization string         `json:"authorization"`
	Errors        []string       `json:"errors"`
	Validation    TypeValidation `json:"validation"`

	Parameters []WorkflowAppActionParameter `json:"parameters"`
}

func HandleRetValidation

func HandleRetValidation(ctx context.Context, workflowExecution WorkflowExecution, resultAmount int, actionId ...string) SingleResult

Handles the return of a single action

type SingulResult added in v0.8.67

type SingulResult struct {
	Success     bool        `json:"success"`
	Action      string      `json:"action"`
	Output      string      `json:"output"`
	RawResponse interface{} `json:"raw_response"`
}

type SingulStats added in v0.8.67

type SingulStats struct {
	Id string `json:"id"`

	Failed               bool   `json:"failed"`
	Result               string `json:"result"`
	ExecutionId          string `json:"execution_id"`
	WorkflowId           string `json:"workflow_id"`
	NotificationWorkflow bool   `json:"notification_workflow"`

	IsGeneratedNotificationWorkflow bool `json:"is_generated_notification_workflow"`

	OrgId string `json:"org_id"`
}

func GetSingulStatByExecutionId added in v0.8.67

func GetSingulStatByExecutionId(ctx context.Context, executionId string) (SingulStats, error)

func GetSingulStats added in v0.8.67

func GetSingulStats(ctx context.Context) ([]SingulStats, error)

type SmsBody

type SmsBody struct {
	Numbers            []string `json:"numbers" datastore:"numbers"`
	Body               string   `json:"body" datastore:"body"`
	ReferenceExecution string   `json:"reference_execution"`
	Authorization      string   `json:"authorization"`
	WorkflowId         string   `json:"workflow_id"`
	ExecutionType      string   `json:"execution_type"`
	Start              string   `json:"start"`
}

type SnappStep

type SnappStep struct {
	Name        string         `json:"name" yaml:"name"`
	Category    string         `json:"category" yaml:"category"`
	AppName     string         `json:"app_name" yaml:"app_name"`
	Environment string         `json:"environment" yaml:"environment"`
	Fields      []Valuereplace `json:"fields" yaml:"fields"`
}

type SnappWf

type SnappWf struct {
	Name  string      `json:"name"`
	Steps []SnappStep `json:"steps"`
}

type StatisticsData

type StatisticsData struct {
	Timestamp int64  `json:"timestamp" datastore:"timestamp"`
	Id        string `json:"id" datastore:"id"`
	Amount    int64  `json:"amount" datastore:"amount"`
}

type StatisticsItem

type StatisticsItem struct {
	Total     int64            `json:"total" datastore:"total"`
	Fieldname string           `json:"field_name" datastore:"field_name"`
	Data      []StatisticsData `json:"data" datastore:"data"`
	OrgId     string           `json:"org_id" datastore:"org_id"`
}

type StructuredCategoryAction

type StructuredCategoryAction struct {
	Success bool   `json:"success"`
	Action  string `json:"action"`
	Reason  string `json:"reason"`

	WorkflowId  string        `json:"workflow_id,omitempty"`
	ExecutionId string        `json:"execution_id,omitempty"`
	Label       string        `json:"label,omitempty"`
	Category    string        `json:"category,omitempty"`
	Apps        []WorkflowApp `json:"apps,omitempty"`

	Result string `json:"result,omitempty"`

	ApiDebuggerUrl string `json:"api_debugger_url,omitempty"`

	AvailableLabels []string `json:"available_labels,omitempty"`
	ThreadId        string   `json:"thread_id,omitempty"`
	RunId           string   `json:"run_id,omitempty"`
	MissingFields   []string `json:"missing_fields,omitempty"`

	Translated bool `json:"translated,omitempty"`
}

Used for the integrations API to work with AI well

type SubResponse

type SubResponse struct {
	HistoryId  string `json:"historyId"`
	Expiration string `json:"expiration`
}

func MakeGmailSubscription

func MakeGmailSubscription(ctx context.Context, client *http.Client, folderIds []string) (SubResponse, error)

type SubWrapper

type SubWrapper struct {
	Index       string                `json:"_index"`
	Type        string                `json:"_type"`
	ID          string                `json:"_id"`
	Version     int                   `json:"_version"`
	SeqNo       int                   `json:"_seq_no"`
	PrimaryTerm int                   `json:"_primary_term"`
	Found       bool                  `json:"found"`
	Source      SubscriptionRecipient `json:"_source"`
}

type SubflowData

type SubflowData struct {
	Success       bool   `json:"success"`
	ExecutionId   string `json:"execution_id,omitempty"`
	Authorization string `json:"authorization,omitempty"`
	Result        string `json:"result"`
	ResultSet     bool   `json:"result_set,omitempty"`
}

Overwriting results fo a subflow trigger

type Subject

type Subject struct {
	Subject string `description:"Subject of the email" json:"subject" validate:"required"`
}

type SubscriptionRecipient

type SubscriptionRecipient struct {
	HistoryId    string `json:"history_id"`
	TriggerId    string `json:"trigger_id"`
	Edited       int    `json:"edited"`
	Expiration   string `json:"expiration"`
	LastSync     int    `json:"last_sync"`
	WorkflowId   string `json:"workflow_id`
	Startnode    string `json:"startnode`
	IsCloud      bool   `json:"is_cloud"`
	EmailAddress string `json:"email_address"`
}

Used for Gmail triggers using Pubsub

func GetSubscriptionRecipient

func GetSubscriptionRecipient(ctx context.Context, id string) (*SubscriptionRecipient, error)

type SubscriptionsWrapper

type SubscriptionsWrapper struct {
	OdataContext string                `json:"@odata.context"`
	Value        []OutlookSubscription `json:"value"`
}

type Suggestion

type Suggestion struct {
	Creator   string       `json:"creator" datastore:"creator"`
	CreatorId string       `json:"creator_id" datastore:"creator_id"`
	Type      string       `json:"type" datastore:"type"`
	Label     AppLabelData `json:"label" datastore:"label"`
	Created   int64        `json:"created" datastore:"created"`
	Edited    int64        `json:"edited" datastore:"edited"`

	SuggestionID string `json:"suggestion_id" datastore:"suggestion_id"`
	SuggestionBy string `json:"suggestion_by" datastore:"suggestion_by"`

	Status string `json:"status" datastore:"status"`
}

func GetSuggestion

func GetSuggestion(ctx context.Context, id string) (*Suggestion, error)

func GetSuggestions

func GetSuggestions(ctx context.Context, creatorname string) ([]Suggestion, error)

type SyncConfig

type SyncConfig struct {
	Interval int64  `json:"interval" datastore:"interval"`
	Apikey   string `json:"api_key" datastore:"api_key"`
	Source   string `json:"source" datastore:"source"`

	WorkflowBackup bool `json:"workflow_backup" datastore:"workflow_backup"`
	AppBackup      bool `json:"app_backup" datastore:"app_backup"`
}

type SyncData

type SyncData struct {
	Active         bool   `json:"active" datastore:"active"`
	Type           string `json:"type,omitempty" datastore:"type"`
	Name           string `json:"name,omitempty" datastore:"name"`
	Description    string `json:"description,omitempty" datastore:"description"`
	Usage          int64  `json:"usage" datastore:"usage"`
	Limit          int64  `json:"limit" datastore:"limit"`
	StartDate      int64  `json:"start_date,omitempty" datastore:"start_date"`
	EndDate        int64  `json:"end_date,omitempty" datastore:"end_date"`
	DataCollection int64  `json:"data_collection,omitempty" datastore:"data_collection"`
}

type SyncDataUsage

type SyncDataUsage struct {
	StartDate int64  `json:"start_date" datastore:"start_date"`
	EndDate   int64  `json:"end_date" datastore:"end_date"`
	Reset     string `json:"reset" datastore:"reset"`
	Counter   int64  `json:"counter" datastore:"counter"`
}

type SyncFeatures

type SyncFeatures struct {
	Editing            bool        `json:"editing" datastore:"editing"`
	MailSent           []MailLevel `json:"mail_sent" datastore:"mail_sent"`
	AppExecutions      SyncData    `json:"app_executions" datastore:"app_executions"`
	MultiEnv           SyncData    `json:"multi_env" datastore:"multi_env"`
	MultiTenant        SyncData    `json:"multi_tenant" datastore:"multi_tenant"`
	MultiRegion        SyncData    `json:"multi_region" datastore:"multi_region"`
	Webhook            SyncData    `json:"webhook" datastore:"webhook"`
	Schedules          SyncData    `json:"schedules" datastore:"schedules"`
	UserInput          SyncData    `json:"user_input" datastore:"user_input"`
	SendMail           SyncData    `json:"send_mail" datastore:"send_mail"`
	SendSms            SyncData    `json:"send_sms" datastore:"send_sms"`
	Updates            SyncData    `json:"updates" datastore:"updates"`
	EmailTrigger       SyncData    `json:"email_trigger" datastore:"email_trigger"`
	Notifications      SyncData    `json:"notifications" datastore:"notifications"`
	Workflows          SyncData    `json:"workflows" datastore:"workflows"`
	Autocomplete       SyncData    `json:"autocomplete" datastore:"autocomplete"`
	WorkflowExecutions SyncData    `json:"workflow_executions" datastore:"workflow_executions"`
	Authentication     SyncData    `json:"authentication" datastore:"authentication"`
	Schedule           SyncData    `json:"schedule" datastore:"schedule"`
	Apps               SyncData    `json:"apps" datastore:"apps"`
	ShuffleGPT         SyncData    `json:"shuffle_gpt" datastore:"shuffle_gpt"`
}

type SyncKey

type SyncKey struct {
	Apikey    string `json:"api_key"`
	OrgId     string `json:"org_id"`
	SourceIP  string `json:"source_ip"`
	CreatedAt int64  `json:"created_at"`
}

func HandleCloudSyncAuthentication

func HandleCloudSyncAuthentication(resp http.ResponseWriter, request *http.Request) (SyncKey, error)

type SyncUsage

type SyncUsage struct {
	WorkflowExecutions SyncDataUsage `json:"workflow_executions" datastore:"workflow_executions"`
	Webhook            SyncDataUsage `json:"webhook" datastore:"webhook"`
	Schedules          SyncDataUsage `json:"schedules" datastore:"schedules"`
	UserInput          SyncDataUsage `json:"user_input" datastore:"user_input"`
	SendMail           SyncDataUsage `json:"send_mail" datastore:"send_mail"`
	SendSms            SyncDataUsage `json:"send_sms" datastore:"send_sms"`
	EmailTrigger       SyncDataUsage `json:"email_trigger" datastore:"email_trigger"`
	Autocomplete       SyncDataUsage `json:"autocomplete" datastore:"autocomplete"`
	Authentication     SyncDataUsage `json:"authentication" datastore:"authentication"`
	Schedule           SyncDataUsage `json:"schedule" datastore:"schedule"`
	AppExecutions      SyncDataUsage `json:"app_executions" datastore:"app_executions"`
	Workflows          SyncDataUsage `json:"workflows" datastore:"workflows"`
	MultiTenant        SyncDataUsage `json:"multi_tenant" datastore:"multi_tenant"`
	MultiRegion        SyncDataUsage `json:"multi_region" datastore:"multi_region"`
	MultiEnv           SyncDataUsage `json:"multi_env" datastore:"multi_env"`
	Apps               SyncDataUsage `json:"apps" datastore:"apps"`
	ShuffleGPT         SyncDataUsage `json:"shuffle_gpt" datastore:"shuffle_gpt"`
}

type TimeWindow

type TimeWindow struct {
	Duration time.Duration
	Events   []time.Time
	// contains filtered or unexported fields
}

func NewTimeWindow

func NewTimeWindow(duration time.Duration) *TimeWindow

func (*TimeWindow) AddEvent

func (tw *TimeWindow) AddEvent(event time.Time)

func (*TimeWindow) CountEvents

func (tw *TimeWindow) CountEvents(now time.Time) int

type Training

type Training struct {
	Name              string `json:"Name"`
	Email             string `json:"Email"`
	NumberOfAttendees int    `json:"numberOfAttendees"`
	Message           string `json:"Message"`
	Time              string `json:"Time"`
	Country           string `json:"Country"`

	OrgId      string `json:"org_id"`
	UserId     string `json:"user_id"`
	Username   string `json:"username"`
	ID         string `json:"id"`
	SignupTime int64  `json:"signupTime"`
}

type Translator

type Translator struct {
	Src struct {
		Name        string `json:"name" datastore:"name"`
		Value       string `json:"value" datastore:"value,noindex"`
		Description string `json:"description" datastore:"description"`
		Required    string `json:"required" datastore:"required"`
		Type        string `json:"type" datastore:"type"`
		Schema      struct {
			Type string `json:"type" datastore:"type"`
		} `json:"schema" datastore:"schema"`
	} `json:"src" datastore:"src"`
	Dst struct {
		Name        string `json:"name" datastore:"name"`
		Value       string `json:"value" datastore:"value,noindex"`
		Type        string `json:"type" datastore:"type"`
		Description string `json:"description" datastore:"description"`
		Required    string `json:"required" datastore:"required"`
		Schema      struct {
			Type string `json:"type" datastore:"type"`
		} `json:"schema" datastore:"schema"`
	} `json:"dst" datastore:"dst"`
}

type Trigger

type Trigger struct {
	AppName         string                       `json:"app_name" datastore:"app_name"`
	Description     string                       `json:"description" datastore:"description,noindex"`
	LongDescription string                       `json:"long_description" datastore:"long_description"`
	Status          string                       `json:"status" datastore:"status"`
	AppVersion      string                       `json:"app_version" datastore:"app_version"`
	Errors          []string                     `json:"errors" datastore:"errors"`
	ID              string                       `json:"id" datastore:"id"`
	IsValid         bool                         `json:"is_valid" datastore:"is_valid"`
	IsStartNode     bool                         `json:"isStartNode" datastore:"isStartNode"`
	Label           string                       `json:"label" datastore:"label"`
	SmallImage      string                       `json:"small_image" datastore:"small_image,noindex" required:false yaml:"small_image"`
	LargeImage      string                       `json:"large_image" datastore:"large_image,noindex" yaml:"large_image" required:false`
	Environment     string                       `json:"environment" datastore:"environment"`
	TriggerType     string                       `json:"trigger_type" datastore:"trigger_type"`
	Name            string                       `json:"name" datastore:"name"`
	Tags            []string                     `json:"tags" datastore:"tags" yaml:"tags"`
	Parameters      []WorkflowAppActionParameter `json:"parameters" datastore: "parameters,noindex"`
	Position        struct {
		X float64 `json:"x" datastore:"x"`
		Y float64 `json:"y" datastore:"y"`
	} `json:"position"`
	Priority         int         `json:"priority" datastore:"priority"`
	SourceWorkflow   string      `json:"source_workflow" yaml:"source_workflow" datastore:"source_workflow"`
	ExecutionDelay   int64       `json:"execution_delay" yaml:"execution_delay" datastore:"execution_delay"`
	AppAssociation   WorkflowApp `json:"app_association" yaml:"app_association" datastore:"app_association"`
	ParentControlled bool        `json:"parent_controlled" datastore:"parent_controlled"` // If the parent workflow node exists, and shouldn't be editable by child workflow

	// TODO: make this a predictable field
	// generated from current ID + workflow ID + orgid as seed
	ReplacementForTrigger string `json:"replacement_for_trigger" datastore:"replacement_for_trigger"` // If this trigger is a replacement for another trigger
}

Added environment for location to execute

type TriggerAuth

type TriggerAuth struct {
	Id             string `json:"id" datastore:"id"`
	SubscriptionId string `json:"subscriptionId" datastore:"subscriptionId"`

	Username       string     `json:"username" datastore:"username,noindex"`
	Owner          string     `json:"owner" datastore:"owner"`
	OrgId          string     `json:"org_id" datastore:"org_id"`
	Type           string     `json:"type" datastore:"type"`
	Code           string     `json:"code,omitempty" datastore:"code,noindex"`
	WorkflowId     string     `json:"workflow_id" datastore:"workflow_id,noindex"`
	Start          string     `json:"start" datastore:"start"`
	OauthToken     OauthToken `json:"oauth_token,omitempty" datastore:"oauth_token"`
	AssociatedUser string     `json:"associated_user" yaml:"associated_user" datastore:"associated_user"`
	Folders        []string   `json:"folders" yaml:"folders" datastore:"folders"`
}

func GetTriggerAuth

func GetTriggerAuth(ctx context.Context, id string) (*TriggerAuth, error)

type TriggerAuthWrapper

type TriggerAuthWrapper struct {
	Index       string      `json:"_index"`
	Type        string      `json:"_type"`
	ID          string      `json:"_id"`
	Version     int         `json:"_version"`
	SeqNo       int         `json:"_seq_no"`
	PrimaryTerm int         `json:"_primary_term"`
	Found       bool        `json:"found"`
	Source      TriggerAuth `json:"_source"`
}

type Tutorial

type Tutorial struct {
	Name        string `json:"name" datastore:"name"`
	Description string `json:"description" datastore:"description"`
	Link        string `json:"link" datastore:"link"`
	Done        bool   `json:"done" datastore:"done"`
	Active      bool   `json:"active" datastore:"active"`
}

type TypeValidation

type TypeValidation struct {
	Valid                bool  `json:"valid" datastore:"valid"`
	ChangedAt            int64 `json:"changed_at" datastore:"changed_at"`
	LastValid            int64 `json:"last_valid" datastore:"last_valid"`
	ValidationRan        bool  `json:"validation_ran" datastore:"validation_ran"`
	NotificationsCreated int64 `json:"notifications_created" datastore:"notifications_created"`

	// For the last update, which did it
	WorkflowId  string `json:"workflow_id" datastore:"workflow_id"`
	ExecutionId string `json:"execution_id" datastore:"execution_id"`
	NodeId      string `json:"node_id" datastore:"node_id"`

	TotalProblems int                 `json:"total_problems" datastore:"total_problems"`
	Errors        []ValidationProblem `json:"errors" datastore:"errors"`
	SubflowApps   []ValidationProblem `json:"subflow_apps" datastore:"subflow_apps"`
}

func GetExecutionValidation

func GetExecutionValidation(ctx context.Context, executionId string) (TypeValidation, error)

type URL

type URL struct {
	URL         string  `description:"Full URL" json:"url" validate:"required"`
	Domain      *Domain `description:"Target domain of URL" json:"domain,omitempty" validate:"omitempty"`
	Fragment    string  `` /* 151-byte string literal not displayed */
	Password    string  `description:"The password specified before the domain name" json:"password,omitempty" validate:"omitempty"`
	Path        string  `description:"Everything after the TLD and before the query parameters" json:"path,omitempty" validate:"omitempty"`
	Port        *int    `` /* 160-byte string literal not displayed */
	QueryParams string  `description:"The query parameters of the href_url" json:"query_params,omitempty" validate:"omitempty"`
	Scheme      string  `description:"Protocol for the href_url request, e.g. http" json:"scheme,omitempty" validate:"omitempty"`
	Username    string  `description:"The username specified before the domain name of the href_url" json:"username,omitempty" validate:"omitempty"`
}

type Usecase

type Usecase struct {
	Success     bool   `json:"success"`
	Name        string `json:"name"`
	Description string `json:"description"`
	LeftText    string `json:"left_text"`
	RightText   string `json:"right_text"`
	LeftImage   string `json:"left_image"`
	RightImage  string `json:"right_image"`
	Direction   string `json:"direction"`
	Process     []struct {
		Source      string `json:"source"`
		Target      string `json:"target"`
		Description string `json:"description"`
		Human       bool   `json:"human"`
	} `json:"process"`
	Edited          int64         `json:"edited"`
	EditedBy        string        `json:"edited_by"`
	Blogpost        string        `json:"blogpost"`
	Video           string        `json:"video"`
	Priority        string        `json:"priority"`
	WorkflowOutline string        `json:"workflow_outline"`
	ExtraButtons    []ExtraButton `json:"extra_buttons"`
}

func GetUsecase

func GetUsecase(ctx context.Context, name string) (*Usecase, error)
type UsecaseLinks []struct {
	Name  string `json:"name"`
	Color string `json:"color"`
	List  []struct {
		Name     string `json:"name" datastore:"name"`
		Priority int    `json:"priority"`
		Type     string `json:"type"`
		Last     string `json:"last"`
		Items    struct {
			Name  string `json:"name"`
			Items struct {
			} `json:"items"`
		} `json:"items,omitempty"`
		Description    string     `json:"description,omitempty" datastore:"description,noindex"`
		Video          string     `json:"video,omitempty"`
		Blogpost       string     `json:"blogpost,omitempty"`
		ReferenceImage string     `json:"reference_image,omitempty"`
		Matches        []Workflow `json:"matches"`
		Keywords       []string   `json:"keywords"`
		KeywordMatches int        `json:"keyword_matches"`
	} `json:"list"`
}

type UsecaseMerge

type UsecaseMerge struct {
	Name           string        `json:"name"`
	Id             string        `json:"id"`
	Source         UsecaseStep   `json:"source"`
	Middle         []UsecaseStep `json:"middle"`
	Destination    UsecaseStep   `json:"destination"`
	OrgId          string        `json:"org_id"`
	Username       string        `json:"username"`
	UserId         string        `json:"user_id"`
	Timestamp      int64         `json:"timestamp"`
	SourcePlatform string        `json:"source_platform"`
}

type UsecaseStep

type UsecaseStep struct {
	WorkflowId string `json:"workflow_id"`
	AppId      string `json:"app_id"`
	AppName    string `json:"app_name"`
	AppVersion string `json:"app_version"`
	Text       string `json:"text"`
	Image      string `json:"image"`
	Type       string `json:"type"`
	ActionType string `json:"action_type"`
}

type UsecaseWrapper

type UsecaseWrapper struct {
	Index       string  `json:"_index"`
	Type        string  `json:"_type"`
	ID          string  `json:"_id"`
	Version     int     `json:"_version"`
	SeqNo       int     `json:"_seq_no"`
	PrimaryTerm int     `json:"_primary_term"`
	Found       bool    `json:"found"`
	Source      Usecase `json:"_source"`
}

type User

type User struct {
	Username             string        `datastore:"Username" json:"username"`
	Password             string        `datastore:"password,noindex" password:"password,omitempty"`
	Session              string        `datastore:"session" json:"session,omitempty"`
	Verified             bool          `datastore:"verified,noindex" json:"verified"`
	SupportAccess        bool          `datastore:"support_access" json:"support_access"`
	PrivateApps          []WorkflowApp `datastore:"privateapps" json:"privateapps":`
	Role                 string        `datastore:"role" json:"role"`
	Roles                []string      `datastore:"roles" json:"roles"`
	VerificationToken    string        `datastore:"verification_token" json:"verification_token"`
	ApiKey               string        `datastore:"apikey" json:"apikey"`
	ResetReference       string        `datastore:"reset_reference" json:"reset_reference"`
	Executions           ExecutionInfo `datastore:"executions" json:"executions"`
	Limits               UserLimits    `datastore:"limits" json:"limits,omitempty"`
	MFA                  MFAInfo       `datastore:"mfa_info,noindex" json:"mfa_info"`
	Authentication       []UserAuth    `datastore:"authentication,noindex" json:"authentication"`
	ResetTimeout         int64         `datastore:"reset_timeout,noindex" json:"reset_timeout"`
	Id                   string        `datastore:"id" json:"id"`
	Orgs                 []string      `datastore:"orgs" json:"orgs"`
	CreationTime         int64         `datastore:"creation_time" json:"creation_time"`
	ActiveOrg            OrgMini       `json:"active_org" datastore:"active_org"`
	Active               bool          `datastore:"active" json:"active"`
	FirstSetup           bool          `datastore:"first_setup" json:"first_setup"`
	LoginType            string        `datastore:"login_type" json:"login_type"`
	GeneratedUsername    string        `datastore:"generated_username" json:"generated_username"`
	SessionLogin         bool          `datastore:"session_login" json:"session_login"`                   // Whether it's a login with session or API (used to verify access)
	ValidatedSessionOrgs []string      `datastore:"validated_session_orgs" json:"validated_session_orgs"` // Orgs that have been used in the current session for the user
	UsersLastSession     string        `datastore:"users_last_session" json:"users_last_session"`
	Theme                string        `datastore:"theme" json:"theme"`

	// Starting web3 integration
	EthInfo       EthInfo       `datastore:"eth_info" json:"eth_info"`
	PublicProfile PublicProfile `datastore:"public_profile" json:"public_profile"`

	// Tracking logins and such
	LoginInfo    []LoginInfo  `datastore:"login_info" json:"login_info"`
	PersonalInfo PersonalInfo `datastore:"personal_info" json:"personal_info"`
	Regions      []string     `datastore:"regions" json:"regions"`

	UserGeoInfo UserGeoInfo `datastore:"user_geo_info" json:"user_geo_info"`
}

func FindGeneratedUser

func FindGeneratedUser(ctx context.Context, username string) ([]User, error)

func FindUser

func FindUser(ctx context.Context, username string) ([]User, error)

func GenerateApikey

func GenerateApikey(ctx context.Context, userInfo User) (User, error)

func GetAllUsers

func GetAllUsers(ctx context.Context) ([]User, error)

func GetApikey

func GetApikey(ctx context.Context, apikey string) (User, error)

func GetOrgAuth

func GetOrgAuth(ctx context.Context, session string) (User, error)

func GetSessionNew

func GetSessionNew(ctx context.Context, sessionId string) (User, error)

func GetUser

func GetUser(ctx context.Context, username string) (*User, error)

func GetUsersByOrg

func GetUsersByOrg(ctx context.Context, orgId string) ([]User, error)

func HandleApiAuthentication

func HandleApiAuthentication(resp http.ResponseWriter, request *http.Request) (User, error)

type UserAuth

type UserAuth struct {
	Description string          `json:"description" datastore:"description" yaml:"description"`
	Name        string          `json:"name" datastore:"name" yaml:"name"`
	Workflows   []string        `json:"workflows" datastore:"workflows"`
	Username    string          `json:"username" datastore:"username"`
	Fields      []UserAuthField `json:"fields" datastore:"fields"`
}

Saves some data, not sure what to have here lol

type UserAuthField

type UserAuthField struct {
	Key   string `json:"key" datastore:"key"`
	Value string `json:"value" datastore:"value,noindex"`
}

type UserGeoInfo

type UserGeoInfo struct {
	City struct {
		Name string `datastore:"name" json:"name"`
	} `datastore:"city" json:"city"`
	State struct {
		Name string `datastore:"name" json:"name"`
	} `datastore:"state" json:"state"`
	Country struct {
		Name    string `datastore:"name" json:"name"`
		ISOCode string `datastore:"iso_code" json:"iso_code"`
	} `datastore:"country" json:"country"`
}

func GetUserLocation

func GetUserLocation(ctx context.Context, ip string) (UserGeoInfo, error)

type UserInputResponse

type UserInputResponse struct {
	Success     bool   `json:"success"`
	Source      string `json:"source"`
	Reason      string `json:"reason"`
	Information string `json:"information"`
	ClickInfo   struct {
		Clicked bool   `json:"clicked"`
		Time    int64  `json:"time"`
		IP      string `json:"ip"`
		User    string `json:"user"`
		Note    string `json:"note"`
	} `json:"click_info"`
	Subflow struct {
		Success       bool   `json:"success"`
		ExecutionID   string `json:"execution_id"`
		Authorization string `json:"authorization"`
	} `json:"subflow"`
	SubflowURL string `json:"subflow_url"`
}

type UserLimits

type UserLimits struct {
	DailyApiUsage           int64 `json:"daily_api_usage" datastore:"daily_api_usage"`
	DailyWorkflowExecutions int64 `json:"daily_workflow_executions" datastore:"daily_workflow_executions"`
	DailyCloudExecutions    int64 `json:"daily_cloud_executions" datastore:"daily_cloud_executions"`
	DailyTriggers           int64 `json:"daily_triggers" datastore:"daily_triggers"`
	DailyMailUsage          int64 `json:"daily_mail_usage" datastore:"daily_mail_usage"`
	MaxTriggers             int64 `json:"max_triggers" datastore:"max_triggers"`
	MaxWorkflows            int64 `json:"max_workflows" datastore:"max_workflows"`
}

Limits set for a user so that they can't do a shitload

type UserMini

type UserMini struct {
	Username string `datastore:"Username" json:"username"`
	Id       string `datastore:"id" json:"id"`
	Role     string `datastore:"role" json:"role"`
}

Used to contain users in miniOrg

type UserRequest

type UserRequest struct {
	IP        string `json:"ip"`
	Method    string `json:"method"`
	Path      string `json:"path"`
	Timestamp int64  `json:"time"`
}

type UserSearchWrapper

type UserSearchWrapper struct {
	Took     int  `json:"took"`
	TimedOut bool `json:"timed_out"`
	Shards   struct {
		Total      int `json:"total"`
		Successful int `json:"successful"`
		Skipped    int `json:"skipped"`
		Failed     int `json:"failed"`
	} `json:"_shards"`
	Hits struct {
		Total struct {
			Value    int    `json:"value"`
			Relation string `json:"relation"`
		} `json:"total"`
		MaxScore float64 `json:"max_score"`
		Hits     []struct {
			Index  string  `json:"_index"`
			Type   string  `json:"_type"`
			ID     string  `json:"_id"`
			Score  float64 `json:"_score"`
			Source User    `json:"_source"`
		} `json:"hits"`
	} `json:"hits"`
}

type UserWrapper

type UserWrapper struct {
	Index       string `json:"_index"`
	Type        string `json:"_type"`
	ID          string `json:"_id"`
	Version     int    `json:"_version"`
	SeqNo       int    `json:"_seq_no"`
	PrimaryTerm int    `json:"_primary_term"`
	Found       bool   `json:"found"`
	Source      User   `json:"_source"`
}

type Userapi

type Userapi struct {
	Username string `datastore:"Username"`
	ApiKey   string `datastore:"apikey"`
}

type ValidationProblem

type ValidationProblem struct {
	Order int `json:"order" datastore:"order"`

	ActionId string `json:"action_id" datastore:"action_id"`
	AppId    string `json:"app_id" datastore:"app_id"`
	AppName  string `json:"app_name" datastore:"app_name"`
	Error    string `json:"error" datastore:"error"`

	Type       string `json:"type" datastore:"type"`
	WorkflowId string `json:"workflow_id,omitempty" datastore:"workflow_id"`

	// Wait for results or not. IF it's waiting for result, then order is swapped in UI
	Waiting bool `json:"waiting" datastore:"waiting"`
}

type Valuereplace

type Valuereplace struct {
	Key   string `json:"key" datastore:"key" yaml:"key"`
	Value string `json:"value" datastore:"value,noindex" yaml:"value"`
}

func TranslateBadFieldFormats

func TranslateBadFieldFormats(fields []Valuereplace) []Valuereplace

Fixes potential decision return or reference problems: {{list_tickets}} -> $list_tickets {{list_tickets[0].description}} -> $list_tickets.#0.description {{ticket.description}} -> $ticket.description

type Variable

type Variable struct {
	Description string `json:"description" datastore:"description,noindex"`
	ID          string `json:"id" datastore:"id"`
	Name        string `json:"name" datastore:"name"`
	Value       string `json:"value" datastore:"value,noindex"`
}

type Widget

type Widget struct {
	Success    bool          `json:"success"`
	Id         string        `json:"id"`
	Title      string        `json:"title"`
	Dashboard  string        `json:"dashboard"`
	WidgetType string        `json:"widget_type"`
	Data       []WidgetPoint `json:"data"`
}

type WidgetMeta

type WidgetMeta struct {
	Color string `json:"color" datastore:"color"`
}

type WidgetPoint

type WidgetPoint struct {
	Key  string            `json:"key"  datastore:"key"`
	Data []WidgetPointData `json:"data"  datastore:"data"`
}

type WidgetPointData

type WidgetPointData struct {
	Key      string     `json:"key" datastore:"key"`
	Data     int64      `json:"data" datastore:"data"`
	MetaData WidgetMeta `json:"metadata" datastore:"metadata"`
}

type Workflow

type Workflow struct {
	WorkflowAsCode bool      `json:"workflow_as_code" datastore:"workflow_as_code"`
	Actions        []Action  `json:"actions" datastore:"actions,noindex"`
	Branches       []Branch  `json:"branches" datastore:"branches,noindex"`
	VisualBranches []Branch  `json:"visual_branches" datastore:"visual_branches,noindex"`
	Triggers       []Trigger `json:"triggers" datastore:"triggers,noindex"`
	Comments       []Comment `json:"comments" datastore:"comments,noindex"`
	Configuration  struct {
		ExitOnError       bool `json:"exit_on_error" datastore:"exit_on_error"`
		StartFromTop      bool `json:"start_from_top" datastore:"start_from_top"`
		SkipNotifications bool `json:"skip_notifications" datastore:"skip_notifications"`
	} `json:"configuration,omitempty" datastore:"configuration"`
	Created              int64      `json:"created" datastore:"created"`
	Edited               int64      `json:"edited" datastore:"edited"`
	LastRuntime          int64      `json:"last_runtime" datastore:"last_runtime"`
	DueDate              int64      `json:"due_date" datastore:"due_date"`
	Errors               []string   `json:"errors,omitempty" datastore:"errors"`
	Tags                 []string   `json:"tags,omitempty" datastore:"tags"`
	ID                   string     `json:"id" datastore:"id"`
	IsValid              bool       `json:"is_valid" datastore:"is_valid"`
	Name                 string     `json:"name" datastore:"name"`
	Description          string     `json:"description" datastore:"description,noindex"`
	Start                string     `json:"start" datastore:"start"`
	Owner                string     `json:"owner" datastore:"owner"`
	Sharing              string     `json:"sharing" datastore:"sharing"` // Not really used outside of Forms.
	Image                string     `json:"image,omitempty" datastore:"image,noindex"`
	Org                  []OrgMini  `json:"org,omitempty" datastore:"org"`
	ExecutingOrg         OrgMini    `json:"execution_org,omitempty" datastore:"execution_org"`
	OrgId                string     `json:"org_id,omitempty" datastore:"org_id"`
	WorkflowVariables    []Variable `json:"workflow_variables" datastore:"workflow_variables"`
	ExecutionVariables   []Variable `json:"execution_variables,omitempty" datastore:"execution_variables"`
	ExecutionEnvironment string     `json:"execution_environment" datastore:"execution_environment"`
	PreviouslySaved      bool       `json:"previously_saved" datastore:"first_save"`
	Categories           Categories `json:"categories" datastore:"categories"`
	ExampleArgument      string     `json:"example_argument" datastore:"example_argument,noindex"`
	Public               bool       `json:"public" datastore:"public"`
	DefaultReturnValue   string     `json:"default_return_value" datastore:"default_return_value,noindex"`
	ContactInfo          struct {
		Name string `json:"name" datastore:"name" yaml:"name"`
		Url  string `json:"url" datastore:"url" yaml:"url"`
	} `json:"contact_info" datastore:"contact_info" yaml:"contact_info" required:false`
	PublishedId string     `json:"published_id" yaml:"published_id"`
	RevisionId  string     `json:"revision_id" yaml:"revision_id"`
	Subflows    []Workflow `json:"subflows,omitempty" yaml:"subflows"`
	UsecaseIds  []string   `json:"usecase_ids" yaml:"usecase_ids" datastore:"usecase_ids"`

	InputQuestions []InputQuestion `json:"input_questions" datastore:"input_questions"`

	FormControl FormControl `json:"form_control" datastore:"form_control"`

	Blogpost     string `json:"blogpost" yaml:"blogpost"`
	Video        string `json:"video" yaml:"video"`
	Status       string `json:"status" datastore:"status"`
	WorkflowType string `json:"workflow_type" datastore:"workflow_type"`
	Generated    bool   `json:"generated" datastore:"generated"`
	Hidden       bool   `json:"hidden" datastore:"hidden"`
	UpdatedBy    string `json:"updated_by" datastore:"updated_by"`

	// Whether it's manually validated or not
	Validated  bool           `json:"validated" datastore:"validated"`
	Validation TypeValidation `json:"validation" datastore:"validation"`

	// Distribution system for suborg/parentorg
	ParentWorkflowId   string   `json:"parentorg_workflow" datastore:"parentorg_workflow"`
	ChildWorkflowIds   []string `json:"childorg_workflow_ids" datastore:"childorg_workflow_ids"`
	SuborgDistribution []string `json:"suborg_distribution" datastore:"suborg_distribution"`

	// Config for backup configs
	// This overrides org settings for the workflow
	BackupConfig BackupConfig `json:"backup_config" datastore:"backup_config"`
	AuthGroups   []string     `json:"auth_groups" datastore:"auth_groups"`
}

func ConfigureDetectionWorkflow

func ConfigureDetectionWorkflow(ctx context.Context, orgId, workflowType string) (Workflow, error)

FIXME: This is not ready - just a starting point

func FindWorkflowByName

func FindWorkflowByName(ctx context.Context, name string) ([]Workflow, error)

func FixWorkflowPosition

func FixWorkflowPosition(ctx context.Context, workflow Workflow) Workflow

func GenerateWorkflowFromParent

func GenerateWorkflowFromParent(ctx context.Context, workflow Workflow, parentOrgId, subOrgId string) (*Workflow, error)

func GetAllWorkflows

func GetAllWorkflows(ctx context.Context) ([]Workflow, error)

func GetAllWorkflowsByQuery

func GetAllWorkflowsByQuery(ctx context.Context, user User, maxAmount int, cursor string) ([]Workflow, error)

func GetStandardDestWorkflow

func GetStandardDestWorkflow(app *WorkflowApp, action string, enrich bool) *Workflow

Generates a standard destination workflow that uses: 1. A Startnode mapping $exec 2. An enrichment subflow that maps the data from $exec - A data merger of 1 & 2 - Integration framework with dest app

func GetStaticWorkflowHealth

func GetStaticWorkflowHealth(ctx context.Context, workflow Workflow) (Workflow, []string, error)

func GetWorkflow

func GetWorkflow(ctx context.Context, id string, skipHealth ...bool) (*Workflow, error)

func ListChildWorkflows

func ListChildWorkflows(ctx context.Context, originalId string) ([]Workflow, error)

func ListWorkflowRevisions

func ListWorkflowRevisions(ctx context.Context, originalId string, amount int) ([]Workflow, error)

func SanitizeWorkflow

func SanitizeWorkflow(workflow Workflow) Workflow

type WorkflowApp

type WorkflowApp struct {
	Name        string `json:"name" yaml:"name" required:true datastore:"name"`
	AppVersion  string `json:"app_version" yaml:"app_version" required:true datastore:"app_version"`
	ID          string `json:"id" yaml:"id,omitempty" required:false datastore:"id"`
	Link        string `json:"link" yaml:"link" required:false datastore:"link,noindex"`
	IsValid     bool   `json:"is_valid" yaml:"is_valid" required:true datastore:"is_valid"`
	Generated   bool   `json:"generated" yaml:"generated" required:false datastore:"generated"`
	Downloaded  bool   `json:"downloaded" yaml:"downloaded" required:false datastore:"downloaded"`
	Sharing     bool   `json:"sharing" yaml:"sharing" required:false datastore:"sharing"`
	Verified    bool   `json:"verified" yaml:"verified" required:false datastore:"verified"`
	Invalid     bool   `json:"invalid" yaml:"invalid" required:false datastore:"invalid"`
	Activated   bool   `json:"activated" yaml:"activated" required:false datastore:"activated"`
	Tested      bool   `json:"tested" yaml:"tested" required:false datastore:"tested"`
	Hash        string `json:"hash" datastore:"hash" yaml:"hash"` // api.yaml+dockerfile+src/app.py for apps
	PrivateID   string `json:"private_id" yaml:"private_id" required:false datastore:"private_id"`
	Environment string `json:"environment" datastore:"environment" required:true yaml:"environment"`
	SmallImage  string `json:"small_image" datastore:"small_image,noindex" required:false yaml:"small_image"`
	LargeImage  string `json:"large_image" datastore:"large_image,noindex" yaml:"large_image" required:false`
	ContactInfo struct {
		Name string `json:"name" datastore:"name" yaml:"name"`
		Url  string `json:"url" datastore:"url" yaml:"url"`
	} `json:"contact_info" datastore:"contact_info" yaml:"contact_info" required:false`
	FolderMount struct {
		FolderMount       bool   `json:"folder_mount" datastore:"folder_mount"`
		SourceFolder      string `json:"source_folder" datastore:"source_folder"`
		DestinationFolder string `json:"destination_folder" datastore:"destination_folder"`
	} `json:"folder_mount" datastore:"folder_mount"`
	Authentication           Authentication      `json:"authentication" yaml:"authentication" required:false datastore:"authentication"`
	Actions                  []WorkflowAppAction `json:"actions" yaml:"actions" required:true datastore:"actions,noindex"`
	Tags                     []string            `json:"tags" yaml:"tags" required:false datastore:"activated"`
	Categories               []string            `json:"categories" yaml:"categories" required:false datastore:"categories"`
	Created                  int64               `json:"created" datastore:"created"`
	Edited                   int64               `json:"edited" datastore:"edited"`
	LastRuntime              int64               `json:"last_runtime" datastore:"last_runtime"`
	Versions                 []AppVersion        `json:"versions" datastore:"versions"`
	LoopVersions             []string            `json:"loop_versions" datastore:"loop_versions"`
	Owner                    string              `json:"owner" datastore:"owner" yaml:"owner"`
	SharingConfig            string              `json:"sharing_config" yaml:"sharing_config" datastore:"sharing_config"`
	Public                   bool                `json:"public" datastore:"public"`
	PublishedId              string              `json:"published_id" datastore:"published_id"`
	ChildIds                 []string            `json:"child_ids" datastore:"child_ids"`
	ReferenceOrg             string              `json:"reference_org" datastore:"reference_org"`
	ReferenceUrl             string              `json:"reference_url" datastore:"reference_url"`
	ActionFilePath           string              `json:"action_file_path" datastore:"action_file_path"`
	Template                 bool                `json:"template" datastore:"template,noindex"`
	Documentation            string              `json:"documentation" datastore:"documentation,noindex"`
	Description              string              `json:"description" datastore:"description,noindex"`
	DocumentationDownloadUrl string              `json:"documentation_download_url" datastore:"documentation_download_url"`
	PrimaryUsecases          []string            `json:"primary_usecases" yaml:"primary_usecases"  datastore:"primary_usecases"`

	SkippedBuild bool `json:"skipped_build" yaml:"skipped_build" required:false datastore:"skipped_build"`

	ReferenceInfo struct {
		OnpremBackup bool `json:"onprem_backup" datastore:"onprem_backup"`

		IsPartner        bool     `json:"is_partner" datastore:"is_partner"`
		PartnerContacts  string   `json:"partner_contacts" datastore:"partner_contacts"`
		DocumentationUrl string   `json:"documentation_url" datastore:"documentation_url"`
		GithubUrl        string   `json:"github_url" datastore:"github_url"`
		Triggers         []string `json:"triggers" datastore:"triggers"`
	} `json:"reference_info" datastore:"reference_info"`
	Blogpost   string `json:"blogpost" yaml:"blogpost" datastore:"blogpost"`
	Video      string `json:"video" yaml:"video" datastore:"video"`
	CompanyURL string `json:"company_url" datastore:"company_url" required:false yaml:"company_url"`

	Contributors []string `json:"contributors" datastore:"contributors"`
	RevisionId   string   `json:"revision_id" datastore:"revision_id"`
	Collection   string   `json:"collection" datastore:"collection"`
}

func FindMatchingCategoryApps

func FindMatchingCategoryApps(category string, apps []WorkflowApp, org *Org) []WorkflowApp

func FindRelevantApps

func FindRelevantApps(appname string, apps []WorkflowApp) []WorkflowApp

func FindWorkflowAppByName

func FindWorkflowAppByName(ctx context.Context, appName string) ([]WorkflowApp, error)

func GenerateYaml

func GenerateYaml(swagger *openapi3.Swagger, newmd5 string) (*openapi3.Swagger, WorkflowApp, []string, error)

func GetAllWorkflowApps

func GetAllWorkflowApps(ctx context.Context, maxLen int, depth int) ([]WorkflowApp, error)

func GetApp

func GetApp(ctx context.Context, id string, user User, skipCache bool) (*WorkflowApp, error)

func GetPrioritizedApps

func GetPrioritizedApps(ctx context.Context, user User) ([]WorkflowApp, error)

Gets apps based on a new schema instead of looping everything Primarily made for cloud. Load in this order: 1. Get ORGs' private apps 2. Get USERs' private apps 3. Get PUBLIC apps

func GetSingulApp

func GetSingulApp(sourcepath, appname string) (*WorkflowApp, error)

func GetUserApps

func GetUserApps(ctx context.Context, userId string) ([]WorkflowApp, error)

func UploadAppSpecFiles

func UploadAppSpecFiles(ctx context.Context, client *storage.Client, api WorkflowApp, parsed ParsedOpenApi) (WorkflowApp, error)

func VerifyApi

func VerifyApi(api WorkflowApp) WorkflowApp

FIXME - have this give a real version?

type WorkflowAppAction

type WorkflowAppAction struct {
	Description       string                       `json:"description" datastore:"description,noindex"`
	ID                string                       `json:"id" datastore:"id" yaml:"id,omitempty"`
	Name              string                       `json:"name" datastore:"name"`
	AppID             string                       `json:"app_id" datastore:"app_id"`
	AppName           string                       `json:"app_name,omitempty" datastore:"app_name"`
	AppVersion        string                       `json:"app_version,omitempty" datastore:"app_version"`
	Label             string                       `json:"label" datastore:"label"`
	NodeType          string                       `json:"node_type" datastore:"node_type"`
	Environment       string                       `json:"environment" datastore:"environment"`
	Sharing           bool                         `json:"sharing" datastore:"sharing"`
	PrivateID         string                       `json:"private_id" datastore:"private_id"`
	PublicID          string                       `json:"public_id" datastore:"public_id"`
	Tags              []string                     `json:"tags" datastore:"tags" yaml:"tags"`
	LargeImage        string                       `json:"large_image" datastore:"large_image"`
	Authentication    []AuthenticationStore        `json:"authentication" datastore:"authentication,noindex" yaml:"authentication,omitempty"`
	Tested            bool                         `json:"tested" datastore:"tested" yaml:"tested"`
	Parameters        []WorkflowAppActionParameter `json:"parameters" datastore: "parameters"`
	InvalidParameters []WorkflowAppActionParameter `json:"previous_parameters,omitempty" datastore: "previous_parameters,noindex"`
	ExecutionVariable Variable                     `json:"execution_variable" datastore:"execution_variables"`
	Returns           struct {
		Description string           `json:"description" datastore:"returns" yaml:"description,omitempty"`
		Example     string           `json:"example" datastore:"example,noindex" yaml:"example"`
		ID          string           `json:"id" datastore:"id" yaml:"id,omitempty"`
		Schema      SchemaDefinition `json:"schema" datastore:"schema" yaml:"schema"`
	} `json:"returns" datastore:"returns"`
	AuthenticationId   string   `json:"authentication_id" datastore:"authentication_id"`
	Example            string   `json:"example,noindex" datastore:"example" yaml:"example"`
	AuthNotRequired    bool     `json:"auth_not_required" datastore:"auth_not_required" yaml:"auth_not_required"`
	SourceWorkflow     string   `json:"source_workflow" yaml:"source_workflow" datastore:"source_workflow"`
	RunMagicOutput     bool     `json:"run_magic_output" datastore:"run_magic_output" yaml:"run_magic_output"`
	RunMagicInput      bool     `json:"run_magic_input" datastore:"run_magic_input" yaml:"run_magic_input"`
	ExecutionDelay     int64    `json:"execution_delay" datastore:"execution_delay"`
	RequiredBodyFields []string `json:"required_body_fields" datastore:"required_body_fields"`
	CategoryLabel      []string `json:"category_label" datastore:"category_label"`
	ExampleResponse    string   `json:"example_response" datastore:"example_response"`
}

func AddCustomAction

func AddCustomAction(swagger *openapi3.Swagger, api WorkflowApp) (WorkflowAppAction, string)

func GetAutofixAppLabelsCache

func GetAutofixAppLabelsCache(ctx context.Context, app WorkflowApp, label string, keys []string) (WorkflowAppAction, error)

func HandleConnect

func HandleConnect(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []WorkflowAppActionParameter, path *openapi3.PathItem, actualPath string, optionalParameters []WorkflowAppActionParameter) (WorkflowAppAction, string)

func HandleDelete

func HandleDelete(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []WorkflowAppActionParameter, path *openapi3.PathItem, actualPath string, optionalParameters []WorkflowAppActionParameter) (WorkflowAppAction, string)

func HandleGet

func HandleGet(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []WorkflowAppActionParameter, path *openapi3.PathItem, actualPath string, optionalParameters []WorkflowAppActionParameter) (WorkflowAppAction, string)

func HandleHead

func HandleHead(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []WorkflowAppActionParameter, path *openapi3.PathItem, actualPath string, optionalParameters []WorkflowAppActionParameter) (WorkflowAppAction, string)

func HandlePatch

func HandlePatch(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []WorkflowAppActionParameter, path *openapi3.PathItem, actualPath string, optionalParameters []WorkflowAppActionParameter) (WorkflowAppAction, string)

func HandlePost

func HandlePost(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []WorkflowAppActionParameter, path *openapi3.PathItem, actualPath string, optionalParameters []WorkflowAppActionParameter) (WorkflowAppAction, string)

func HandlePut

func HandlePut(swagger *openapi3.Swagger, api WorkflowApp, extraParameters []WorkflowAppActionParameter, path *openapi3.PathItem, actualPath string, optionalParameters []WorkflowAppActionParameter) (WorkflowAppAction, string)

type WorkflowAppActionParameter

type WorkflowAppActionParameter struct {
	Description    string           `json:"description" datastore:"description,noindex" yaml:"description"`
	ID             string           `json:"id" datastore:"id" yaml:"id,omitempty"`
	Name           string           `json:"name" datastore:"name" yaml:"name"`
	Example        string           `json:"example" datastore:"example,noindex" yaml:"example"`
	Value          string           `json:"value" datastore:"value,noindex" yaml:"value,omitempty"`
	Multiline      bool             `json:"multiline" datastore:"multiline" yaml:"multiline"`
	Multiselect    bool             `json:"multiselect" datastore:"multiselect" yaml:"multiselect"`
	Options        []string         `json:"options" datastore:"options" yaml:"options"`
	ActionField    string           `json:"action_field" datastore:"action_field" yaml:"actionfield,omitempty"`
	Variant        string           `json:"variant" datastore:"variant" yaml:"variant,omitempty"`
	Required       bool             `json:"required" datastore:"required" yaml:"required"`
	Configuration  bool             `json:"configuration" datastore:"configuration" yaml:"configuration"`
	Tags           []string         `json:"tags" datastore:"tags" yaml:"tags"`
	Schema         SchemaDefinition `json:"schema" datastore:"schema" yaml:"schema"`
	SkipMulticheck bool             `json:"skip_multicheck" datastore:"skip_multicheck" yaml:"skip_multicheck"`
	ValueReplace   []Valuereplace   `json:"value_replace" datastore:"value_replace,noindex" yaml:"value_replace,omitempty"`
	UniqueToggled  bool             `json:"unique_toggled" datastore:"unique_toggled" yaml:"unique_toggled"`
	Error          string           `json:"error" datastore:"error" yaml:"error"`
	Hidden         bool             `json:"hidden" datastore:"hidden" yaml:"hidden"`
}

type WorkflowExecution

type WorkflowExecution struct {
	Type                string         `json:"type" datastore:"type"`
	Status              string         `json:"status" datastore:"status"`
	Start               string         `json:"start" datastore:"start"`
	ExecutionArgument   string         `json:"execution_argument" datastore:"execution_argument,noindex"`
	ExecutionId         string         `json:"execution_id" datastore:"execution_id"`
	ExecutionOrg        string         `json:"execution_org" datastore:"execution_org"`
	StartedAt           int64          `json:"started_at" datastore:"started_at"`
	CompletedAt         int64          `json:"completed_at" datastore:"completed_at"`
	WorkflowId          string         `json:"workflow_id" datastore:"workflow_id"`
	LastNode            string         `json:"last_node" datastore:"last_node"`
	Authorization       string         `json:"authorization" datastore:"authorization"`
	Result              string         `json:"result" datastore:"result,noindex"`
	ProjectId           string         `json:"project_id" datastore:"project_id"`
	Locations           []string       `json:"locations,omitempty" datastore:"locations"`
	Workflow            Workflow       `json:"workflow,omitempty" datastore:"workflow,noindex"`
	Results             []ActionResult `json:"results" datastore:"results,noindex"`
	ExecutionVariables  []Variable     `json:"execution_variables,omitempty" datastore:"execution_variables,omitempty"`
	OrgId               string         `json:"org_id" datastore:"org_id"`
	ExecutionSource     string         `json:"execution_source" datastore:"execution_source"`
	ExecutionParent     string         `json:"execution_parent" datastore:"execution_parent"`
	ExecutionSourceNode string         `json:"execution_source_node" yaml:"execution_source_node"`
	ExecutionSourceAuth string         `json:"execution_source_auth" yaml:"execution_source_auth"`
	SubExecutionCount   int64          `json:"sub_execution_count" yaml:"sub_execution_count"` // Max depth to execute subflows in infinite loops (10 by default)
	Priority            int64          `json:"priority" datastore:"priority" yaml:"priority"`  // Priority of the execution. Usually manual should be 10, and all other UNDER that.

	NotificationsCreated int64   `json:"notifications_created" datastore:"notifications_created"`
	Authgroup            string  `json:"authgroup" datastore:"authgroup"`
	Org                  OrgMini `json:"org" datastore:"-"`
}

func Fixexecution

func Fixexecution(ctx context.Context, workflowExecution WorkflowExecution) (WorkflowExecution, bool)

func GetAllWorkflowExecutions

func GetAllWorkflowExecutions(ctx context.Context, workflowId string, amount int) ([]WorkflowExecution, error)

func GetAllWorkflowExecutionsV2

func GetAllWorkflowExecutionsV2(ctx context.Context, workflowId string, amount int, inputcursor string) ([]WorkflowExecution, string, error)

func GetBackendexecution

func GetBackendexecution(ctx context.Context, executionId, authorization string) (WorkflowExecution, error)

func GetUnfinishedExecutions

func GetUnfinishedExecutions(ctx context.Context, workflowId string) ([]WorkflowExecution, error)

func GetWorkflowExecution

func GetWorkflowExecution(ctx context.Context, id string) (*WorkflowExecution, error)

func GetWorkflowExecutionByAuth

func GetWorkflowExecutionByAuth(ctx context.Context, authId string) (*WorkflowExecution, error)

func GetWorkflowRunsBySearch

func GetWorkflowRunsBySearch(ctx context.Context, orgId string, search WorkflowSearch) ([]WorkflowExecution, string, error)

func ParsedExecutionResult

func ParsedExecutionResult(ctx context.Context, workflowExecution WorkflowExecution, actionResult ActionResult, updateParam bool, retries int64) (*WorkflowExecution, bool, error)

Updateparam is a check to see if the execution should be continuously validated

func PrepareSingleAction

func PrepareSingleAction(ctx context.Context, user User, appId string, body []byte, runValidationAction bool, decision ...string) (WorkflowExecution, error)

Body = The action body received from the user to test.

func SanitizeExecution

func SanitizeExecution(workflowExecution WorkflowExecution) WorkflowExecution

type WorkflowHealth

type WorkflowHealth struct {
	Create         bool   `json:"create"`
	Run            bool   `json:"run"`
	BackendVersion string `json:"backend_version"`
	RunFinished    bool   `json:"run_finished"`
	// NOTE: This does not represent the actual time execution took, it includes the time took to send an API request for the exeution + get back the results for every action.
	ExecutionTook      float64 `json:"execution_took"`
	RunStatus          string  `json:"run_status"`
	Delete             bool    `json:"delete"`
	ExecutionId        string  `json:"execution_id"`
	WorkflowId         string  `json:"workflow_id"`
	WorkflowValidation bool    `json:"workflow_validation"`
}

func RunOpsWorkflow

func RunOpsWorkflow(apiKey string, orgId string, cloudRunUrl string) (WorkflowHealth, error)

type WorkflowNodeRelations

type WorkflowNodeRelations struct {
	Relations map[string]NodeRelation `json:"node_relations"`
}

type WorkflowSearch

type WorkflowSearch struct {
	WorkflowId string `json:"workflow_id"`
	Limit      int    `json:"limit"`
	Cursor     string `json:"cursor"`

	Status      string `json:"status"`
	SearchFrom  string `json:"start_time"`
	SearchUntil string `json:"end_time"`

	IgnoreOrg  bool `json:"ignore_org"`
	SuborgRuns bool `json:"suborg_runs" default:"false"`
}

type WorkflowSearchResult

type WorkflowSearchResult struct {
	Success bool                `json:"success"`
	Runs    []WorkflowExecution `json:"runs"`
	Cursor  string              `json:"cursor"`
}

type WorkflowSearchWrapper

type WorkflowSearchWrapper struct {
	Took     int  `json:"took"`
	TimedOut bool `json:"timed_out"`
	Shards   struct {
		Total      int `json:"total"`
		Successful int `json:"successful"`
		Skipped    int `json:"skipped"`
		Failed     int `json:"failed"`
	} `json:"_shards"`
	Hits struct {
		Total struct {
			Value    int    `json:"value"`
			Relation string `json:"relation"`
		} `json:"total"`
		MaxScore float64 `json:"max_score"`
		Hits     []struct {
			Index  string   `json:"_index"`
			Type   string   `json:"_type"`
			ID     string   `json:"_id"`
			Score  float64  `json:"_score"`
			Source Workflow `json:"_source"`
		} `json:"hits"`
	} `json:"hits"`
}

type WorkflowWrapper

type WorkflowWrapper struct {
	Index       string   `json:"_index"`
	Type        string   `json:"_type"`
	ID          string   `json:"_id"`
	Version     int      `json:"_version"`
	SeqNo       int      `json:"_seq_no"`
	PrimaryTerm int      `json:"_primary_term"`
	Found       bool     `json:"found"`
	Source      Workflow `json:"_source"`
}

type WrappedData

type WrappedData struct {
	Data        string `json:"data"`
	MessageId   string `json:"message_id"`
	PublishTime string `json:"publish_time"`
}

Jump to

Keyboard shortcuts

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