package Google::Dataflow::V1beta3::Templates;

use strict;
use warnings;

our $VERSION = '0.11';

use Protobuf::Message;
use Protobuf::DescriptorPool;
use Protobuf::Internal qw(:all);
use MIME::Base64;

BEGIN {
    eval { require Google::Api::Annotations };
    eval { require Google::Api::Client };
    eval { require Google::Api::FieldBehavior };
    eval { require Google::Dataflow::V1beta3::Environment };
    eval { require Google::Dataflow::V1beta3::Jobs };
    eval { require Google::Rpc::Status };
    my $descriptor_b64 = <<'EOF';
[encoded data, 54665 characters]
EOF
    Protobuf::DescriptorPool->generated_pool->add_serialized_file(MIME::Base64::decode_base64($descriptor_b64));
}

# Message definitions

# === Message: Google::Dataflow::V1beta3::Templates::LaunchFlexTemplateResponse ===
    # Fields for LaunchFlexTemplateResponse
    # Field: job Type: 11 (.google.dataflow.v1beta3.Job)

=pod

=head1 NAME

Google::Dataflow::V1beta3::Templates::LaunchFlexTemplateResponse - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Templates;

    my $msg = Google::Dataflow::V1beta3::Templates::LaunchFlexTemplateResponse->new(
        job => $value,
    );

=head1 FIELDS

=over 4

=item * B<job>

Type: Message (.google.dataflow.v1beta3.Job)

=back

=cut

# === Message: Google::Dataflow::V1beta3::Templates::ContainerSpec ===
    # Fields for ContainerSpec
    # Field: image Type: 9 ()
    # Field: metadata Type: 11 (.google.dataflow.v1beta3.TemplateMetadata)
    # Field: sdk_info Type: 11 (.google.dataflow.v1beta3.SDKInfo)
    # Field: default_environment Type: 11 (.google.dataflow.v1beta3.FlexTemplateRuntimeEnvironment)
    # Field: image_repository_username_secret_id Type: 9 ()
    # Field: image_repository_password_secret_id Type: 9 ()
    # Field: image_repository_cert_path Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Templates::ContainerSpec - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Templates;

    my $msg = Google::Dataflow::V1beta3::Templates::ContainerSpec->new(
        image => $value,
    );

=head1 FIELDS

=over 4

=item * B<image>

Type: String

=item * B<metadata>

Type: Message (.google.dataflow.v1beta3.TemplateMetadata)

=item * B<sdk_info>

Type: Message (.google.dataflow.v1beta3.SDKInfo)

=item * B<default_environment>

Type: Message (.google.dataflow.v1beta3.FlexTemplateRuntimeEnvironment)

=item * B<image_repository_username_secret_id>

Type: String

=item * B<image_repository_password_secret_id>

Type: String

=item * B<image_repository_cert_path>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Templates::LaunchFlexTemplateParameter ===
    # Fields for LaunchFlexTemplateParameter
    # Field: job_name Type: 9 ()
    # Field: container_spec Type: 11 (.google.dataflow.v1beta3.ContainerSpec)
    # Field: container_spec_gcs_path Type: 9 ()
    # Field: parameters Type: 11 (.google.dataflow.v1beta3.LaunchFlexTemplateParameter.ParametersEntry)
    # Field: launch_options Type: 11 (.google.dataflow.v1beta3.LaunchFlexTemplateParameter.LaunchOptionsEntry)
    # Field: environment Type: 11 (.google.dataflow.v1beta3.FlexTemplateRuntimeEnvironment)
    # Field: update Type: 8 ()
    # Field: transform_name_mappings Type: 11 (.google.dataflow.v1beta3.LaunchFlexTemplateParameter.TransformNameMappingsEntry)

=pod

=head1 NAME

Google::Dataflow::V1beta3::Templates::LaunchFlexTemplateParameter - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Templates;

    my $msg = Google::Dataflow::V1beta3::Templates::LaunchFlexTemplateParameter->new(
        job_name => $value,
    );

=head1 FIELDS

=over 4

=item * B<job_name>

Type: String

=item * B<container_spec>

Type: Message (.google.dataflow.v1beta3.ContainerSpec)

=item * B<container_spec_gcs_path>

Type: String

=item * B<parameters>

Type: Message (.google.dataflow.v1beta3.LaunchFlexTemplateParameter.ParametersEntry)

=item * B<launch_options>

Type: Message (.google.dataflow.v1beta3.LaunchFlexTemplateParameter.LaunchOptionsEntry)

=item * B<environment>

Type: Message (.google.dataflow.v1beta3.FlexTemplateRuntimeEnvironment)

=item * B<update>

Type: Bool

=item * B<transform_name_mappings>

Type: Message (.google.dataflow.v1beta3.LaunchFlexTemplateParameter.TransformNameMappingsEntry)

=back

=cut

# === Message: Google::Dataflow::V1beta3::Templates::FlexTemplateRuntimeEnvironment ===
    # Fields for FlexTemplateRuntimeEnvironment
    # Field: num_workers Type: 5 ()
    # Field: max_workers Type: 5 ()
    # Field: zone Type: 9 ()
    # Field: service_account_email Type: 9 ()
    # Field: temp_location Type: 9 ()
    # Field: machine_type Type: 9 ()
    # Field: additional_experiments Type: 9 ()
    # Field: network Type: 9 ()
    # Field: subnetwork Type: 9 ()
    # Field: additional_user_labels Type: 11 (.google.dataflow.v1beta3.FlexTemplateRuntimeEnvironment.AdditionalUserLabelsEntry)
    # Field: kms_key_name Type: 9 ()
    # Field: ip_configuration Type: 14 (.google.dataflow.v1beta3.WorkerIPAddressConfiguration)
    # Field: worker_region Type: 9 ()
    # Field: worker_zone Type: 9 ()
    # Field: enable_streaming_engine Type: 8 ()
    # Field: flexrs_goal Type: 14 (.google.dataflow.v1beta3.FlexResourceSchedulingGoal)
    # Field: staging_location Type: 9 ()
    # Field: sdk_container_image Type: 9 ()
    # Field: disk_size_gb Type: 5 ()
    # Field: autoscaling_algorithm Type: 14 (.google.dataflow.v1beta3.AutoscalingAlgorithm)
    # Field: dump_heap_on_oom Type: 8 ()
    # Field: save_heap_dumps_to_gcs_path Type: 9 ()
    # Field: launcher_machine_type Type: 9 ()
    # Field: enable_launcher_vm_serial_port_logging Type: 8 ()
    # Field: streaming_mode Type: 14 (.google.dataflow.v1beta3.StreamingMode)
    # Field: additional_pipeline_options Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Templates::FlexTemplateRuntimeEnvironment - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Templates;

    my $msg = Google::Dataflow::V1beta3::Templates::FlexTemplateRuntimeEnvironment->new(
        num_workers => $value,
    );

=head1 FIELDS

=over 4

=item * B<num_workers>

Type: Int32

=item * B<max_workers>

Type: Int32

=item * B<zone>

Type: String

=item * B<service_account_email>

Type: String

=item * B<temp_location>

Type: String

=item * B<machine_type>

Type: String

=item * B<additional_experiments>

Type: String

=item * B<network>

Type: String

=item * B<subnetwork>

Type: String

=item * B<additional_user_labels>

Type: Message (.google.dataflow.v1beta3.FlexTemplateRuntimeEnvironment.AdditionalUserLabelsEntry)

=item * B<kms_key_name>

Type: String

=item * B<ip_configuration>

Type: Enum (.google.dataflow.v1beta3.WorkerIPAddressConfiguration)

=item * B<worker_region>

Type: String

=item * B<worker_zone>

Type: String

=item * B<enable_streaming_engine>

Type: Bool

=item * B<flexrs_goal>

Type: Enum (.google.dataflow.v1beta3.FlexResourceSchedulingGoal)

=item * B<staging_location>

Type: String

=item * B<sdk_container_image>

Type: String

=item * B<disk_size_gb>

Type: Int32

=item * B<autoscaling_algorithm>

Type: Enum (.google.dataflow.v1beta3.AutoscalingAlgorithm)

=item * B<dump_heap_on_oom>

Type: Bool

=item * B<save_heap_dumps_to_gcs_path>

Type: String

=item * B<launcher_machine_type>

Type: String

=item * B<enable_launcher_vm_serial_port_logging>

Type: Bool

=item * B<streaming_mode>

Type: Enum (.google.dataflow.v1beta3.StreamingMode)

=item * B<additional_pipeline_options>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Templates::LaunchFlexTemplateRequest ===
    # Fields for LaunchFlexTemplateRequest
    # Field: project_id Type: 9 ()
    # Field: launch_parameter Type: 11 (.google.dataflow.v1beta3.LaunchFlexTemplateParameter)
    # Field: location Type: 9 ()
    # Field: validate_only Type: 8 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Templates::LaunchFlexTemplateRequest - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Templates;

    my $msg = Google::Dataflow::V1beta3::Templates::LaunchFlexTemplateRequest->new(
        project_id => $value,
    );

=head1 FIELDS

=over 4

=item * B<project_id>

Type: String

=item * B<launch_parameter>

Type: Message (.google.dataflow.v1beta3.LaunchFlexTemplateParameter)

=item * B<location>

Type: String

=item * B<validate_only>

Type: Bool

=back

=cut

# === Message: Google::Dataflow::V1beta3::Templates::RuntimeEnvironment ===
    # Fields for RuntimeEnvironment
    # Field: num_workers Type: 5 ()
    # Field: max_workers Type: 5 ()
    # Field: zone Type: 9 ()
    # Field: service_account_email Type: 9 ()
    # Field: temp_location Type: 9 ()
    # Field: bypass_temp_dir_validation Type: 8 ()
    # Field: machine_type Type: 9 ()
    # Field: additional_experiments Type: 9 ()
    # Field: network Type: 9 ()
    # Field: subnetwork Type: 9 ()
    # Field: additional_user_labels Type: 11 (.google.dataflow.v1beta3.RuntimeEnvironment.AdditionalUserLabelsEntry)
    # Field: kms_key_name Type: 9 ()
    # Field: ip_configuration Type: 14 (.google.dataflow.v1beta3.WorkerIPAddressConfiguration)
    # Field: worker_region Type: 9 ()
    # Field: worker_zone Type: 9 ()
    # Field: enable_streaming_engine Type: 8 ()
    # Field: disk_size_gb Type: 5 ()
    # Field: streaming_mode Type: 14 (.google.dataflow.v1beta3.StreamingMode)
    # Field: additional_pipeline_options Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Templates::RuntimeEnvironment - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Templates;

    my $msg = Google::Dataflow::V1beta3::Templates::RuntimeEnvironment->new(
        num_workers => $value,
    );

=head1 FIELDS

=over 4

=item * B<num_workers>

Type: Int32

=item * B<max_workers>

Type: Int32

=item * B<zone>

Type: String

=item * B<service_account_email>

Type: String

=item * B<temp_location>

Type: String

=item * B<bypass_temp_dir_validation>

Type: Bool

=item * B<machine_type>

Type: String

=item * B<additional_experiments>

Type: String

=item * B<network>

Type: String

=item * B<subnetwork>

Type: String

=item * B<additional_user_labels>

Type: Message (.google.dataflow.v1beta3.RuntimeEnvironment.AdditionalUserLabelsEntry)

=item * B<kms_key_name>

Type: String

=item * B<ip_configuration>

Type: Enum (.google.dataflow.v1beta3.WorkerIPAddressConfiguration)

=item * B<worker_region>

Type: String

=item * B<worker_zone>

Type: String

=item * B<enable_streaming_engine>

Type: Bool

=item * B<disk_size_gb>

Type: Int32

=item * B<streaming_mode>

Type: Enum (.google.dataflow.v1beta3.StreamingMode)

=item * B<additional_pipeline_options>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Templates::ParameterMetadataEnumOption ===
    # Fields for ParameterMetadataEnumOption
    # Field: value Type: 9 ()
    # Field: label Type: 9 ()
    # Field: description Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Templates::ParameterMetadataEnumOption - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Templates;

    my $msg = Google::Dataflow::V1beta3::Templates::ParameterMetadataEnumOption->new(
        value => $value,
    );

=head1 FIELDS

=over 4

=item * B<value>

Type: String

=item * B<label>

Type: String

=item * B<description>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Templates::ParameterMetadata ===
    # Fields for ParameterMetadata
    # Field: name Type: 9 ()
    # Field: label Type: 9 ()
    # Field: help_text Type: 9 ()
    # Field: is_optional Type: 8 ()
    # Field: regexes Type: 9 ()
    # Field: param_type Type: 14 (.google.dataflow.v1beta3.ParameterType)
    # Field: custom_metadata Type: 11 (.google.dataflow.v1beta3.ParameterMetadata.CustomMetadataEntry)
    # Field: group_name Type: 9 ()
    # Field: parent_name Type: 9 ()
    # Field: parent_trigger_values Type: 9 ()
    # Field: enum_options Type: 11 (.google.dataflow.v1beta3.ParameterMetadataEnumOption)
    # Field: default_value Type: 9 ()
    # Field: hidden_ui Type: 8 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Templates::ParameterMetadata - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Templates;

    my $msg = Google::Dataflow::V1beta3::Templates::ParameterMetadata->new(
        name => $value,
    );

=head1 FIELDS

=over 4

=item * B<name>

Type: String

=item * B<label>

Type: String

=item * B<help_text>

Type: String

=item * B<is_optional>

Type: Bool

=item * B<regexes>

Type: String

=item * B<param_type>

Type: Enum (.google.dataflow.v1beta3.ParameterType)

=item * B<custom_metadata>

Type: Message (.google.dataflow.v1beta3.ParameterMetadata.CustomMetadataEntry)

=item * B<group_name>

Type: String

=item * B<parent_name>

Type: String

=item * B<parent_trigger_values>

Type: String

=item * B<enum_options>

Type: Message (.google.dataflow.v1beta3.ParameterMetadataEnumOption)

=item * B<default_value>

Type: String

=item * B<hidden_ui>

Type: Bool

=back

=cut

# === Message: Google::Dataflow::V1beta3::Templates::TemplateMetadata ===
    # Fields for TemplateMetadata
    # Field: name Type: 9 ()
    # Field: description Type: 9 ()
    # Field: parameters Type: 11 (.google.dataflow.v1beta3.ParameterMetadata)
    # Field: streaming Type: 8 ()
    # Field: supports_at_least_once Type: 8 ()
    # Field: supports_exactly_once Type: 8 ()
    # Field: default_streaming_mode Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Templates::TemplateMetadata - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Templates;

    my $msg = Google::Dataflow::V1beta3::Templates::TemplateMetadata->new(
        name => $value,
    );

=head1 FIELDS

=over 4

=item * B<name>

Type: String

=item * B<description>

Type: String

=item * B<parameters>

Type: Message (.google.dataflow.v1beta3.ParameterMetadata)

=item * B<streaming>

Type: Bool

=item * B<supports_at_least_once>

Type: Bool

=item * B<supports_exactly_once>

Type: Bool

=item * B<default_streaming_mode>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Templates::SDKInfo ===
    # Fields for SDKInfo
    # Field: language Type: 14 (.google.dataflow.v1beta3.SDKInfo.Language)
    # Field: version Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Templates::SDKInfo - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Templates;

    my $msg = Google::Dataflow::V1beta3::Templates::SDKInfo->new(
        language => $value,
    );

=head1 FIELDS

=over 4

=item * B<language>

Type: Enum (.google.dataflow.v1beta3.SDKInfo.Language)

=item * B<version>

Type: String

=back

=cut

# Enum: SDKInfo::Language
our $SDKInfo_UNKNOWN = 0;
our $SDKInfo_JAVA = 1;
our $SDKInfo_PYTHON = 2;
our $SDKInfo_GO = 3;
our $SDKInfo_YAML = 4;

=pod

=head2 Enum: SDKInfo::Language

Values:

=over 4

=item * C<UNKNOWN> => 0

=item * C<JAVA> => 1

=item * C<PYTHON> => 2

=item * C<GO> => 3

=item * C<YAML> => 4

=back

=cut

# === Message: Google::Dataflow::V1beta3::Templates::RuntimeMetadata ===
    # Fields for RuntimeMetadata
    # Field: sdk_info Type: 11 (.google.dataflow.v1beta3.SDKInfo)
    # Field: parameters Type: 11 (.google.dataflow.v1beta3.ParameterMetadata)

=pod

=head1 NAME

Google::Dataflow::V1beta3::Templates::RuntimeMetadata - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Templates;

    my $msg = Google::Dataflow::V1beta3::Templates::RuntimeMetadata->new(
        sdk_info => $value,
    );

=head1 FIELDS

=over 4

=item * B<sdk_info>

Type: Message (.google.dataflow.v1beta3.SDKInfo)

=item * B<parameters>

Type: Message (.google.dataflow.v1beta3.ParameterMetadata)

=back

=cut

# === Message: Google::Dataflow::V1beta3::Templates::CreateJobFromTemplateRequest ===
    # Fields for CreateJobFromTemplateRequest
    # Field: project_id Type: 9 ()
    # Field: job_name Type: 9 ()
    # Field: gcs_path Type: 9 ()
    # Field: parameters Type: 11 (.google.dataflow.v1beta3.CreateJobFromTemplateRequest.ParametersEntry)
    # Field: environment Type: 11 (.google.dataflow.v1beta3.RuntimeEnvironment)
    # Field: location Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Templates::CreateJobFromTemplateRequest - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Templates;

    my $msg = Google::Dataflow::V1beta3::Templates::CreateJobFromTemplateRequest->new(
        project_id => $value,
    );

=head1 FIELDS

=over 4

=item * B<project_id>

Type: String

=item * B<job_name>

Type: String

=item * B<gcs_path>

Type: String

=item * B<parameters>

Type: Message (.google.dataflow.v1beta3.CreateJobFromTemplateRequest.ParametersEntry)

=item * B<environment>

Type: Message (.google.dataflow.v1beta3.RuntimeEnvironment)

=item * B<location>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Templates::GetTemplateRequest ===
    # Fields for GetTemplateRequest
    # Field: project_id Type: 9 ()
    # Field: gcs_path Type: 9 ()
    # Field: view Type: 14 (.google.dataflow.v1beta3.GetTemplateRequest.TemplateView)
    # Field: location Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Templates::GetTemplateRequest - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Templates;

    my $msg = Google::Dataflow::V1beta3::Templates::GetTemplateRequest->new(
        project_id => $value,
    );

=head1 FIELDS

=over 4

=item * B<project_id>

Type: String

=item * B<gcs_path>

Type: String

=item * B<view>

Type: Enum (.google.dataflow.v1beta3.GetTemplateRequest.TemplateView)

=item * B<location>

Type: String

=back

=cut

# Enum: GetTemplateRequest::TemplateView
our $GetTemplateRequest_METADATA_ONLY = 0;

=pod

=head2 Enum: GetTemplateRequest::TemplateView

Values:

=over 4

=item * C<METADATA_ONLY> => 0

=back

=cut

# === Message: Google::Dataflow::V1beta3::Templates::GetTemplateResponse ===
    # Fields for GetTemplateResponse
    # Field: status Type: 11 (.google.rpc.Status)
    # Field: metadata Type: 11 (.google.dataflow.v1beta3.TemplateMetadata)
    # Field: template_type Type: 14 (.google.dataflow.v1beta3.GetTemplateResponse.TemplateType)
    # Field: runtime_metadata Type: 11 (.google.dataflow.v1beta3.RuntimeMetadata)

=pod

=head1 NAME

Google::Dataflow::V1beta3::Templates::GetTemplateResponse - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Templates;

    my $msg = Google::Dataflow::V1beta3::Templates::GetTemplateResponse->new(
        status => $value,
    );

=head1 FIELDS

=over 4

=item * B<status>

Type: Message (.google.rpc.Status)

=item * B<metadata>

Type: Message (.google.dataflow.v1beta3.TemplateMetadata)

=item * B<template_type>

Type: Enum (.google.dataflow.v1beta3.GetTemplateResponse.TemplateType)

=item * B<runtime_metadata>

Type: Message (.google.dataflow.v1beta3.RuntimeMetadata)

=back

=cut

# Enum: GetTemplateResponse::TemplateType
our $GetTemplateResponse_UNKNOWN = 0;
our $GetTemplateResponse_LEGACY = 1;
our $GetTemplateResponse_FLEX = 2;

=pod

=head2 Enum: GetTemplateResponse::TemplateType

Values:

=over 4

=item * C<UNKNOWN> => 0

=item * C<LEGACY> => 1

=item * C<FLEX> => 2

=back

=cut

# === Message: Google::Dataflow::V1beta3::Templates::LaunchTemplateParameters ===
    # Fields for LaunchTemplateParameters
    # Field: job_name Type: 9 ()
    # Field: parameters Type: 11 (.google.dataflow.v1beta3.LaunchTemplateParameters.ParametersEntry)
    # Field: environment Type: 11 (.google.dataflow.v1beta3.RuntimeEnvironment)
    # Field: update Type: 8 ()
    # Field: transform_name_mapping Type: 11 (.google.dataflow.v1beta3.LaunchTemplateParameters.TransformNameMappingEntry)

=pod

=head1 NAME

Google::Dataflow::V1beta3::Templates::LaunchTemplateParameters - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Templates;

    my $msg = Google::Dataflow::V1beta3::Templates::LaunchTemplateParameters->new(
        job_name => $value,
    );

=head1 FIELDS

=over 4

=item * B<job_name>

Type: String

=item * B<parameters>

Type: Message (.google.dataflow.v1beta3.LaunchTemplateParameters.ParametersEntry)

=item * B<environment>

Type: Message (.google.dataflow.v1beta3.RuntimeEnvironment)

=item * B<update>

Type: Bool

=item * B<transform_name_mapping>

Type: Message (.google.dataflow.v1beta3.LaunchTemplateParameters.TransformNameMappingEntry)

=back

=cut

# === Message: Google::Dataflow::V1beta3::Templates::LaunchTemplateRequest ===
    # Fields for LaunchTemplateRequest
    # Field: project_id Type: 9 ()
    # Field: validate_only Type: 8 ()
    # Field: gcs_path Type: 9 ()
    # Field: dynamic_template Type: 11 (.google.dataflow.v1beta3.DynamicTemplateLaunchParams)
    # Field: launch_parameters Type: 11 (.google.dataflow.v1beta3.LaunchTemplateParameters)
    # Field: location Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Templates::LaunchTemplateRequest - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Templates;

    my $msg = Google::Dataflow::V1beta3::Templates::LaunchTemplateRequest->new(
        project_id => $value,
    );

=head1 FIELDS

=over 4

=item * B<project_id>

Type: String

=item * B<validate_only>

Type: Bool

=item * B<gcs_path>

Type: String

=item * B<dynamic_template>

Type: Message (.google.dataflow.v1beta3.DynamicTemplateLaunchParams)

=item * B<launch_parameters>

Type: Message (.google.dataflow.v1beta3.LaunchTemplateParameters)

=item * B<location>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Templates::LaunchTemplateResponse ===
    # Fields for LaunchTemplateResponse
    # Field: job Type: 11 (.google.dataflow.v1beta3.Job)

=pod

=head1 NAME

Google::Dataflow::V1beta3::Templates::LaunchTemplateResponse - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Templates;

    my $msg = Google::Dataflow::V1beta3::Templates::LaunchTemplateResponse->new(
        job => $value,
    );

=head1 FIELDS

=over 4

=item * B<job>

Type: Message (.google.dataflow.v1beta3.Job)

=back

=cut

# === Message: Google::Dataflow::V1beta3::Templates::InvalidTemplateParameters ===
    # Fields for InvalidTemplateParameters
    # Field: parameter_violations Type: 11 (.google.dataflow.v1beta3.InvalidTemplateParameters.ParameterViolation)

=pod

=head1 NAME

Google::Dataflow::V1beta3::Templates::InvalidTemplateParameters - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Templates;

    my $msg = Google::Dataflow::V1beta3::Templates::InvalidTemplateParameters->new(
        parameter_violations => $value,
    );

=head1 FIELDS

=over 4

=item * B<parameter_violations>

Type: Message (.google.dataflow.v1beta3.InvalidTemplateParameters.ParameterViolation)

=back

=cut

# === Message: Google::Dataflow::V1beta3::Templates::DynamicTemplateLaunchParams ===
    # Fields for DynamicTemplateLaunchParams
    # Field: gcs_path Type: 9 ()
    # Field: staging_location Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Templates::DynamicTemplateLaunchParams - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Templates;

    my $msg = Google::Dataflow::V1beta3::Templates::DynamicTemplateLaunchParams->new(
        gcs_path => $value,
    );

=head1 FIELDS

=over 4

=item * B<gcs_path>

Type: String

=item * B<staging_location>

Type: String

=back

=cut

# === Service Client: Google::Dataflow::V1beta3::Templates::TemplatesServiceClient ===
package Google::Dataflow::V1beta3::Templates::TemplatesServiceClient;

=pod

=head1 NAME

Google::Dataflow::V1beta3::Templates::TemplatesServiceClient - Client stub representing the remote TemplatesService service

=head1 DESCRIPTION

This class acts as a local client stub for the remote gRPC service.
It delegates call dispatching to an underlying L<Google::gRPC::Client>
instance, ensuring type-safe request parsing and response mapping.

=head1 CONFIGURATION AND ENVIRONMENT

=head2 target

The endpoint target address. Defaults to C<dataflow.googleapis.com:443>.

=head2 credentials

The authentication credentials provider. Defaults to application default credentials via L<Google::Auth>.

=cut

use Moo;
use Google::Auth;
use Google::gRPC::Client;

has credentials => ( is => 'ro', default => sub { Google::Auth->default() } );
has target      => ( is => 'ro', default => 'dataflow.googleapis.com:443' );

has _grpc_client => (
    is => 'ro',
    lazy => 1,
    builder => sub {
        my $self = shift;
        return Google::gRPC::Client->new(
            target     => $self->target,
            auth_token => $self->credentials->get_token(),
        );
    }
);

sub create_job_from_template {
    my ($self, $args) = @_;
    my $req = ref($args) eq 'HASH'
        ? Google::Dataflow::V1beta3::Templates::CreateJobFromTemplateRequest->new($args)
        : $args;
    return $self->_grpc_client->call({
        service        => 'google.dataflow.v1beta3.TemplatesService',
        method         => 'CreateJobFromTemplate',
        request        => $req,
        response_class => 'Google::Dataflow::V1beta3::Jobs::Job',
    });
}

sub launch_template {
    my ($self, $args) = @_;
    my $req = ref($args) eq 'HASH'
        ? Google::Dataflow::V1beta3::Templates::LaunchTemplateRequest->new($args)
        : $args;
    return $self->_grpc_client->call({
        service        => 'google.dataflow.v1beta3.TemplatesService',
        method         => 'LaunchTemplate',
        request        => $req,
        response_class => 'Google::Dataflow::V1beta3::Templates::LaunchTemplateResponse',
    });
}

sub get_template {
    my ($self, $args) = @_;
    my $req = ref($args) eq 'HASH'
        ? Google::Dataflow::V1beta3::Templates::GetTemplateRequest->new($args)
        : $args;
    return $self->_grpc_client->call({
        service        => 'google.dataflow.v1beta3.TemplatesService',
        method         => 'GetTemplate',
        request        => $req,
        response_class => 'Google::Dataflow::V1beta3::Templates::GetTemplateResponse',
    });
}

# === Service Client: Google::Dataflow::V1beta3::Templates::FlexTemplatesServiceClient ===
package Google::Dataflow::V1beta3::Templates::FlexTemplatesServiceClient;

=pod

=head1 NAME

Google::Dataflow::V1beta3::Templates::FlexTemplatesServiceClient - Client stub representing the remote FlexTemplatesService service

=head1 DESCRIPTION

This class acts as a local client stub for the remote gRPC service.
It delegates call dispatching to an underlying L<Google::gRPC::Client>
instance, ensuring type-safe request parsing and response mapping.

=head1 CONFIGURATION AND ENVIRONMENT

=head2 target

The endpoint target address. Defaults to C<dataflow.googleapis.com:443>.

=head2 credentials

The authentication credentials provider. Defaults to application default credentials via L<Google::Auth>.

=cut

use Moo;
use Google::Auth;
use Google::gRPC::Client;

has credentials => ( is => 'ro', default => sub { Google::Auth->default() } );
has target      => ( is => 'ro', default => 'dataflow.googleapis.com:443' );

has _grpc_client => (
    is => 'ro',
    lazy => 1,
    builder => sub {
        my $self = shift;
        return Google::gRPC::Client->new(
            target     => $self->target,
            auth_token => $self->credentials->get_token(),
        );
    }
);

sub launch_flex_template {
    my ($self, $args) = @_;
    my $req = ref($args) eq 'HASH'
        ? Google::Dataflow::V1beta3::Templates::LaunchFlexTemplateRequest->new($args)
        : $args;
    return $self->_grpc_client->call({
        service        => 'google.dataflow.v1beta3.FlexTemplatesService',
        method         => 'LaunchFlexTemplate',
        request        => $req,
        response_class => 'Google::Dataflow::V1beta3::Templates::LaunchFlexTemplateResponse',
    });
}

1;

__END__

=head1 NAME

Google::Dataflow::V1beta3::Templates - Protocol Buffers schema definition

=head1 DESCRIPTION

Auto-generated Protocol Buffers schema definition class.

=head1 LICENSE AND COPYRIGHT

Copyright (C) 2026 Google LLC

This program is released under the Apache 2.0 license.

=cut
