syntax = "proto3";
package flyteidl.admin;
option go_package = "github.com/flyteorg/flyte/flyteidl/gen/pb-go/flyteidl/admin";
import "flyteidl/core/execution.proto";
import "flyteidl/core/identifier.proto";
import "flyteidl/core/literals.proto";
import "google/protobuf/timestamp.proto";
// Encapsulation of fields that identifies a Flyte resource.
// A Flyte resource can be a task, workflow or launch plan.
// A resource can internally have multiple versions and is uniquely identified
// by project, domain, and name.
message NamedEntityIdentifier {
// Name of the project the resource belongs to.
string project = 1;
// Name of the domain the resource belongs to.
// A domain can be considered as a subset within a specific project.
string domain = 2;
// User provided value for the resource.
// The combination of project + domain + name uniquely identifies the resource.
// +optional - in certain contexts - like 'List API', 'Launch plans'
string name = 3;
// Optional, org key applied to the resource.
string org = 4;
}
// The status of the named entity is used to control its visibility in the UI.
enum NamedEntityState {
// By default, all named entities are considered active and under development.
NAMED_ENTITY_ACTIVE = 0;
// Archived named entities are no longer visible in the UI.
NAMED_ENTITY_ARCHIVED = 1;
// System generated entities that aren't explicitly created or managed by a user.
SYSTEM_GENERATED = 2;
}
// Additional metadata around a named entity.
message NamedEntityMetadata {
// Common description across all versions of the entity
// +optional
string description = 1;
// Shared state across all version of the entity
// At this point in time, only workflow entities can have their state archived.
NamedEntityState state = 2;
}
// Encapsulates information common to a NamedEntity, a Flyte resource such as a task,
// workflow or launch plan. A NamedEntity is exclusively identified by its resource type
// and identifier.
message NamedEntity {
// Resource type of the named entity. One of Task, Workflow or LaunchPlan.
flyteidl.core.ResourceType resource_type = 1;
NamedEntityIdentifier id = 2;
// Additional metadata around a named entity.
NamedEntityMetadata metadata = 3;
}
// Specifies sort ordering in a list request.
message Sort {
enum Direction {
// By default, fields are sorted in descending order.
DESCENDING = 0;
ASCENDING = 1;
}
// Indicates an attribute to sort the response values.
// +required
string key = 1;
// Indicates the direction to apply sort key for response values.
// +optional
Direction direction = 2;
}
// Represents a request structure to list NamedEntityIdentifiers.
message NamedEntityIdentifierListRequest {
// Name of the project that contains the identifiers.
// +required
string project = 1;
// Name of the domain the identifiers belongs to within the project.
// +required
string domain = 2;
// Indicates the number of resources to be returned.
// +required
uint32 limit = 3;
// In the case of multiple pages of results, the server-provided token can be used to fetch the next page
// in a query.
// +optional
string token = 4;
// Specifies how listed entities should be sorted in the response.
// +optional
Sort sort_by = 5;
// Indicates a list of filters passed as string.
// +optional
string filters = 6;
// Optional, org key applied to the resource.
string org = 7;
}
// Represents a request structure to list NamedEntity objects
message NamedEntityListRequest {
// Resource type of the metadata to query. One of Task, Workflow or LaunchPlan.
// +required
flyteidl.core.ResourceType resource_type = 1;
// Name of the project that contains the identifiers.
// +required
string project = 2;
// Name of the domain the identifiers belongs to within the project.
string domain = 3;
// Indicates the number of resources to be returned.
uint32 limit = 4;
// In the case of multiple pages of results, the server-provided token can be used to fetch the next page
// in a query.
// +optional
string token = 5;
// Specifies how listed entities should be sorted in the response.
// +optional
Sort sort_by = 6;
// Indicates a list of filters passed as string.
// +optional
string filters = 7;
// Optional, org key applied to the resource.
string org = 8;
}
// Represents a list of NamedEntityIdentifiers.
message NamedEntityIdentifierList {
// A list of identifiers.
repeated NamedEntityIdentifier entities = 1;
// In the case of multiple pages of results, the server-provided token can be used to fetch the next page
// in a query. If there are no more results, this value will be empty.
string token = 2;
}
// Represents a list of NamedEntityIdentifiers.
message NamedEntityList {
// A list of NamedEntity objects
repeated NamedEntity entities = 1;
// In the case of multiple pages of results, the server-provided token can be used to fetch the next page
// in a query. If there are no more results, this value will be empty.
string token = 2;
}
// A request to retrieve the metadata associated with a NamedEntityIdentifier
message NamedEntityGetRequest {
// Resource type of the metadata to get. One of Task, Workflow or LaunchPlan.
// +required
flyteidl.core.ResourceType resource_type = 1;
// The identifier for the named entity for which to fetch metadata.
// +required
NamedEntityIdentifier id = 2;
}
// Request to set the referenced named entity state to the configured value.
message NamedEntityUpdateRequest {
// Resource type of the metadata to update
// +required
flyteidl.core.ResourceType resource_type = 1;
// Identifier of the metadata to update
// +required
NamedEntityIdentifier id = 2;
// Metadata object to set as the new value
// +required
NamedEntityMetadata metadata = 3;
}
// Purposefully empty, may be populated in the future.
message NamedEntityUpdateResponse {
}
// Shared request structure to fetch a single resource.
// Resources include: Task, Workflow, LaunchPlan
message ObjectGetRequest {
// Indicates a unique version of resource.
// +required
core.Identifier id = 1;
}
// Shared request structure to retrieve a list of resources.
// Resources include: Task, Workflow, LaunchPlan
message ResourceListRequest {
// id represents the unique identifier of the resource.
// +required
NamedEntityIdentifier id = 1;
// Indicates the number of resources to be returned.
// +required
uint32 limit = 2;
// In the case of multiple pages of results, this server-provided token can be used to fetch the next page
// in a query.
// +optional
string token = 3;
// Indicates a list of filters passed as string.
// More info on constructing filters :
// +optional
string filters = 4;
// Sort ordering.
// +optional
Sort sort_by = 5;
}
// Defines an email notification specification.
message EmailNotification {
// The list of email addresses recipients for this notification.
// +required
repeated string recipients_email = 1;
}
// Defines a pager duty notification specification.
message PagerDutyNotification {
// Currently, PagerDuty notifications leverage email to trigger a notification.
// +required
repeated string recipients_email = 1;
}
// Defines a slack notification specification.
message SlackNotification {
// Currently, Slack notifications leverage email to trigger a notification.
// +required
repeated string recipients_email = 1;
}
// Represents a structure for notifications based on execution status.
// The notification content is configured within flyte admin but can be templatized.
// Future iterations could expose configuring notifications with custom content.
message Notification {
// A list of phases to which users can associate the notifications to.
// +required
repeated core.WorkflowExecution.Phase phases = 1;
// The type of notification to trigger.
// +required
oneof type {
EmailNotification email = 2;
PagerDutyNotification pager_duty = 3;
SlackNotification slack = 4;
}
}
// Represents a string url and associated metadata used throughout the platform.
message UrlBlob {
option deprecated = true;
// Actual url value.
string url = 1;
// Represents the size of the file accessible at the above url.
int64 bytes = 2;
}
// Label values to be applied to an execution resource.
// In the future a mode (e.g. OVERRIDE, APPEND, etc) can be defined
// to specify how to merge labels defined at registration and execution time.
message Labels {
// Map of custom labels to be applied to the execution resource.
map values = 1;
}
// Annotation values to be applied to an execution resource.
// In the future a mode (e.g. OVERRIDE, APPEND, etc) can be defined
// to specify how to merge annotations defined at registration and execution time.
message Annotations {
// Map of custom annotations to be applied to the execution resource.
map values = 1;
}
// Environment variable values to be applied to an execution resource.
// In the future a mode (e.g. OVERRIDE, APPEND, etc) can be defined
// to specify how to merge environment variables defined at registration and execution time.
message Envs {
// Map of custom environment variables to be applied to the execution resource.
repeated flyteidl.core.KeyValuePair values = 1;
}
// Defines permissions associated with executions created by this launch plan spec.
// Use either of these roles when they have permissions required by your workflow execution.
// Deprecated.
message AuthRole {
option deprecated = true;
// Defines an optional iam role which will be used for tasks run in executions created with this launch plan.
string assumable_iam_role = 1;
// Defines an optional kubernetes service account which will be used for tasks run in executions created with this launch plan.
string kubernetes_service_account = 2;
}
// Encapsulates user settings pertaining to offloaded data (i.e. Blobs, Schema, query data, etc.).
// See https://github.com/flyteorg/flyte/issues/211 for more background information.
message RawOutputDataConfig {
// Prefix for where offloaded data from user workflows will be written
// e.g. s3://bucket/key or s3://bucket/
string output_location_prefix = 1;
}
// These URLs are returned as part of node and task execution data requests.
message FlyteURLs {
string inputs = 1;
string outputs = 2;
string deck = 3;
}