Documentation
¶
Index ¶
Constants ¶
const ( // GITHUB based hooks GITHUB = iota + 1 // GITLAB based hooks GITLAB // GITEA based hooks GITEA )
Variables ¶
var SupportedPlatforms = map[int]Platform{ GITHUB: { ID: GITHUB, Name: "github", }, GITLAB: { ID: GITLAB, Name: "gitlab", }, GITEA: { ID: GITEA, Name: "gitea", }, }
SupportedPlatforms a map of supported platforms by Krok.
Functions ¶
This section is empty.
Types ¶
type APIKey ¶
type APIKey struct {
// ID of the key. This is auto-generated.
//
// required: true
ID int `json:"id"`
// Name of the key
//
// required: true
Name string `json:"name,omitempty"`
// UserID is the ID of the user to which this key belongs.
//
// required: true
UserID int `json:"user_id"`
// APIKeyID is a generated id of the key.
//
// required: true
APIKeyID string `json:"api_key_id"`
// APIKeySecret is a generated secret, aka, the key.
//
// required: true
APIKeySecret string `json:"api_key_secret"`
// TTL defines how long this key can live in duration.
//
// required: true
// example: 1h10m10s
TTL string `json:"ttl"`
// CreateAt defines when this key was created.
//
// required: true
// example: time.Now()
CreateAt time.Time `json:"create_at"`
}
APIKey is an api key pair generated by the user to access the api without the frontend. swagger:model
type APIKeyAuthRequest ¶
type APIKeyAuthRequest struct {
Email string `json:"email"`
APIKeyID string `json:"api_key_id"`
APIKeySecret string `json:"api_key_secret"`
}
APIKeyAuthRequest contains a user email and their api key.
type Auth ¶
type Auth struct {
// SSH private key.
//
// required: false
SSH string `json:"ssh,omitempty"`
// Username is the username required to access the platform for this repositroy.
//
// required: false
Username string `json:"username,omitempty"`
// Password is the password required to access the platform for this repositroy.
//
// required: false
Password string `json:"password,omitempty"`
// Hook secret to create a hook with on the respective platform.
//
// required: true
Secret string `json:"secret"`
}
Auth is authentication option for a repository. swagger:model
type Command ¶
type Command struct {
// Name of the command.
//
// required: true
Name string `json:"name"`
// ID of the command. Generated.
//
// required: true
ID int `json:"id"`
// Schedule of the command.
//
// required: false
// example: 0 * * * * // follows cron job syntax.
Schedule string `json:"schedule,omitempty"`
// Repositories that this command can execute on.
//
// required: false
Repositories []*Repository `json:"repositories,omitempty"`
// Image defines the image name and tag of the command
// Note: At the moment, only docker is supported. Later, runc, containerd...
//
// required: true
// example: krok-hook/slack-notification:v0.0.1
Image string `json:"image"`
// Enabled defines if this command can be executed or not.
//
// required: false
// example: false
Enabled bool `json:"enabled"`
// Platforms holds all the platforms which this command supports.
// Calculated, not saved.
//
// required: false
Platforms []Platform `json:"providers,omitempty"`
}
Command is a command which can be executed by Krok. swagger:model
type CommandRun ¶
type CommandRun struct {
// ID is a generatd identifier.
//
// required: true
ID int `json:"id"`
// EventID is the ID of the event that this run belongs to.
//
// required: true
EventID int `json:"event_id"`
// CommandName is the name of the command that is being executed.
//
// required: true
CommandName string `json:"command_name"`
// Status is the current state of the command run.
//
// required: true
// example: created, running, failed, success
Status string `json:"status"`
// Outcome is any output of the command. Stdout and stderr combined.
//
// required: false
Outcome string `json:"outcome"`
// CreatedAt is the time when this command run was created.
//
// required: true
CreateAt time.Time `json:"create_at"`
}
CommandRun is a single run of a command belonging to an event including things like, state, event, and created at. swagger:model
type CommandSetting ¶
type CommandSetting struct {
// ID is a generated ID.
//
// required: true
ID int `json:"id"`
// CommandID is the ID of the command to which these settings belong to.
//
// required: true
CommandID int `json:"command_id"`
// Key is the name of the setting.
//
// required: true
Key string `json:"key"`
// Value is the value of the setting.
//
// required: true
Value string `json:"value"`
// InVault defines if this is sensitive information and should be stored securely.
//
// required: false
InVault bool `json:"in_vault"`
}
CommandSetting defines the settings a command can have. swagger:model
type Event ¶
type Event struct {
// ID is a generated ID.
//
// required: true
ID int `json:"id"`
// EvenID is the ID of the corresponding event on the given platform. If that cannot be determined
// an ID is generated.
//
// required: true
EventID string `json:"event_id"`
// CreatedAt contains the timestamp when this event occurred.
//
// required: true
CreateAt time.Time `json:"create_at"`
// RepositoryID contains the ID of the repository for which this event occurred.
//
// required: true
RepositoryID int `json:"repository_id"`
// CommandRuns contains a list of CommandRuns which executed for this event.
//
// required: false
CommandRuns []*CommandRun `json:"command_runs"`
// Payload defines the information received from the platform for this event.
//
// required: true
Payload string `json:"payload"`
// VCS is the ID of the platform on which this even occurred.
//
// required: true
VCS int `json:"vcs"`
// EventType of the name, i.e.: push, ping, pull-request...
//
// required: true
EventType string `json:"event_type"`
}
Event contains details about a platform event, such as the repository it belongs to and the event that created it... swagger:model
type GitLab ¶
type GitLab struct {
// ProjectID is an optional ID which defines a project in Gitlab.
//
// required: false
ProjectID int `json:"project_id,omitempty"`
}
GitLab contains gitLab specific settings. swagger:model
func (*GitLab) GetProjectID ¶
GetProjectID returns the project id.
type ListOptions ¶
type ListOptions struct {
// Name of the context for which this option is used.
//
// required: false
// example: "partialNameOfACommand"
Name string `json:"name,omitempty"`
// Only list all entries for a given platform ID.
//
// required: false
// example: 1
VCS int `json:"vcs,omitempty"`
// Page defines the current page.
//
// required: false
// example: 0
Page int `json:"page,omitempty"`
// PageSize defines the number of items per page.
//
// required false
// example: 10
PageSize int `json:"page_size,omitempty"`
// StartingDate defines a date of start to look for events. Inclusive.
//
// required: false
// example: 2021-02-02
StartingDate *time.Time `json:"starting_date,omitempty"`
// EndDate defines a date of end to look for events. Not Inclusive.
//
// required: false
// example: 2021-02-03
EndDate *time.Time `json:"end_date,omitempty"`
}
ListOptions provides options for List operations with additional filters. swagger:model
type Platform ¶
type Platform struct {
// ID of the platform. This is choosen.
//
// required: true
ID int `json:"id"`
// Name of the platform.
//
// required: true
// example: github, gitlab, gitea
Name string `json:"name"`
}
Platform defines a platform like Github, Gitlab etc. swagger:model
type Repository ¶
type Repository struct {
// Name of the repository.
//
// required: false
Name string `json:"name"`
// ID of the repository. Auto-generated.
//
// required: true
ID int `json:"id"`
// URL of the repository.
//
// required: true
URL string `json:"url"`
// VCS Defines which handler will be used. For values, see platforms.go.
//
// required: true
VCS int `json:"vcs"`
// GitLab specific settings.
//
// required: false
GitLab *GitLab `json:"git_lab,omitempty"`
// Auth contains authentication details for this repository.
//
// required: true
Auth *Auth `json:"auth,omitempty"`
// Commands contains all the commands which this repository is attached to.
//
// required: false
Commands []*Command `json:"commands,omitempty"`
// This field is not saved in the DB but generated every time the repository
// details needs to be displayed.
//
// required: true
UniqueURL string `json:"unique_url,omitempty"`
// TODO: Think about storing this
Events []string `json:"events,omitempty"`
}
Repository is a repository which can be managed by Krok. swagger:model
type TokenResponse ¶
type TokenResponse struct {
// The generated token
// in: body
Token string
}
TokenResponse contains the generated JWT token. swagger:response TokenResponse
type User ¶
type User struct {
// DisplayName is the name of the user.
//
// required: false
DisplayName string `json:"display_name,omitempty"`
// Email of the user.
//
// required: true
Email string `json:"email"`
// ID of the user. This is auto-generated.
//
// required: true
ID int `json:"id"`
// LastLogin contains the timestamp of the last successful login of this user.
//
// required: true
LastLogin time.Time `json:"last_login,omitempty"`
// APIKeys contains generated api access keys for this user.
//
// required: false
APIKeys []*APIKey `json:"api_keys,omitempty"`
}
User is a user in the Krok system. swagger:model
type UserAuthDetails ¶
type UserAuthDetails struct {
// Email is the email of the registered user.
//
// required: true
Email string
// FirstName is the first name of the user.
//
// required: true
FirstName string
// LastName is the last name of the user.
//
// required: true
LastName string
}
UserAuthDetails represents the authenticated user details. swagger:model
type VCSToken ¶
type VCSToken struct {
// Token is the actual token.
//
// required: true
Token string `json:"token"`
// VCS is the ID of the platform to which this token belongs to.
//
// required: true
VCS int `json:"vcs"`
}
VCSToken represents a token for a platform. swagger:model
type VaultSetting ¶
type VaultSetting struct {
// Key is the name of the setting.
//
// required: true
Key string `json:"key"`
// Value is the value of the setting.
//
// required: true
Value string `json:"value"`
}
VaultSetting defines a setting that comes from the vault swagger:model