Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 6 additions & 1 deletion openapi/openapiv2.json
Original file line number Diff line number Diff line change
Expand Up @@ -19063,7 +19063,8 @@
"enum": [
"START_CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_UNSPECIFIED",
"START_CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_WORKFLOW_ALREADY_EXISTS",
"START_CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_NAMESPACE_NOT_FOUND"
"START_CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_NAMESPACE_NOT_FOUND",
"START_CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_INVALID_VERSIONING_OVERRIDE"
],
"default": "START_CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_UNSPECIFIED"
},
Expand Down Expand Up @@ -19181,6 +19182,10 @@
"$ref": "#/definitions/v1TimeSkippingConfig",
"description": "The propagated time-skipping configuration for the child workflow."
},
"versioningOverride": {
"$ref": "#/definitions/v1VersioningOverride",
"description": "Versioning override requested for the child workflow. If present, this explicit override\ntakes precedence over versioning behavior inherited from the parent workflow."
},
"initialSkippedDuration": {
"type": "string",
"description": "Propagate the duration skipped to the child workflow."
Expand Down
7 changes: 7 additions & 0 deletions openapi/openapiv3.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -16561,6 +16561,7 @@ components:
- START_CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_UNSPECIFIED
- START_CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_WORKFLOW_ALREADY_EXISTS
- START_CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_NAMESPACE_NOT_FOUND
- START_CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_INVALID_VERSIONING_OVERRIDE
type: string
format: enum
control:
Expand Down Expand Up @@ -16652,6 +16653,12 @@ components:
allOf:
- $ref: '#/components/schemas/TimeSkippingConfig'
description: The propagated time-skipping configuration for the child workflow.
versioningOverride:
allOf:
- $ref: '#/components/schemas/VersioningOverride'
description: |-
Versioning override requested for the child workflow. If present, this explicit override
takes precedence over versioning behavior inherited from the parent workflow.
initialSkippedDuration:
pattern: ^-?(?:0|[1-9][0-9]{0,11})(?:\.[0-9]{1,9})?s$
type: string
Expand Down
4 changes: 4 additions & 0 deletions temporal/api/command/v1/message.proto
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import "temporal/api/enums/v1/command_type.proto";
import "temporal/api/common/v1/message.proto";
import "temporal/api/failure/v1/message.proto";
import "temporal/api/taskqueue/v1/message.proto";
import "temporal/api/workflow/v1/message.proto";
import "temporal/api/sdk/v1/user_metadata.proto";
import "temporal/api/sdk/v1/event_group_marker.proto";

Expand Down Expand Up @@ -221,6 +222,9 @@ message StartChildWorkflowExecutionCommandAttributes {
// Priority metadata. If this message is not present, or any fields are not
// present, they inherit the values from the workflow.
temporal.api.common.v1.Priority priority = 18;
// Versioning override for the child workflow. If present, this explicit override takes
// precedence over versioning behavior inherited from the parent workflow.
temporal.api.workflow.v1.VersioningOverride versioning_override = 19;
}

message ProtocolMessageCommandAttributes {
Expand Down
2 changes: 1 addition & 1 deletion temporal/api/enums/v1/failed_cause.proto
Original file line number Diff line number Diff line change
Expand Up @@ -89,6 +89,7 @@ enum StartChildWorkflowExecutionFailedCause {
START_CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_UNSPECIFIED = 0;
START_CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_WORKFLOW_ALREADY_EXISTS = 1;
START_CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_NAMESPACE_NOT_FOUND = 2;
START_CHILD_WORKFLOW_EXECUTION_FAILED_CAUSE_INVALID_VERSIONING_OVERRIDE = 3;

@Shivs11 Shivs11 Jun 10, 2026

Copy link
Copy Markdown
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

the main reason I chose to have an additional cause here is because there could be a world where the version the user is trying to pin their child workflow on does not exist, and so I thought it's best to have a new cause out here since we should not be starting the child workflow in that case

note: if a user tries to start a non child workflow with a versioning override where the version does not exist, we right now do not start that workflow. The intention was to keep the behaviour consistent.

}

enum CancelExternalWorkflowExecutionFailedCause {
Expand Down Expand Up @@ -136,4 +137,3 @@ enum ResourceExhaustedScope {
// Exhausted resource is a namespace-level resource.
RESOURCE_EXHAUSTED_SCOPE_SYSTEM = 2;
}

4 changes: 4 additions & 0 deletions temporal/api/history/v1/message.proto
Original file line number Diff line number Diff line change
Expand Up @@ -779,6 +779,10 @@ message StartChildWorkflowExecutionInitiatedEventAttributes {
// The propagated time-skipping configuration for the child workflow.
temporal.api.workflow.v1.TimeSkippingConfig time_skipping_config = 21;

// Versioning override requested for the child workflow. If present, this explicit override
// takes precedence over versioning behavior inherited from the parent workflow.
temporal.api.workflow.v1.VersioningOverride versioning_override = 22;

// Propagate the duration skipped to the child workflow.
google.protobuf.Duration initial_skipped_duration = 30;
}
Expand Down
Loading