Schemas

Object definitions used by request and response bodies. Field types link to other schemas on this page.

Action

A string, one of:

ValueDescription
read
write
delete

ApplyExtensionRequest

FieldTypeRequiredDescription
plan_hashstringyesThe plan_hash from the plan the operator reviewed.

ApplyExtensionResponse

FieldTypeRequiredDescription
can_revertbooleanyesWhether the version that was running before can be brought back with revert.
extensionExtensionyesThe extension as it ended up. Check state and state_reason to see whether it started.

Config

A representation of the user's configuration settings for a particular pipeline.

FieldTypeRequiredDescription
deprecatedintegeryesTime in epoch milliseconds when this pipeline config was not longer used.
descriptionstringyesDescription of pipeline's purpose and other details.
namestringyesHuman readable name for pipeline.
namespace_idstringyesUnique identifier of the target namespace.
parallelismintegeryesThe amount of runs allowed to happen at any given time.
pipeline_idstringyesUnique identifier of the target pipeline.
registeredintegeryesTime in epoch milliseconds when this pipeline config was registered.
stateConfigStateyesThe deployment state of the config. This is used to determine the state of this particular config and if it is currently being used or not.
tasksmap of string to TaskyesTasks associated with this pipeline.
versionintegeryesThe iteration number for this pipeline's configs.

ConfigState

A string, one of:

ValueDescription
unknown
unreleasedHas never been deployed.
liveCurrently deployed.
deprecatedHas previously been deployed and is now defunct.

CreateNamespaceRequest

FieldTypeRequiredDescription
descriptionstringyesShort description about what the namespace is used for.
idstringyesThe unique identifier for the namespace. Only accepts alphanumeric chars with hyphens. No spaces.
namestringyesHumanized name for the namespace.

CreateNamespaceResponse

FieldTypeRequiredDescription
namespaceNamespaceyesInformation about the namespace created.

CreateRoleRequest

FieldTypeRequiredDescription
descriptionstringyesShort description about what the role is used for.
grantsGrantsyesWhat the role allows.
idstringyesThe unique identifier for the role. Only accepts alphanumeric chars with hyphens. No spaces.

CreateRoleResponse

FieldTypeRequiredDescription
roleRoleyesInformation about the role created.

CreateSubscriptionRequest

FieldTypeRequiredDescription
extension_idstringyes
settingsmap of string to stringyes
subscription_idstringyes

CreateSubscriptionResponse

FieldTypeRequiredDescription
subscriptionSubscriptionyesInformation about the subscription created.

CreateTokenRequest

FieldTypeRequiredDescription
expiresintegeryesThe amount of time the token is valid for in seconds. An expiry of 0 means that token does not expire.
metadatamap of string to string (nullable)noVarious other bits of data you can attach to tokens. This is used by Gofer to track some details about tokens, but can also be used by users to attach bits of information that would make the token easier to programmatically manage.
rolesarray of stringyesThe list of roles to apply to the token.
userstringyesThe plaintext username of the token user.

CreateTokenResponse

FieldTypeRequiredDescription
secretstringyesThe actual token created. API Tokens should be protected in the same fashion as passwords.
token_detailsTokenyesInformation about the token created.

CreateWebLoginResponse

FieldTypeRequiredDescription
codestringyesSingle use code the browser trades for the token. Pass it in a URL fragment so it never reaches server logs.
expiresintegeryesWhen the code stops working, in epoch milliseconds.

DebugResponse

FieldTypeRequiredDescription
infostringyes

DeployPipelineConfigResponse

FieldTypeRequiredDescription
deploymentDeploymentyesInformation about the pipeline created.

Deployment

A deployment represents a transition between two pipeline versions.

FieldTypeRequiredDescription
deployment_idintegeryesUnique identifier for the deployment.
end_versionintegeryesVersion of the pipeline being promoted.
endedintegeryesTime of deployment end in epoch milliseconds.
logsarray of EventyesThe event logs from the deployment.
namespace_idstringyesUnique identifier for the target namespace.
pipeline_idstringyesUnique identifier for the target pipeline.
start_versionintegeryesVersion of the pipeline is being deprecated.
startedintegeryesTime of deployment start in epoch milliseconds.
statedeployment_stateyesThe current state of the deployment as it exists within Gofer's operating model.
statusdeployment_statusyesThe final status of the deployment.
status_reasondeployment_status_reason (nullable)noDetails about a deployment's specific status

Documentation

FieldTypeRequiredDescription
bodystringyesAnything the extension wants to explain to the user. This text is inserted into the documentation a user can look up about the extension. Supports AsciiDoc.
config_paramsarray of ParameteryesEach extension has configuration parameters that can be passed in at extension startup. These parameters should control extension behavior for it's entire lifetime.
pipeline_subscription_paramsarray of ParameteryesEach extension has pipeline subscription parameters that are passed in by a pipeline when it attempts to subscribe to an extension. This controls how the extension treats that specific pipeline subscription.

Error

Error information from a response.

FieldTypeRequiredDescription
error_codestringno
messagestringyes
request_idstringyes

Event

A single event

FieldTypeRequiredDescription
emittedintegeryesTime event was performed in epoch milliseconds.
idstringyesUnique identifier for event.
kindKindyesThe type of event it is.

ExchangeWebLoginRequest

FieldTypeRequiredDescription
codestringyesThe code from create_web_login.

ExchangeWebLoginResponse

FieldTypeRequiredDescription
secretstringyesThe token to sign in with. Protect it like a password.

Extension

An Extension is the way that pipelines add extra functionality to themselves. Pipelines can "subscribe" to extensions and extensions then act on behalf of that pipeline.

FieldTypeRequiredDescription
documentationDocumentationyesWhat the extension's manifest says about it. Comes from the manifest alone, so it's there whether or not the extension is running; empty only for extensions that are no longer in Gofer's config.
manifeststringyesWhere the extension's manifest came from. Empty for extensions that are no longer in Gofer's config.
registrationRegistrationyesMetadata about the extension as it is registered within Gofer.
startedintegeryesThe start time of the extension in epoch milliseconds.
stateextension_stateyesThe current state of the extension as it exists within Gofer's operating model.
state_reasonstringyesWhy the extension is in its current state; set when it failed to start or was stopped.
urlstringyesThe network address used to communicate with the extension by the main process.

ExtensionGrant

Grants access to resources belonging to matching extensions.

FieldTypeRequiredDescription
actionsarray of Actionyes
extensionstringyesRegex matched against the entire extension id. Use '.*' to match every extension.
resourcesarray of ExtensionResourceyes

ExtensionResource

Things that belong to a specific extension.

A string, one of:

ValueDescription
objects
subscriptions
logs

FieldChange

FieldTypeRequiredDescription
fieldstringyes
newstringyes
oldstringyes

GetDeploymentResponse

FieldTypeRequiredDescription
deploymentDeploymentyesThe target deployment.

GetEventResponse

FieldTypeRequiredDescription
eventEventyesThe target event.

GetExtensionResponse

FieldTypeRequiredDescription
extensionExtensionyesThe extension requested.

GetGlobalSecretResponse

FieldTypeRequiredDescription
metadataSecretyesThe target secret metadata.
secretstring (nullable)noThe actual secret, only included if "include_secret" param is true.

GetNamespaceResponse

FieldTypeRequiredDescription
namespaceNamespaceyesThe target namespace.

GetPipelineConfigResponse

FieldTypeRequiredDescription
configConfigyesThe target pipeline config.

GetPipelineResponse

FieldTypeRequiredDescription
pipelineMetadatayesThe metadata for the pipeline.

GetPipelineSecretResponse

FieldTypeRequiredDescription
metadataSecretyesThe target secret metadata.
secretstring (nullable)noThe actual secret, only included if "include_secret" param is true.

GetRoleResponse

FieldTypeRequiredDescription
roleRoleyesThe target role.

GetRunResponse

FieldTypeRequiredDescription
runRunyesThe run requested.

GetSubscriptionResponse

FieldTypeRequiredDescription
subscriptionSubscriptionyesThe metadata for the subscription.

GetSystemMetadataResponse

FieldTypeRequiredDescription
commitstringyesThe commit of the current build.
semverstringyesThe semver version of the current build.

GetSystemPreferencesResponse

FieldTypeRequiredDescription
bootstrap_token_createdbooleanyes
ignore_pipeline_run_eventsbooleanyes

GetTaskExecutionResponse

FieldTypeRequiredDescription
task_executionTaskExecutionyesThe task execution requested.

GetTokenByIDResponse

FieldTypeRequiredDescription
tokenTokenyesThe target token.

GlobalGrant

Grants access to resources that aren't scoped to a namespace or extension. Only 'read' on 'events', 'tokens', or 'roles' is accepted; the rest is admin only.

FieldTypeRequiredDescription
actionsarray of Actionyes
resourcesarray of GlobalResourceyes

GlobalResource

Things that aren't scoped to a namespace or extension.

A string, one of:

ValueDescription
events
tokens
roles
secrets
system

Grants

Everything a role allows. Each grant stands on its own; a request is allowed only if a single grant matches its target and includes both the resource and the action.

FieldTypeRequiredDescription
extensionsarray of ExtensionGrantno
globalarray of GlobalGrantno
namespacesarray of NamespaceGrantno

Initiator

FieldTypeRequiredDescription
idstringyesThe unique identifier for the token that initiated the request.
userstringyesThe plaintext username for of the token.

Kind

One of the variants below. Variants without a payload are sent as a plain string; the rest are an object with the variant name as its only key.

VariantPayloadDescription
anynoneThe Any kind is a special event kind that denotes the caller wants to listen for any event. It should not be used as a normal event type(for example do not publish anything with it). It is internal only and not passed back on event streaming.
created_namespacenamespace_id: string
deleted_namespacenamespace_id: string
disabled_pipelinenamespace_id: string
pipeline_id: string
enabled_pipelinenamespace_id: string
pipeline_id: string
created_pipelinenamespace_id: string
pipeline_id: string
deleted_pipelinenamespace_id: string
pipeline_id: string
started_deploymentend_version: integer
namespace_id: string
pipeline_id: string
start_version: integer
completed_deploymentend_version: integer
namespace_id: string
pipeline_id: string
start_version: integer
queued_runnamespace_id: string
pipeline_id: string
run_id: integer
started_runnamespace_id: string
pipeline_id: string
run_id: integer
completed_runnamespace_id: string
pipeline_id: string
run_id: integer
status: run_status
started_run_cancellationnamespace_id: string
pipeline_id: string
run_id: integer
created_task_executionnamespace_id: string
pipeline_id: string
run_id: integer
task_execution_id: string
started_task_executionnamespace_id: string
pipeline_id: string
run_id: integer
task_execution_id: string
completed_task_executionnamespace_id: string
pipeline_id: string
run_id: integer
status: task_execution_status
task_execution_id: string
started_task_execution_cancellationnamespace_id: string
pipeline_id: string
run_id: integer
task_execution_id: string
timeout: integer
extension_state_changedextension_id: string
reason: string
state: extension_state
An extension started, stopped, failed, or stopped answering health checks. Reason says why, when there is one.
pipeline_extension_subscription_registeredextension_id: string
namespace_id: string
pipeline_id: string
subscription_id: string
pipeline_extension_subscription_unregisteredextension_id: string
namespace_id: string
pipeline_id: string
subscription_id: string
created_rolerole_id: string
deleted_rolerole_id: string

ListDeploymentsResponse

FieldTypeRequiredDescription
deploymentsarray of DeploymentyesA list of all deployments.

ListExtensionObjectsResponse

FieldTypeRequiredDescription
objectsarray of ObjectyesA list of all extension objects.

ListExtensionSubscriptionsResponse

FieldTypeRequiredDescription
subscriptionsarray of SubscriptionyesA list of all pipeline subscriptions for the given extension.

ListExtensionsResponse

FieldTypeRequiredDescription
extensionsarray of ExtensionyesA list of all extensions.

ListGlobalSecretsResponse

FieldTypeRequiredDescription
secretsarray of SecretyesA list of all global secrets.

ListNamespacesResponse

FieldTypeRequiredDescription
namespacesarray of NamespaceyesA list of all namespaces.

ListPipelineConfigsResponse

FieldTypeRequiredDescription
configsarray of ConfigyesA list of all pipelines configs.

ListPipelineObjectsResponse

FieldTypeRequiredDescription
objectsarray of ObjectyesA list of all pipeline objects.

ListPipelineSecretsResponse

FieldTypeRequiredDescription
secretsarray of SecretyesA list of all pipeline secrets.

ListPipelinesResponse

FieldTypeRequiredDescription
pipelinesarray of PipelineSummaryyesA list of all pipelines.

ListRolesResponse

FieldTypeRequiredDescription
rolesarray of RoleyesA list of all roles.

ListRunObjectsResponse

FieldTypeRequiredDescription
objectsarray of ObjectyesA list of all run objects.

ListRunsResponse

FieldTypeRequiredDescription
runsarray of RunyesA list of all runs.

ListSubscriptionsResponse

FieldTypeRequiredDescription
subscriptionsarray of SubscriptionyesA list of all pipeline subscriptions.

ListTaskExecutionsResponse

FieldTypeRequiredDescription
task_executionsarray of TaskExecutionyesA list of all task executions.

ListTokensResponse

FieldTypeRequiredDescription
tokensarray of TokenyesA list of all tokens.

Metadata

Details about the pipeline itself, not including the configuration that the user can change. All these values are changed by the system or never changed at all. This sits in contrast to the config which the user can change freely.

FieldTypeRequiredDescription
createdintegeryesTime of pipeline creation in epoch milliseconds.
modifiedintegeryesTime pipeline was updated to a new version in epoch milliseconds.
namespace_idstringyesUnique identifier of the target namespace.
pipeline_idstringyesUnique identifier of the target pipeline.
statePipelineStateyesThe current running state of the pipeline. This is used to determine if the pipeline should run or not.

Namespace

A namespace represents a grouping of pipelines. Normally it is used to divide teams or logically different sections of workloads. It is the highest level unit as it sits above pipelines in the hierarchy of Gofer.

FieldTypeRequiredDescription
createdintegeryesTime in epoch milliseconds when namespace was created.
descriptionstringyesShort description about what the namespace is used for.
idstringyesUnique identifier for the namespace.
modifiedintegeryesTime in epoch milliseconds when namespace would expire.
namestringyesHumanized name for the namespace.

NamespaceGrant

Grants access to resources within matching namespaces and pipelines.

FieldTypeRequiredDescription
actionsarray of Actionyes
namespacestringyesRegex matched against the entire namespace id. Use '.*' to match every namespace.
pipelinestring (nullable)noRegex matched against the entire pipeline id. Leaving it out matches every pipeline.
resourcesarray of NamespaceResourceyes

NamespaceResource

Things that live under a namespace and pipeline.

A string, one of:

ValueDescription
pipelines
configs
deployments
runs
task_executions
objects
secrets
subscriptions

Object

FieldTypeRequiredDescription
createdintegeryesTime in epoch milliseconds that this object was registered.
keystringyesThe identifier for the object value.

Parameter

FieldTypeRequiredDescription
defaultstringnoThe value used when the operator doesn't set one. Empty means there is no default.
documentationstringyes
keystringyes
requiredbooleanyes
secretbooleannoSecret params only accept a global secret reference (global_secret{{key}}).

Pipeline

Pipeline represents a sequence of tasks, where each task is a discrete unit of work encapsulated within a container. This structure allows you to organize and define the workflow for the tasks you want to execute. - The ID must be between 3 and 32 characters long and only alphanumeric, hyphens are the only allowed alphanumeric character. Ex. simple-pipeline - The name is a human friendly name to represent the pipeline. Ex. Simple Pipeline

FieldTypeRequiredDescription
descriptionstring (nullable)noShort description of what the pipeline is used for.
idstringyesUnique user defined identifier.
namestringyesHumanized name, meant for display.
parallelismintegeryesControls how many runs can be active at any single time. 0 defaults to whatever the global Gofer setting is.
tasksarray of Task2yesA mapping of pipeline owned tasks.

Pipeline2

A collection of logically grouped tasks. A task is a unit of work wrapped in a docker container. Pipeline is a secondary level unit being contained within namespaces and containing runs.

FieldTypeRequiredDescription
configConfigyesUser controlled data for the targeted pipeline.
metadataMetadatayesMacro level details on the targeted pipeline.

PipelineState

A string, one of:

ValueDescription
unknown
active
disabled

PipelineSummary

A pipeline as it shows up in a listing: its metadata plus the name and description from its newest config, so callers can show something friendlier than the id without fetching every config.

FieldTypeRequiredDescription
createdintegeryesTime of pipeline creation in epoch milliseconds.
descriptionstringyesDescription from the newest registered config.
modifiedintegeryesTime pipeline was updated to a new version in epoch milliseconds.
namestringyesHumanized name from the newest registered config.
namespace_idstringyesUnique identifier of the target namespace.
pipeline_idstringyesUnique identifier of the target pipeline.
statePipelineStateyesThe current running state of the pipeline. This is used to determine if the pipeline should run or not.

PlanAction

A string, one of:

ValueDescription
installNew to Gofer; it'll be registered and started.
updateIts config changed; the old container is stopped and a new one started.
startIts config is unchanged but it isn't running, usually because it failed to start earlier.
unchangedAlready running as the config describes.
disableTurned off with enabled = false; it'll be stopped.
unconfigureNo longer in the config; it'll be stopped but its subscriptions and data are kept.
invalidThe config entry has a problem. Nothing will be changed until it's fixed.

PlanExtensionsResponse

FieldTypeRequiredDescription
extensionsarray of PlannedExtensionyesEvery extension Gofer knows about or the config mentions, and what applying the config would do to it.

PlannedExtension

FieldTypeRequiredDescription
actionPlanActionyes
changesarray of FieldChangeyesWhat's different between what's running and what the config describes.
errorstringyesWhy the config entry is invalid. Empty unless the action is invalid.
extension_idstringyes
manifeststringyesWhere the extension's manifest comes from.
plan_hashstringyesPass this back when applying so Gofer can refuse if anything changed after the plan was made.

PutExtensionObjectResponse

FieldTypeRequiredDescription
objectObjectyesInformation about the object created.

PutGlobalSecretRequest

FieldTypeRequiredDescription
contentstringyesThe actual plaintext secret.
forcebooleanyesOverwrite a value of a secret if it already exists.
keystringyesThe name for the secret you would like to store.
namespacesarray of stringyesThe namespaces you want this secret to be accessible by. Regexes matched against the entire namespace id.

PutGlobalSecretResponse

FieldTypeRequiredDescription
secretSecretyesInformation about the secret created.

PutPipelineObjectResponse

FieldTypeRequiredDescription
objectObjectyesInformation about the object created.

PutPipelineSecretRequest

FieldTypeRequiredDescription
contentstringyesThe actual plaintext secret.
forcebooleanyesOverwrite a value of a secret if it already exists.
keystringyesThe name for the secret you would like to store.

PutPipelineSecretResponse

FieldTypeRequiredDescription
secretSecretyesInformation about the secret created.

PutRunObjectResponse

FieldTypeRequiredDescription
objectObjectyesInformation about the object created.

RegisterPipelineConfigRequest

FieldTypeRequiredDescription
configPipelineyesThe pipeline configuration. This is usually supplied by the CLI which translates written code into this format.

RegisterPipelineConfigResponse

FieldTypeRequiredDescription
pipelinePipeline2yesThe current pipeline.

Registration

When installing a new extension, we allow the extension installer to pass a bunch of settings that allow us to go get that extension on future startups.

FieldTypeRequiredDescription
additional_rolesarray of stringyesAdditional roles allow the operator to add additional roles to the extension token. This allow extensions to have greater ranges of permissioning than the default.
createdintegeryesTime of registration creation in epoch milliseconds.
extension_idstringyesUnique identifier for the extension.
imagestringyesWhich container image this extension should run.
modifiedintegeryesTime of last modification in epoch milliseconds.
registry_authRegistryAuth (nullable)noAuth credentials for the image's registry. The password is a global secret reference.
settingsarray of VariableyesThe extension's settings from Gofer's config, passed to the extension as env vars. Secrets are stored as global secret references, never the values themselves, so settings are safe to show.
statusextension_statusyesWhether the extension is enabled or not; extensions can be disabled to prevent use by admins.

RegistryAuth

Authentication information for container registries.

FieldTypeRequiredDescription
passstringyes
userstringyes

RegistryAuth2

FieldTypeRequiredDescription
passstringyes
userstringyes

RequiredParentStatus

A string, one of:

ValueDescription
unknown
any
success
failure

RequiredParentStatus2

A string, one of:

ValueDescription
Unknown
Any
Success
Failure

Role

FieldTypeRequiredDescription
descriptionstringyes
grantsGrantsyes
idstringyesAlphanumeric with dashes only
system_rolebooleanyesIf this role was created by Gofer itself. System roles cannot be modified.

Run

A run is one or more tasks being executed on behalf of some extension. Run is a third level unit containing tasks and being contained in a pipeline.

FieldTypeRequiredDescription
createdintegeryesTime the run was created in epoch milliseconds. A run can sit queued behind the pipeline's parallelism limit for a while, so this can be well before started.
endedintegeryesTime of run end in epoch milliseconds.
event_idstring (nullable)noThe UUID of the QueuedRun event for this run. Essentially pointing to the start of the run in the event stream. This is used internally to help with run recovery.
initiatorInitiatoryesInformation about what started the run.
namespace_idstringyesUnique identifier of the target namespace.
pipeline_config_versionintegeryesWhich version of the pipeline did this run execute.
pipeline_idstringyesUnique identifier of the target pipeline.
run_idintegeryesUnique identifier of the target run.
startedintegeryesTime the run left the queue and started launching tasks, in epoch milliseconds. 0 while still queued.
staterun_stateyesThe current state of the run within the Gofer execution model. Describes if the run is in progress or not.
statusrun_statusyesThe final result of the run.
status_reasonrun_status_reason (nullable)noMore information on the circumstances around a particular run's status.
store_objects_expiredbooleanyesWhether run level objects are deleted.
token_idstring (nullable)noThe unique identifier for Gofer's auto-inject token. This feature is so that users can easily use Gofer's API with a ready injected token into the run just-in-time. If this is None this run had no tasks with the inject_api_token setting enabled. These tokens automatically expire after a pre-determined time.
variablesarray of VariableyesRun level environment variables to be passed to each task execution.

Secret

FieldTypeRequiredDescription
createdintegeryesTime in epoch milliseconds that this secret was registered.
keystringyesThe identifier for the secret value.
namespacesarray of stringyesThe namespaces this secret is allowed to be accessed from. Regexes matched against the entire namespace id.

StartRunRequest

FieldTypeRequiredDescription
variablesmap of string to stringyes

StartRunResponse

FieldTypeRequiredDescription
runRunyesInformation about the run started.

Subscription

FieldTypeRequiredDescription
extension_idstringyesUnique identifier of the target extension.
namespace_idstringyesUnique identifier of the target namespace.
pipeline_idstringyesUnique identifier of the target pipeline.
settingsmap of string to stringyesThe extension's pipeline configuration settings.
statussubscription_statusyesWhether the subscription is working. error means the extension behind it isn't installed or isn't running, so the subscription does nothing until it's back.
status_reasonsubscription_status_reason (nullable)noWhy the subscription is in error, including what's wrong with the extension.
subscription_idstringyesA unique label differentiating this subscription from other subscriptions.

Task

A task represents a particular workload within a pipeline. Tasks are composable within a larger pipeline, meaning they can be run before, after, or alongside other tasks. Tasks represent the lowest level of the Gofer hierarchy and is what Gofer references to see how a user might want their workload handled.

FieldTypeRequiredDescription
always_pull_newest_imagebooleanyesAlways check for most recent version of the current image before running.
commandarray of string (nullable)noCommand to run on init of container; follows normal docker convention of command: https://docs.docker.com/reference/dockerfile/#cmd
depends_onmap of string to RequiredParentStatusyesWhich other tasks (by id) this task depends on.
descriptionstringyesShort description about the workload.
entrypointarray of string (nullable)noCommand to run on init of container; follows normal docker convention for entrypoint: https://docs.docker.com/reference/dockerfile/#entrypoint
idstringyesUnique identifier for the task.
imagestringyesWhich container image to run for this specific task. Example: "ubuntu:latest"
inject_api_tokenbooleanyesWhether to inject a run specific Gofer API key. Useful for using Gofer API within the container.
registry_authRegistryAuth (nullable)noAuth credentials for the image's registry. The password is a secret reference like pipeline_secret{{registry_pass}}; anything else is redacted in API responses.
timeout_secondsintegeryesHow long, in seconds, the task's container can run before Gofer stops it and fails the task. 0 means the server's api.task_execution_max_timeout_seconds applies, which also caps anything set here.
variablesarray of VariableyesVariables which will be passed in as env vars to the task.

Task2

Represents a single task within a Pipeline. A task is a unit of work that operates within its own container. Each task defines the operations to be performed and the container environment in which these operations will run.

  • The ID must be between 3 and 32 characters long and only alphanumeric, hyphens are the only allowed alphanumeric character. Ex. simple-pipeline - The name is a human friendly name to represent the pipeline. Ex. Simple Pipeline
FieldTypeRequiredDescription
always_pull_newest_imagebooleanyesAlways attempt to pull the newest container image.
commandarray of string (nullable)no
depends_onmap of string to RequiredParentStatus2yes
descriptionstring (nullable)no
entrypointarray of string (nullable)no
idstringyes
imagestringyes
inject_api_tokenbooleanyes
registry_authRegistryAuth2 (nullable)no
timeout_secondsintegernoHow long the task's container can run before Gofer stops it and fails the task. 0 means the server's max task execution timeout applies. Defaults to 0 so configs built with older SDKs still parse.
variablesmap of string to stringyes

TaskExecution

a task execution is a specific execution of a task/container. It represents a 4th level unit in the hierarchy. namespace -> pipeline -> run -> task execution. It is the last and most specific object in Gofer's execution model.

FieldTypeRequiredDescription
createdintegeryesTime of task execution creation in epoch milliseconds.
endedintegeryesTime of task execution end in epoch milliseconds.
exit_codeinteger (nullable)noThe exit code of the task execution completion if it is finished.
image_digeststringyesThe exact image the task execution ran with. Tags can move between runs, so this pins down what actually ran. Usually the repo digest, or the image ID for locally built images. Empty until the task has started.
logs_expiredbooleanyesWhether the logs have past their retention time.
logs_removedbooleanyesIf the logs for this execution have been removed. This can be due to user request or automatic action based on expiry time.
namespace_idstringyesUnique identifier of the target namespace.
pipeline_idstringyesUnique identifier of the target pipeline.
run_idintegeryesUnique identifier of the target run.
startedintegeryesTime of task execution start in epoch milliseconds.
statetask_execution_stateyesThe current state of the task execution within the Gofer execution model. Describes if the execution is in progress or not.
statustask_execution_statusyesThe final result of the task execution.
status_reasontask_execution_status_reason (nullable)noMore information on the circumstances around a particular task execution's status.
taskTaskyesInformation about the underlying task this task execution ran.
task_idstringyesUnique identifier of the current task being executed.
timelinearray of task_execution_timeline_entryyesThe phases the task execution went through in order, so you can tell where its time went.
variablesarray of VariableyesThe environment variables injected during this particular task execution.

Token

Gofer API Token.

The hash field is skipped during serialization to prevent it from being exposed to the user. This isn't a foolproof practice, but it'll work for now.

FieldTypeRequiredDescription
createdintegeryesTime in epoch milliseconds when token was created.
disabledbooleanyesIf the token is inactive or not; disabled tokens cannot be used for requests.
expiresintegeryesTime in epoch milliseconds when token would expire. An expiry of 0 means that token does not expire.
idstringyesUnique identifier for token.
metadatamap of string to stringyesExtra information about this token in label form
rolesarray of stringyesThe role ids for the current token.
userstringyesThe user of the token in plaintext.

UpdateNamespaceRequest

FieldTypeRequiredDescription
descriptionstring (nullable)noShort description about what the namespace is used for.
namestring (nullable)noHumanized name for the namespace.

UpdateNamespaceResponse

FieldTypeRequiredDescription
namespaceNamespaceyesInformation about the namespace updated.

UpdatePipelineRequest

FieldTypeRequiredDescription
statePipelineState (nullable)no

UpdateRoleRequest

FieldTypeRequiredDescription
descriptionstring (nullable)noShort description about what the role is used for.
grantsGrants (nullable)noReplaces everything the role allows.

UpdateRoleResponse

FieldTypeRequiredDescription
roleRoleyesInformation about the role updated.

UpdateSubscriptionRequest

FieldTypeRequiredDescription
statusUpdateSubscriptionStatus (nullable)no

UpdateSubscriptionStatus

A string, one of:

ValueDescription
active
disabled

UpdateSystemPreferencesRequest

FieldTypeRequiredDescription
ignore_pipeline_run_eventsboolean (nullable)no

UpdateSystemPreferencesResponse

An object with no defined fields.

UpdateTokenRequest

FieldTypeRequiredDescription
disabledboolean (nullable)no

Variable

A variable is a key value pair that is used either at a run or task level. The variable is inserted as an environment variable to an eventual task execution. It can be owned by different parts of the system which control where the potentially sensitive variables might show up.

FieldTypeRequiredDescription
keystringyes
sourceVariableSourceyes
valuestringyes

VariableSource

A string, one of:

ValueDescription
unknown
pipeline_configFrom the user's own pipeline configuration.
systemFrom the Gofer API executor itself.
run_optionsInjected at the beginning of a particular run.
extensionInjected by a subscribed extension.

WhoAmIResponse

FieldTypeRequiredDescription
tokenTokenyesThe target token.

deployment_state

A string, one of:

ValueDescription
Running
Complete
UnknownShould never be in this state.

deployment_status

A string, one of:

ValueDescription
UnknownShould only be in this state if the deployment is not yet complete.
FailedHas encountered an issue, either container issue or scheduling issue.
SuccessfulFinished with a proper exit code.

deployment_status_reason

FieldTypeRequiredDescription
descriptionstringyesA description of why the deployment might have failed and what was going on at the time.
reasondeployment_status_reason_typeyesThe specific type of deployment failure.

deployment_status_reason_type

A string, one of:

ValueDescription
Unknown

extension_state

A string, one of:

ValueDescription
unknownShould never be in this state.
processingPre-scheduling validation and prep.
runningCurrently running as reported by scheduler.
degradedRunning, but it stopped answering health checks. Gofer keeps sending it work and restarts it if it doesn't recover. The extension's state_reason has the last error.
exitedExtension has exited; usually because of an error.
stoppedNot running on purpose, because it's disabled or no longer in the config.
failedGofer couldn't start the extension. The extension's state_reason says why.

extension_status

A string, one of:

ValueDescription
unknownCannot determine status of Extension; should never be in this status.
enabledInstalled and able to be used by pipelines.
disabledTurned off in Gofer's config with enabled = false.
unconfiguredInstalled at some point but no longer listed in Gofer's config. Its subscriptions and data are kept so adding it back to the config picks up where it left off; gofer extension purge deletes them for good.

run_state

The current state of the run. The state is described as the progress of the run towards completion.

A string, one of:

ValueDescription
unknown
pendingBefore the tasks in a run are sent to the scheduler it must complete various steps like validation checking. This state represents that step where the run and task executions are pre-checked.
runningCurrently running.
completeAll tasks have been resolved and the run is no longer being executed.

run_status

The current status of the run. Status is described as if the run succeeded or not.

A string, one of:

ValueDescription
unknownCould not determine the current state of the status. Should only be in this state if the run has not yet completed.
failedOne or more tasks in run have failed.
successfulAll tasks in a run have completed with a non-failure state.
cancelledOne or more tasks in a run have been cancelled.

run_status_reason

FieldTypeRequiredDescription
descriptionstringyesA description of why the run might have failed and what was going on at the time.
reasonrun_status_reason_typeyesThe specific type of run failure.

run_status_reason_type

A string, one of:

ValueDescription
unknownGofer has no fucking clue how the run got into this state.
abnormal_exitWhile executing the run, one or more tasks exited with an abnormal exit code.
scheduler_errorWhile executing the run, one or more tasks returned errors from the scheduler or could not be scheduled.
failed_preconditionThe run could not be executed as requested due to user defined attributes given.
user_cancelledOne or more tasks could not be completed due to a user cancelling the run.
admin_cancelledOne or more tasks could not be completed due to the system or admin cancelling the run.
timeoutOne or more tasks ran longer than their timeout and were stopped.

subscription_status

A string, one of:

ValueDescription
unknown
active
error
disabled

subscription_status_reason

FieldTypeRequiredDescription
descriptionstringyesA description of why the subscription might have failed and what was going on at the time.
reasonsubscription_status_reason_typeyesThe specific type of subscription failure.

subscription_status_reason_type

A string, one of:

ValueDescription
unknown
not_found
failed

task_execution_phase

A step a task execution goes through on its way to finishing. Used to break down where a task execution spent its time, especially the time before its container actually started running.

A string, one of:

ValueDescription
waiting_on_dependenciesWaiting for the tasks it depends on to finish.
preparingResolving variables, which includes reading from the secret and object stores.
pulling_imageThe scheduler is pulling the container image.
starting_containerThe scheduler is creating and starting the container.
runningThe container is running.

task_execution_state

A string, one of:

ValueDescription
complete
unknownShould never be in this state.
processingPre-scheduler validation and prep.
waitingWaiting to be scheduled.
runningCurrently running as reported by scheduler.

task_execution_status

A string, one of:

ValueDescription
unknown
failedHas encountered an issue, either container issue or scheduling issue.
successfulFinished with a proper exit code.
cancelledCancelled mid run due to user requested cancellation.
skippedNot run due to dependencies not being met.

task_execution_status_reason

FieldTypeRequiredDescription
descriptionstringyesA description of why the task execution might have failed and what was going on at the time.
reasontask_execution_status_reason_typeyesThe specific type of task execution failure.

task_execution_status_reason_type

A string, one of:

ValueDescription
unknownGofer has no fucking clue how the run got into this state.
abnormal_exitA non-zero exit code has been received.
scheduler_errorEncountered an error with the container scheduler.
failed_preconditionUser error in task execution parameters.
cancelledUser invoked cancellation.k
orphanedTask execution was lost due to extreme internal error.
timeoutThe container ran longer than its timeout and was stopped. The description says which timeout it hit.

task_execution_timeline_entry

FieldTypeRequiredDescription
phasetask_execution_phaseyesThe phase the task execution entered.
startedintegeryesWhen the phase began in epoch milliseconds. A phase lasts until the next entry begins, or until the task execution ended if it's the last one.