cmd/hub/api/types.go (488 lines of code) (raw):

// Copyright (c) 2022 EPAM Systems, Inc. // // This Source Code Form is subject to the terms of the Mozilla Public // License, v. 2.0. If a copy of the MPL was not distributed with this // file, You can obtain one at http://mozilla.org/MPL/2.0/. //go:build api package api import "time" type ApiErrors struct { Errors []ApiError } type ApiError struct { Type string Source string Detail string Meta struct { Stack string Data ApiErrors // nested API call // validation error SchemaPath string `json:"schemaPath"` Message string Params map[string]interface{} } } type CloudAccount struct { Id string `json:"id"` Name string `json:"name"` Tags []string `json:"tags,omitempty"` Kind string `json:"kind"` Status string `json:"status"` BaseDomain string `json:"baseDomain"` Parameters []Parameter `json:"parameters,omitempty"` InflightOperations []InflightOperation `json:"inflightOperations,omitempty"` TeamsPermissions []Team `json:"teamsPermissions"` } type AwsSecurityCredentials struct { Cloud string AccessKey string SecretKey string SessionToken string Ttl int Region string Sts string } type CloudAccountRequest struct { Name string `json:"name"` Tags []string `json:"tags,omitempty"` Kind string `json:"kind"` Parameters []Parameter `json:"parameters,omitempty"` Credentials map[string]string `json:"credentials,omitempty"` } type Parameter struct { Name string `json:"name"` Kind string `json:"kind,omitempty"` Value interface{} `json:"value,omitempty"` From string `json:"from,omitempty"` Component string `json:"component,omitempty"` Origin string `json:"origin,omitempty"` Messenger string `json:"messenger,omitempty"` } type Secret struct { Name string Kind string Values map[string]string } type Output struct { Name string `json:"name"` Component string `json:"component,omitempty"` Kind string `json:"kind,omitempty"` Value interface{} `json:"value"` Brief string `json:"brief,omitempty"` Messenger string `json:"messenger,omitempty"` } type Provider struct { Kind string `json:"kind"` Name string `json:"name"` Provides []string `json:"provides,omitempty"` Parameters []Parameter `json:"parameters,omitempty"` } type Team struct { Id string `json:"id,omitempty"` Name string `json:"name"` Role string `json:"role"` } type Environment struct { Id string `json:"id"` Name string `json:"name"` Description string `json:"description,omitempty"` Tags []string `json:"tags,omitempty"` UI map[string]interface{} `json:"ui,omitempty"` CloudAccount string `json:"cloudAccount"` Parameters []Parameter `json:"parameters,omitempty"` Providers []Provider `json:"providers,omitempty"` TeamsPermissions []Team `json:"teamsPermissions"` } type EnvironmentRequest struct { Name string `json:"name"` Description string `json:"description,omitempty"` Tags []string `json:"tags,omitempty"` UI map[string]interface{} `json:"ui,omitempty"` CloudAccount string `json:"cloudAccount"` Parameters []Parameter `json:"parameters,omitempty"` Providers []Provider `json:"providers,omitempty"` TeamsPermissions []Team `json:"teamsPermissions,omitempty"` } type EnvironmentPatch struct { Name string `json:"name,omitempty"` Description string `json:"description,omitempty"` Tags []string `json:"tags,omitempty"` UI map[string]interface{} `json:"ui,omitempty"` Parameters []Parameter `json:"parameters,omitempty"` Providers []Provider `json:"providers,omitempty"` TeamsPermissions []Team `json:"teamsPermissions,omitempty"` } type StackComponent struct { Name string `json:"name"` Brief string `json:"brief,omitempty"` Description string `json:"description,omitempty"` } type BaseStack struct { Id string `json:"id"` Name string `json:"name"` Brief string `json:"brief,omitempty"` Tags []string `json:"tags,omitempty"` Components []StackComponent `json:"components,omitempty"` Parameters []Parameter `json:"parameters,omitempty"` } type StackRef struct { Id string `json:"id"` Name string `json:"name"` } type ComponentRef struct { Id string `json:"id"` Name string `json:"name"` } type GitRef struct { Public string `json:"public"` Template *struct { Ref string `json:"ref"` } `json:"template,omitempty"` K8s *struct { Ref string `json:"ref"` } `json:"k8s,omitempty"` } type StackTemplate struct { Id string `json:"id"` Name string `json:"name"` Description string `json:"description,omitempty"` Status string `json:"status"` Tags []string `json:"tags,omitempty"` UI map[string]interface{} `json:"ui,omitempty"` Stack *StackRef `json:"stack,omitempty"` ComponentsEnabled []string `json:"componentsEnabled,omitempty"` Component *ComponentRef `json:"component,omitempty"` Verbs []string `json:"verbs,omitempty"` GitRemote GitRef `json:"gitRemote"` Parameters []Parameter `json:"parameters,omitempty"` TeamsPermissions []Team `json:"teamsPermissions"` } type StackTemplateRequest struct { Name string `json:"name"` Description string `json:"description,omitempty"` Tags []string `json:"tags,omitempty"` UI map[string]interface{} `json:"ui,omitempty"` Stack string `json:"stack,omitempty"` ComponentsEnabled []string `json:"componentsEnabled,omitempty"` Component string `json:"component,omitempty"` Verbs []string `json:"verbs,omitempty"` Parameters []Parameter `json:"parameters,omitempty"` TeamsPermissions []Team `json:"teamsPermissions,omitempty"` } type StackTemplatePatch struct { Description string `json:"description,omitempty"` Tags []string `json:"tags,omitempty"` UI map[string]interface{} `json:"ui,omitempty"` ComponentsEnabled []string `json:"componentsEnabled,omitempty"` Verbs []string `json:"verbs,omitempty"` Parameters []Parameter `json:"parameters,omitempty"` TeamsPermissions []Team `json:"teamsPermissions,omitempty"` } type EnvironmentRef struct { Id string `json:"id"` Name string `json:"name"` Domain string `json:"domain,omitempty"` } type StackTemplateRef struct { Id string `json:"id"` Name string `json:"name"` } type PlatformRef struct { Id string `json:"id"` Name string `json:"name"` Domain string `json:"domain"` // application and overlay Provides map[string][]string `json:"provides,omitempty"` StateFiles []string `json:"stateFiles,omitempty"` } type ComponentMetadata struct { Origin string `json:"origin,omitempty"` Kind string `json:"kind,omitempty"` Title string `json:"title,omitempty"` Brief string `json:"brief,omitempty"` Description string `json:"description,omitempty"` Version string `json:"version,omitempty"` Maturity string `json:"maturity,omitempty"` Icon string `json:"icon,omitempty"` } type ComponentOutput struct { Name string `json:"name"` Value interface{} `json:"value"` Brief string `json:"brief,omitempty"` } type Timestamps struct { Start time.Time `json:"start,omitempty"` End time.Time `json:"end,omitempty"` } type ComponentStatus struct { Name string `json:"name"` Status string `json:"status"` Version string `json:"version,omitempty"` // TODO deprecate in favor of Meta.Version Meta *ComponentMetadata `json:"meta,omitempty"` Message string `json:"message,omitempty"` Outputs []ComponentOutput `json:"outputs,omitempty"` Timestamps *Timestamps `json:"timestamps,omitempty"` } type LifecyclePhase struct { Phase string `json:"phase"` Status string `json:"status"` } type InflightOperation struct { Id string `json:"id"` Operation string `json:"operation"` Timestamp time.Time `json:"timestamp"` Status string `json:"status,omitempty"` Options map[string]interface{} `json:"options,omitempty"` Description string `json:"description,omitempty"` Initiator string `json:"initiator,omitempty"` Location string `json:"location,omitempty"` Logs string `json:"logs,omitempty"` Phases []LifecyclePhase `json:"phases,omitempty"` // applications JobName string `json:"jobName,omitempty"` PlatformDomain string `json:"platformDomain,omitempty"` } type TemplateStatus struct { Commit string `json:"commit,omitempty"` Ref string `json:"ref,omitempty"` Date time.Time `json:"date,omitempty"` Author string `json:"author,omitempty"` Subject string `json:"subject,omitempty"` } type StackInstanceStatus struct { Status string `json:"status,omitempty"` Template *TemplateStatus `json:"template,omitempty"` K8s *TemplateStatus `json:"k8s,omitempty"` Components []ComponentStatus `json:"components,omitempty"` } type StackInstance struct { Id string `json:"id"` Name string `json:"name"` Domain string `json:"domain"` Description string `json:"description,omitempty"` Verbs []string `json:"verbs,omitempty"` Tags []string `json:"tags,omitempty"` UI map[string]interface{} `json:"ui,omitempty"` Environment EnvironmentRef `json:"environment,omitempty"` Stack StackRef `json:"stack,omitempty"` Template StackTemplateRef `json:"template,omitempty"` Platform *PlatformRef `json:"platform,omitempty"` ComponentsEnabled []string `json:"componentsEnabled,omitempty"` GitRemote GitRef `json:"gitRemote,omitempty"` Parameters []Parameter `json:"parameters,omitempty"` Outputs []Output `json:"outputs,omitempty"` Provides map[string][]string `json:"provides,omitempty"` StateFiles []string `json:"stateFiles,omitempty"` Status StackInstanceStatus `json:"status"` InflightOperations []InflightOperation `json:"inflightOperations,omitempty"` } type StackInstanceRequest struct { Name string `json:"name"` Description string `json:"description,omitempty"` Tags []string `json:"tags,omitempty"` UI map[string]interface{} `json:"ui,omitempty"` Environment string `json:"environment"` Template string `json:"template"` Platform string `json:"platform,omitempty"` ComponentsEnabled []string `json:"componentsEnabled,omitempty"` Parameters []Parameter `json:"parameters,omitempty"` } type StackInstanceLifecycleRequest struct { Components []string `json:"components,omitempty"` } type StackInstanceLifecycleResponse struct { Id string `json:"id"` JobId string `json:"jobId"` } type GitRefPatch struct { Template *struct { Ref string `json:"ref"` } `json:"template,omitempty"` K8s *struct { Ref string `json:"ref"` } `json:"k8s,omitempty"` } type StackInstancePatch struct { Description string `json:"description,omitempty"` Tags []string `json:"tags,omitempty"` UI map[string]interface{} `json:"ui,omitempty"` Verbs []string `json:"verbs,omitempty"` ComponentsEnabled []string `json:"componentsEnabled,omitempty"` StateFiles []string `json:"stateFiles,omitempty"` Parameters []Parameter `json:"parameters,omitempty"` GitRemote *GitRefPatch `json:"gitRemote,omitempty"` Status *StackInstanceStatus `json:"status,omitempty"` InflightOperations []InflightOperation `json:"inflightOperations,omitempty"` Outputs []Output `json:"outputs,omitempty"` Provides map[string][]string `json:"provides,omitempty"` } type WorkerpoolRequest struct { Name string `json:"name"` Description string `json:"description,omitempty"` Tags []string `json:"tags,omitempty"` UI map[string]interface{} `json:"ui,omitempty"` Parameters []Parameter `json:"parameters,omitempty"` } type WorkerpoolPatch struct { Parameters []Parameter `json:"parameters,omitempty"` } type WorkerpoolLifecycleResponse struct { Id string `json:"id"` JobId string `json:"jobId"` Instance StackInstance `json:"instance"` } type StackInstanceRef struct { Id string `json:"id"` Name string `json:"name"` Domain string `json:"domain"` Stack StackRef `json:"stack,omitempty"` Platform PlatformRef `json:"platform,omitempty"` Parameters []Parameter `json:"parameters,omitempty"` } type ComponentBackupOutput struct { Name string `json:"name"` Value string `json:"value"` } type ComponentBackup struct { Kind string `json:"kind"` Status string `json:"status"` Timestamp time.Time `json:"timestamp"` Outputs []ComponentBackupOutput `json:"outputs,omitempty"` } type BackupBundle struct { Kind string `json:"kind"` Status string `json:"status"` Timestamp time.Time `json:"timestamp"` Components map[string]ComponentBackup `json:"components,omitempty"` } type Backup struct { Id string `json:"id"` Name string `json:"name"` Status string `json:"status"` Timestamp time.Time `json:"timestamp"` Components []string `json:"components,omitempty"` Description string `json:"description,omitempty"` Tags []string `json:"tags,omitempty"` UI map[string]interface{} `json:"ui,omitempty"` Environment EnvironmentRef `json:"environment"` StackInstance StackInstanceRef `json:"stackInstance"` Logs string `json:"logs,omitempty"` Bundle BackupBundle `json:"bundle"` } type BackupRequest struct { Name string `json:"name"` Components []string `json:"components,omitempty"` } type Application struct { Id string `json:"id"` Name string `json:"name"` Description string `json:"description,omitempty"` Tags []string `json:"tags,omitempty"` UI map[string]interface{} `json:"ui,omitempty"` Application string `json:"application"` Status string `json:"status"` Environment EnvironmentRef `json:"environment"` Environments []EnvironmentRef `json:"environments,omitempty"` // not implemented Platform PlatformRef `json:"platform"` Requires []string `json:"requires"` Parameters []Parameter `json:"parameters,omitempty"` Outputs []Output `json:"outputs,omitempty"` StateFiles []string `json:"stateFiles,omitempty"` InflightOperations []InflightOperation `json:"inflightOperations,omitempty"` } type ApplicationRequest struct { Name string `json:"name"` Description string `json:"description,omitempty"` Tags []string `json:"tags,omitempty"` UI map[string]interface{} `json:"ui,omitempty"` Application string `json:"application"` Requires []string `json:"requires"` Platform string `json:"platform"` Parameters []Parameter `json:"parameters,omitempty"` } type ApplicationPatch struct { UI map[string]interface{} `json:"ui,omitempty"` Parameters []Parameter `json:"parameters,omitempty"` } type License struct { Component string `json:"component"` LicenseKey string `json:"licenseKey"` } type ServiceAccount struct { UserId string `json:"userId"` Name string `json:"name"` GroupId string `json:"groupId"` LoginToken string `json:"loginToken"` } type DeploymentKey struct { DeploymentKey string `json:"deploymentKey"` } type ComponentGitRef struct { Remote string `json:"remote"` SubDir string `json:"subDir,omitempty"` } type Component struct { Id string `json:"id,omitempty"` QName string `json:"qname"` Title string `json:"title"` Brief string `json:"brief,omitempty"` Description string `json:"description,omitempty"` Tags []string `json:"tags,omitempty"` UI map[string]interface{} `json:"ui,omitempty"` Category string `json:"category,omitempty"` License string `json:"license,omitempty"` Icon string `json:"icon,omitempty"` Template *StackTemplateRef `json:"template,omitempty"` Git *ComponentGitRef `json:"git,omitempty"` Version string `json:"version,omitempty"` Maturity string `json:"maturity,omitempty"` Requires []string `json:"requires,omitempty"` Provides []string `json:"provides,omitempty"` TeamsPermissions []Team `json:"teamsPermissions,omitempty"` } type ComponentGitRefRequest struct { SubDir string `json:"subDir,omitempty"` } type ComponentRequest struct { Name string `json:"name"` Title string `json:"title"` Brief string `json:"brief,omitempty"` Description string `json:"description,omitempty"` Tags []string `json:"tags,omitempty"` UI map[string]interface{} `json:"ui,omitempty"` Category string `json:"category,omitempty"` License string `json:"license,omitempty"` Icon string `json:"icon,omitempty"` Template string `json:"template,omitempty"` Git *ComponentGitRefRequest `json:"git,omitempty"` Version string `json:"version,omitempty"` Maturity string `json:"maturity,omitempty"` Requires []string `json:"requires,omitempty"` Provides []string `json:"provides,omitempty"` TeamsPermissions []Team `json:"teamsPermissions,omitempty"` } type ComponentPatch struct { Title string `json:"title,omitempty"` Brief string `json:"brief,omitempty"` Description string `json:"description,omitempty"` Tags []string `json:"tags,omitempty"` UI map[string]interface{} `json:"ui,omitempty"` Category string `json:"category,omitempty"` License string `json:"license,omitempty"` Icon string `json:"icon,omitempty"` Version string `json:"version,omitempty"` Maturity string `json:"maturity,omitempty"` Requires []string `json:"requires,omitempty"` Provides []string `json:"provides,omitempty"` TeamsPermissions []Team `json:"teamsPermissions,omitempty"` } type Task struct { Id string `json:"id"` JobId string `json:"jobId"` EntityType string `json:"entityType"` Kind string `json:"kind"` Operation string `json:"operation"` Status string `json:"status"` StartTime *time.Time `json:"startTime"` CompletionTime *time.Time `json:"completionTime"` Entity struct { Name string `json:"name"` Domain string `json:"domain"` Kind string `json:"kind"` BaseDomain string `json:"baseDomain"` } `json:"entity"` } type TaskLifecycleRequest struct { Terminate bool `json:"terminate"` }