Skip to content

voplica.types.workflow

The protobuf package voplica.types.workflow: 0 services, 46 messages and 1 enum, defined in voplica/types/workflow/node.proto, voplica/types/workflow/param_value.proto, voplica/types/workflow/privacy_mode.proto, voplica/types/workflow/value_spec.proto, voplica/types/workflow/workflow_definition.proto, voplica/types/workflow/workflow_execution.proto.

Field Number Type Label Description
variant_id 1 string
default_preview 2 voplica.types.file.AssetFileVariantGroups optional Note: file_variant_groups are returned only if requested explicitly

Registry item (reusable)

Field Number Type Label Description
id 1 string
registry_key 2 string e.g. “image.generator”
name 3 string human-friendly name, e.g. Image Generator
status 4 voplica.types.base.PublishStatus Automatically published where there is at least one published model variant. Automatically unpublished if there are no any published model variants.
owner_id 5 string
visibility 6 voplica.types.base.VisibilityType Node group visibility type
min_required_subscription 7 voplica.types.subscription.StudioSubscriptionType Minimum subscription level the user should have to use any of the node variants in the group This is used as denormalization data. For each individual node variant the user should check requirements separately.
created_at 8 uint64 Timestamp when the model was created
latest_node_variant_created_at 9 uint64
default_node_variant 10 NodeVariantShortPreview optional
executor_type 11 voplica.types.workflow.common.WorkflowNodeExecutorType ACTIVITY | WORKFLOW | CONTAINER | EXTERNAL
Field Number Type Label Description
node_id 1 string
description 2 string
Field Number Type Label Description
variant_id 1 string
parent_node_id 2 string
variant_name 3 string Node variant name / version
status 4 voplica.types.base.PublishStatus
owner_id 5 string
visibility 6 voplica.types.base.VisibilityType Node visibility type is inherited from parent node
min_required_subscription 7 voplica.types.subscription.StudioSubscriptionType Minimum subscription level the user should have to use this node variant
created_at 8 uint64
verification 9 voplica.types.base.VerificationStatus
input_spec 10 WorkflowInputSpec
output_spec 11 WorkflowOutputSpec
gpu_tier 12 voplica.types.workflow.common.WorkflowGpuTier
default_step_exec_config 13 voplica.types.workflow.common.WorkflowStepExecConfig
pricing 14 WorkflowNodeVariantPricing
trigger_key 15 string Represents the name of the internal Activity / Workflow implementation that will be triggered when the node is used Schema for built-in activity / workflow can be inferred automatically from Input and Output data types Input and Output Messages are guaranteed to be generated from Protobuf. As such, we can take message descriptor and split it into the Map-based value spec.
default_preview 16 voplica.types.file.AssetFileVariantGroups optional Note: file_variant_groups are returned only if requested explicitly
Field Number Type Label Description
credits_pricing_hint_milli 1 uint64 Average pricing hint for this node. This is not the final price, but an average hint on what it might usually cost. The final pricing is calculated after node iteration is executed. The hint may be automatically updated overtime after enough statistics accumulated. milli-credits (1/1000 credit). 1 credit = 1 cent.
initial_credits_reservation_milli 2 uint64 This is calculated based on the GPU tier automatically, but may be changed by administrator. Reasons why it could be changed: - built-in API node. If the node calls other services then pricing is based not solely on run time but also on how much those services cost. - Known nodes that usually run for much longer (like LoRa training) or for shorter periods (like CPU-based image modification) milli-credits (1/1000 credit). 1 credit = 1 cent.

Reference to workflow input

Field Number Type Label Description
field_path 1 string Dot-formatted input field selector. Empty string == whole input This only says what value we select from input for evaluation, but the final used values might be modified via values_selector. Notice, the Workflow Input is always a Map. As such, if the field_path is empty - it will return the whole workflow input for evaluation. However, usually we are interested only in a specific input. Thus, the first word in the expression will mean the key of the input map.
values_selector 2 WorkflowParamValuesSelector optional How to select from multiple values (if input is a list)

Selects which iteration(s) to get outputs from

Field Number Type Label Description
latest 1 google.protobuf.Empty oneof selector Get output from the latest iteration
first 2 google.protobuf.Empty oneof selector Get output from the first iteration
specific_iteration 3 uint32 oneof selector Get output from a specific iteration number (0-based)
relative_iteration 4 int32 oneof selector Get output from iteration relative to current (e.g., -1 = previous iteration)
next_iteration 5 google.protobuf.Empty oneof selector Get output from next iteration (equivalent to relative_iteration = 1)

Compares left value to one or more right values using the provided operator. If IN operator is provided then it checks that the provided right values list contains left value. For all other operators (EQ, NE, GT, GTE, LT, LTE) it checks each right value with left value. All such checks are combined via AND in this case, meaning all checks should be true so that this comparator resolves to true. Notice: If any of values (left_value or right_values) are unresolved due to unsatisfied references (for example, when iteration for the value is unsatisfied) then the whole condition becomes NULL (neither true nor false). NULL conditions are turning other parent conditions into NULL. NULL basically means - the condition cannot be calculated.

Field Number Type Label Description
left_value 1 WorkflowParamValueWithPath
operator 2 voplica.types.base.CompareOperator
right_values 3 WorkflowParamValueWithPath repeated
Field Number Type Label Description
field_path 1 string If empty string then value_source is used as is. Otherwise, a nested value is selected.
value_source 2 WorkflowResolvableParamValue Value source (constant or reference or mix of constants and references)

Selects specific values from the referenced data

Field Number Type Label Description
considered_indexes 1 uint32 repeated Indexes of specific values to consider (0-based) If not provided, all values are considered Only applicable to list/repeated values
return_field_path 2 string Dot-formatted path to extract nested fields from each value Empty string = return values as is Example: “file.id” to extract just the ID from FileInfo objects
filter_field_path 3 string Dot-formatted path defining which field to apply filters on Empty string = apply filter on root value Example: “metadata.score” to filter based on a nested score field
per_value_filter 4 voplica.types.base.ParamValueCondition optional Filter to apply to each value
select_all 10 google.protobuf.Empty oneof select_mode Select all matched values (returns list)
select_first 11 google.protobuf.Empty oneof select_mode Select first matched value
select_last 12 google.protobuf.Empty oneof select_mode Select last matched value
select_nth 13 int32 oneof select_mode Select nth matched value (0-based)
Field Number Type Label Description
values 2 WorkflowResolvableParamValue repeated
Field Number Type Label Description
map 1 map<string, WorkflowResolvableParamValue>
Field Number Type Label Description
literal 1 voplica.types.base.ParamValue oneof value Supply literal value directly When packing a complex type into a literal there are two ways of doing so: 1) Using any_value that will hold bytes of the serialized object as well as target url of its type. 2) Using bytes_value that will hold bytes of the serialized object. In this case the type is inferred from the key of the supplied param.
map_value 2 WorkflowResolvableMapParamValue oneof value Map value allows to provide nested values
list_value 3 WorkflowResolvableListParamValue oneof value List value to provide multiple values
step_output_ref 4 WorkflowStepOutputParamReference oneof value Get value from the output of any step of the current workflow
input_ref 5 WorkflowInputParamReference oneof value Get value from the input values of the current workflow
step_input_ref 6 WorkflowStepInputParamReference oneof value Get value from the input of any step of the current workflow
resolve_value_condition 11 WorkflowStepCondition optional If evaluated to false then value resolution is skipped and the provided fallback_strategy applies. If fallback strategy is not provided - value becomes unresolved.
unresolved 20 google.protobuf.Empty oneof fallback_strategy Keep parameter as unresolvable - the parent wrapper value will then apply its own fallback_strategy, or if it’s the root value then the processing logic will apply its strategy.
none 21 google.protobuf.Empty oneof fallback_strategy Returns nothing - only applicable if the schema accepts optional value. When used in Map structure - it means to not adding the key where this value was used. When used in List structure - it means to skip / remove this value from the list.
fallback_value 22 WorkflowResolvableParamValue oneof fallback_strategy Returns alternative / fallback value if the main value was unresolved.

WorkflowStepCondition is resolved to true if all provided conditions and comparators are resolved to true. In other words WorkflowStepCondition is resolved to and_conditions && or_conditions && not_conditions && value_comparators && iteration_comparators.

Field Number Type Label Description
and_conditions 1 WorkflowStepCondition repeated and_conditions resolves to true if all conditions are true. Empty list is resolved to true.
or_conditions 2 WorkflowStepCondition repeated or_conditions resolves to true if any condition is true. Empty list is resolved to true.
not_conditions 3 WorkflowStepCondition repeated not_conditions resolves to true if all conditions are false. Empty list is resolved to true.
value_comparators 4 WorkflowParamValueComparatorExpression repeated Value comparators resolves to true if all value comparators are true. Empty list is resolved to true.
iteration_comparators 5 WorkflowStepIterationComparator repeated Iteration comparators resolve to true if all iteration comparators resolved to true. Empty list is resolved to true.

Reference to a step’s input

Field Number Type Label Description
step_id 1 uint32 Which step’s input to reference
field_path 2 string Dot-formatted input field selector. Empty string == whole input Example: “image.url” to get nested field This only says what value we select from input for evaluation, but the final used values might be modified via values_selector. Notice, that a Step may use either Node processor or Child Workflow processor. When Child Workflow processor is selected the empty field_path means to get all inputs as a map, but usually we are interested only in a specific input. Thus, the first word in the expression will mean the key of the input map.
iteration_selector 3 WorkflowIterationSelector How to select from multiple iterations
values_selector 4 WorkflowParamValuesSelector optional How to select from multiple values within selected iterations

Iteration comparator simply checks the Step’s iteration, but doesn’t check the output values of the Step

Field Number Type Label Description
step_id 1 uint32
iteration_selector 2 WorkflowIterationSelector optional Provide what iteration is required for this dependency. This is the condition that simply validates that the Step’s Iteration that we want has already been executed. It doesn’t validate current_iteration of the Step we refer to, but simply checks that the Step has been executed before with the iteration we need. The difference between current_iteration_condition is that selecting specific_iteration = 0 will always resolve to true here (because we consider that any Step was executed 0 times), while setting specific_iteration = 0 in current_iteration_condition will result to true only if the Step has not been executed at all (because if it was executed, its current iteration is no longer 0).
current_iteration_condition 3 WorkflowIterationSelector optional This is the condition for current iteration of the Step we refer to. - if latest / first is selected - it means current_iteration of the Step we refer to can be any but 0. Basically it means the Step should have been executed at least once. - specific_iteration means that the current_iteration of the Step we refer to should equal to the provided number. Notice, all Steps at the beginning have iteration 0. - relative_iteration means that the current_iteration of the Step we refer to should be relative to the iteration of the Step we want to process. Relative numbers can be negative. - if next_iteration is selected for current_iteration_condition - it means that the Step we refer to should have the iteration number +1 to what the consuming Step has. For example, if the consuming step was executed 0 times, the Step we refer to should have been executed at least once.

Reference to a step’s output

Field Number Type Label Description
step_id 1 uint32 Which step’s output to reference
field_path 2 string Dot-formatted output field selector. Empty string == whole output Example: “image.url” to get nested field This only says what value we select from output for evaluation, but the final used values might be modified via values_selector. For proper path, check value specification of the used Node Input or Child Workflow Input in the selected Step.
iteration_selector 3 WorkflowIterationSelector How to select from multiple iterations
values_selector 4 WorkflowParamValuesSelector optional How to select from multiple values within selected iterations
Field Number Type Label Description
value_spec 1 WorkflowValueSpec
cast_mode 2 voplica.types.workflow.common.WorkflowValueCastMode This tells if the incoming data should be strickly the same type as Input or not. For example, when using cast_mode equal to CONVERT_ANY_TO_STRUCT or CONVERT_ANY_TO_JSON_STRING then it means that input can be anything because we will convert the incoming data to Struct or JSON string. However, by default cast_mode is REQUIRE_SAME_VALUE_SPEC - meaning the data type of input data must match with the data type specification set in value_spec.
Field Number Type Label Description
value_spec 1 WorkflowValueSpec
Field Number Type Label Description
data_type 1 voplica.types.base.ParamDataType
proto_type_url 2 string optional When data_type == ANY_MESSAGE or ANY_ENUM this url is required as it describes what exact Message or Enum is used.
map_message_representation 3 WorkflowMapSchema optional When data_type == ANY_MESSAGE then this Map schema may represent separate fields of the Message Notice, this is provided only in types_spec and only for root types. Nested types with data_type == ANY_MESSAGE will have proto_type_url, but not map_message_representation. Meaning, to get fields of nested types we should search for the type in types_spec via the provided proto_type_url. Notice this technique allows us to represent recursive dependencies on itself (when one of the Message’s fields is of the type of this Message itself).
Field Number Type Label Description
keys 1 string repeated List of keys in the same oneof group

A WorkflowMapSchema describes constraints / shape for a map value (map<string, WorkflowParamValue>).

Field Number Type Label Description
entries 1 map<string, WorkflowValueSpec> Explicit key definitions
unspecified_entry_value_spec 2 WorkflowValueSpec optional If specified, it means that any key can be provided in the map. Each key that is not covered by entries will have this schema
required_keys 3 string repeated List of required key names
oneof_key_groups 4 WorkflowMapOneOfFields repeated Each oneof group contains a list of keys where only one of them is required other keys cannot be provided in the same map
Field Number Type Label Description
value_spec 1 WorkflowValueSpec

WorkflowValueSpec extended to allow nested MapSchema or nested proto types

Field Number Type Label Description
literal_type 1 WorkflowLiteralSpec oneof type
list_type 2 WorkflowListSchema oneof type
map_type 3 WorkflowMapSchema oneof type
Field Number Type Label Description
id 1 string
name 2 string
owner_id 3 string
visibility 4 voplica.types.base.VisibilityType
created_at 5 uint64
status 6 voplica.types.base.PublishStatus Workflow that has at least one published Workflow Variant - is automatically published. If none variants are published - the workflow itself is unpublished
latest_workflow_variant_created_at 7 uint64
default_workflow_variant 8 WorkflowVariantShortPreview optional
min_required_subscription 9 voplica.types.subscription.StudioSubscriptionType Minimum subscription level the user should have to use any of the workflow variants in the group This is used as denormalization data. For each individual workflow variant the user should check requirements separately.
unique_likes_count 21 uint64 Unique likes count. For example, if the same user likes multiple models of this model
used_count_sum 22 uint64 Sum of usage count of each model in the gen model group
views_count 23 uint64 Engagement metrics (read-only, updated by the platform). Renamed from checks_count/views_count – see the checks->views/views->engagement terminology rename.
engagement_count 24 uint64
nsfw 25 bool Whether this workflow is NSFW. NSFW workflows are hidden from anonymous users’ trending/safe listings.
Field Number Type Label Description
child_workflow_output_key 1 string oneof type
custom_output 2 WorkflowConditionalOutput oneof type This custom output is evaluated inside the Child Workflow
Field Number Type Label Description
output 1 WorkflowResolvableParamValue
condition 2 WorkflowStepCondition optional
Field Number Type Label Description
description 1 string
last_draft_variant_id 2 string optional Last draft variant is the UNPUBLISHED variant that was mutated last (created or updated)
default_workflow_variant_manual_selected 4 bool
Field Number Type Label Description
credits_pricing_hint_milli 1 uint64 Budget hint for cost-control. This is for information purpose only and doesn’t reflect the actual workflow run cost. This is not the final price, but an average hint on what it might usually cost. The final pricing is calculated after workflow is executed. The hint may be automatically updated overtime after enough statistics accumulated. milli-credits (1/1000 credit). 1 credit = 1 cent.
initial_credits_reservation_milli 2 uint64 This is the sum of all initial_credits_reservation_milli for all Steps used in the Workflow Variant. That’s the minimum amount of credits the user should have available to execute the Workflow. milli-credits (1/1000 credit). 1 credit = 1 cent.
Field Number Type Label Description
max_iterations 1 uint64 optional total across workflow when any Step will try to iterate past this value - the whole workflow execution will be terminated.
workflow_termination_step_condition 2 WorkflowStepCondition optional If this condition is evaluated to true at any given point in time - the whole workflow execution will be terminated.

A single node within a workflow

Field Number Type Label Description
step_id 1 uint32 Unique ID of the step in the Workflow.
triggers 2 WorkflowStepTrigger repeated Step iteration checks triggers one by one and the first trigger variant that satisfies all requirements will be used to trigger Step iteration. If there were multiple triggers that satisfy requirements then after the first variant is used we re-check conditions again because the Step iterator is increased and it could mean that other triggers do not satisfy requirements anymore. If they still satisfy then the Step is triggered again with new input and the Step iterator is incremented again. Notice: If no step triggers are defined - it means this step can never be triggered (so, it basically like an unconnected placeholder for future use). Also, it’s possible to define WorkflowStepTriggerVariant that has no input, no conditions, and no dependencies. It will basically mean that this step always satisfies requirements - meaning it will be triggered again and again infinitely until workflow is stopped.
step_exec_config 3 voplica.types.workflow.common.WorkflowStepExecConfig optional static/default exec config. If not provided - the default from Node will be used.
position 4 voplica.types.base.Point2D Where the node is located in the workflow visualizer
content_provenance_generation_params 5 WorkflowResolvableParamValue optional When creating Content these params tell from where to populate necessary fields, like used LoRas, characters, base models, prompt, seed and so on. If provided this param value should be resolvable to voplica.types.content.GenerationParams.
node 10 WorkflowStepNodeProcessor oneof step_processor
child_workflow 11 WorkflowStepChildWorkflowProcessor oneof step_processor
Field Number Type Label Description
child_workflow_variant_id 1 string When Child Workflow Processor is used, we will supply all “inputs” from the trigger as inputs to the child workflow when triggering it.
output_variants 2 WorkflowChildWorkflowOutputVariant repeated When the workflow is stopped we may potentially want to get some results from child workflow. As such we provide output variants. The first output variant that satisfies conditions is selected as the Step output. All output variants must have the same schema. Meaning, we can’t here select two outputs that have different data structure. If none of output variants satisfy conditions - it means the output is empty. As such, Steps depending on specific output from this Step that is executing Child Workflow - might not be executed as their input requirements won’t be satisfied.
Field Number Type Label Description
node_variant_id 1 string
node_input_id 2 string optional Node can only accept a single input. This specifies the “key” of input to get (even so usually there will always be only one key in the “inputs” map when Node Processor is selected). If specified - the key must present in all trigger inputs. However, if this is not specified - it means: - If Node doesn’t have any inputs define - we provide no inputs to the processing Node. - Otherwise, we take a single input from the Trigger inputs map. If there are multiple - that’s an exceptional case.
Field Number Type Label Description
inputs 1 map<string, WorkflowResolvableParamValue> This defines the way how we get data (it could be constant literals or references to other Steps / Trigger Nodes). Notice, if WorkflowStepOutputParamReference is used, then its iteration_selector must satisfy conditions. If at least one iteration_selector is unsatisfied then the whole hierarchy of input is unsatisfied, meaning this whole input do not satisfy conditions and must not be used. If input data is not provided - it means the step can be triggered without any input data. Notice, the step may depend on itself. I.e. cyclic dependency when the step is triggered by its own output.
condition 2 WorkflowStepCondition optional In addition, we can provide custom condition that must resolve to true for the input to be used. In other words, both input must be resolvable and condition must be true for this input variant to be satisfied. Notice, condition doesn’t necessarily compares inputs to something. condition might have its own references and compare totally different values that are not connected to inputs directly.
fire_limit 3 uint32 By default any Trigger can be fired unlimited amount of times provided inputs and condition are resolvable. However, if we want to limit the trigger to fire up to a specific amount of times then we can provide here any value grater than 0. 0 means - unlimited; 1 means - can be fired once; 2 means - can be fired twice, and so on.
Field Number Type Label Description
variant_id 1 string
parent_workflow_id 2 string
variant_name 3 string
owner_id 4 string
visibility 5 voplica.types.base.VisibilityType Node visibility type is inherited from parent node
created_at 6 uint64
steps 7 WorkflowStep repeated
inputs_spec 8 map<string, WorkflowInputSpec> Each workflow may have multiple inputs (or none). Different steps may depend on same or different inputs. Even so we may specify multiple inputs - all of them are always optional. Meaning that the Workflow Execution can be triggered with any number of inputs (or none at all). However, it doesn’t guarantee that the workflow will actually execute any steps or produce any input because steps may require specific inputs and if those are not provided - step are not executed. In such case - the output will be nothing.
outputs 9 map<string, WorkflowConditionalOutput> Each workflow may have 0 or more outputs at the end of Workflow execution. Each output that satisfies conditions will be returned. All outputs are optional.
run_policy 10 WorkflowRunPolicy optional
pricing 11 WorkflowPricing
status 12 voplica.types.base.PublishStatus
default_preview 13 voplica.types.file.AssetFileVariantGroups optional Note: file_variant_groups are returned only if requested explicitly
min_required_subscription 14 voplica.types.subscription.StudioSubscriptionType Minimum subscription level the user should have to use this workflow variant. This should be equal of higher of all min_required_subscription used in Steps (Nodes or Child Workflows)
default_content_publish_stage 15 voplica.types.workflow.common.WorkflowContentPublishStage Default content publish stage is not directly specified during Workflow Execution
inputs_block_position 16 voplica.types.base.Point2D optional Optional inputs block position
outputs_block_position 17 voplica.types.base.Point2D optional Optional outputs block position
default_content_provenance_generation_params 18 WorkflowResolvableParamValue optional Default content provenance generation params for all steps in this variant. If a step does not define its own content_provenance_generation_params, this variant-level default is used when creating content from that step. If provided this param value should be resolvable to voplica.types.content.GenerationParams.
likes_count 21 uint64 Deprecated / unused: workflow likes are group-only (see Workflow.unique_likes_count above) – WorkflowVariant is no longer a valid like target, so this field is never populated. Kept (not removed) to avoid a wire-breaking field-number reuse.
used_count 22 uint64
views_count 23 uint64 Engagement metrics (read-only, updated by the platform). Renamed from checks_count/views_count – see the checks->views/views->engagement terminology rename.
engagement_count 24 uint64
Field Number Type Label Description
default_preview_manual_selected 1 bool Manually set default preview asset. If false - it means that the default preview is using latest asset selection strategy.
Field Number Type Label Description
variant_id 1 string
default_preview 2 voplica.types.file.AssetFileVariantGroups optional Note: file_variant_groups are returned only if requested explicitly
Field Number Type Label Description
transaction_id 1 string Transaction id on which all workflow execution charges should be applied to. The same transaction_id is used across all Steps, including any Steps of Child Workflows. Meaning, Child Workflows add charges to the same transaction of the root workflow execution.
gpu_tier 2 voplica.types.workflow.common.WorkflowGpuTier optional If GPU tier is provided then it should be used instead of auto-detected GPU size / tier. Meaning, even is the job gets executed on a higher-end GPU, but the job was expected to be executed on lower end GPU - we should charge using the lower price so that users always benefit from better pricing.
Field Number Type Label Description
id 1 string
workflow_variant_id 2 string Workflow Variant ID (what Workflow Definition this Execution actually executes)
workflow_id 3 string Parent workflow ID (the Workflow that the variant belongs to) This is a denormalization field. workflow_id can be fetched from workflow_variant_id, but added here as we need to be able to search all executions related to a specific Workflow
status 4 voplica.types.base.JobStatus
created_at 5 uint64
last_updated_at 6 uint64
owner_id 7 string Owner of this workflow execution
visibility 8 voplica.types.base.VisibilityType Visibility of this workflow execution
workflow_input 9 map<string, voplica.types.base.NestedParamValue>
parent_workflow_execution_id 10 string optional For child workflow executions: the parent workflow execution that triggered this child. Null/empty for root workflow executions.
parent_step_execution_id 11 string optional For child workflow executions: which step execution in the parent workflow triggered this child. Null/empty for root workflow executions.
termination_reason 12 voplica.types.workflow.common.WorkflowTerminationReason optional Why the workflow execution terminated. Provided when workflow execution is finished.
idempotency_key 13 string Defaults to id, unless another value were specified during execution creation.
completed_at 14 uint64 optional When the workflow execution finished (completed, failed, or cancelled).
total_iterations 15 uint32 Total number of step iterations executed across all steps.
credits_reserved_milli 16 uint64 Total credits reserved at the start of the workflow execution. For child workflows this is 0 because reservations are accounted in the root workflow. milli-credits (1/1000 credit). 1 credit = 1 cent.
credits_charged_milli 17 uint64
content_publish_policy 18 voplica.types.workflow.common.WorkflowContentPublishPolicy Selected content publish policy
credits_reversed_milli 19 uint64
credits_net_charged_milli 20 uint64
Field Number Type Label Description
severity 1 voplica.types.base.MessageSeverity
message 2 string
step_id 3 string optional
iteration_number 4 uint32 optional
timestamp 5 uint64
code 6 string

Complete output from a workflow execution

Field Number Type Label Description
workflow_execution_id 1 string Unique workflow execution ID
step_outputs 2 WorkflowStepOutputs repeated Outputs from each step in the workflow
workflow_output 3 map<string, voplica.types.base.NestedParamValue> Final resolved workflow output (if specified in the workflow definition and workflow execution is completed)
aggregated_steps_usage_metrics 4 WorkflowStepUsageMetrics aggregated metrics for all iterations of all steps
messages 5 WorkflowExecutionMessage repeated Any errors or warnings

Where and for whom a step ran: its execution ids, attempt and iteration, the user it ran for and its billing transaction.

Field Number Type Label Description
root_workflow_execution_id 1 string
current_workflow_execution_id 2 string
step_execution_id 3 string Unique execution id. Same across different Step attempts, but different across different iterations. This can be used to check previous charges and credits reservations if the job failed for any reason and restarted.
step_id 5 uint32
attempt 6 int32 attempt number / retries
iteration_number 7 uint64
user_id 8 string optional On behalf of whom to run the Step. This reflects to files ownership, billing, etc.
billing_info 9 WorkflowBillingInfoContext optional Different nodes may use different mechanisms for billing. If this info is not provided - it means the billing won’t be used. If this info is provided then the Node needs a way of properly applying charging strategies while it executes certain tasks.
Field Number Type Label Description
execution_context 1 WorkflowStepExecContext Context of the current Step execution
created_at 2 uint64
status 3 voplica.types.base.JobStatus Step status: pending, running, completed, failed
message 4 string optional
trigger_input 5 map<string, voplica.types.base.NestedParamValue>
completed_at 6 uint64 optional When the step execution finished (completed, failed, or cancelled).
produced_content_ids 7 string repeated Ids of any content produced by this step execution. Denormalized from the iteration output for convenient access when listing step executions.
charge_disposition 11 voplica.types.workflow.common.WorkflowChargeDisposition
charge_disposition_reason 12 string optional The one token behind the disposition: the deciding failure class (“InternalDefect”, “Timeout:HEARTBEAT”) or why it stayed charged (“USER_CLASS:CudaOutOfMemory”, “NO_STEP_KEYED_CHARGE”, “REVERSAL_NOT_APPLIED:FAILED_PRECONDITION”). Absent while undecided.
credits_reversed_milli 13 uint64 REVERSED: what payments reversed for this step; WOULD_REVERSE: what it would have (never money returned); 0 otherwise. milli-credits (1/1000 credit). 1 credit = 1 cent.
Field Number Type Label Description
step_execution_id 1 string reference to WorkflowStepExecution
step_id 2 uint32
completion_time 3 uint64
iteration_number 4 uint32 Which iteration this output was produced in
step_output 5 voplica.types.base.NestedParamValue
usage 6 WorkflowStepUsageMetrics metrics
produced_content_ids 7 string repeated Ids of any content produced by this Step during selected iteration
Field Number Type Label Description
step_id 1 uint32
iteration_outputs 2 WorkflowStepIterationOutput repeated
step_iterations_usage 3 WorkflowStepUsageMetrics aggregated metrics for all iterations of this step
Field Number Type Label Description
execution_time_ms 1 uint64
gpu_time_ms 2 uint64 measured, or estimated
input_bytes 3 uint64
output_bytes 4 uint64
storage_read_bytes 5 uint64
storage_write_bytes 6 uint64
credits_cost_milli 7 uint64 milli-credits (1/1000 credit). 1 credit = 1 cent.
Name Number Description
WORKFLOW_PRIVACY_MODE_UNSPECIFIED 0
PRIVACY_DEFAULT 1 Any verified hardware: isolated trusted rows or public GPU marketplace hosts. No surcharge, wherever the run lands.
PRIVACY_SENSITIVE 2