package Google::Dataflow::V1beta3::Jobs;

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::Snapshots };
    eval { require Google::Protobuf::Duration };
    eval { require Google::Protobuf::FieldMask };
    eval { require Google::Protobuf::Struct };
    eval { require Google::Protobuf::Timestamp };
    my $descriptor_b64 = <<'EOF';
[encoded data, 70226 characters]
EgSxCAcYCg0KBQQcAgADEgSxCBscYgZwcm90bzM=
EOF
    Protobuf::DescriptorPool->generated_pool->add_serialized_file(MIME::Base64::decode_base64($descriptor_b64));
}

# Message definitions

# === Message: Google::Dataflow::V1beta3::Jobs::Job ===
    # Fields for Job
    # Field: id Type: 9 ()
    # Field: project_id Type: 9 ()
    # Field: name Type: 9 ()
    # Field: type Type: 14 (.google.dataflow.v1beta3.JobType)
    # Field: environment Type: 11 (.google.dataflow.v1beta3.Environment)
    # Field: steps Type: 11 (.google.dataflow.v1beta3.Step)
    # Field: steps_location Type: 9 ()
    # Field: current_state Type: 14 (.google.dataflow.v1beta3.JobState)
    # Field: current_state_time Type: 11 (.google.protobuf.Timestamp)
    # Field: requested_state Type: 14 (.google.dataflow.v1beta3.JobState)
    # Field: execution_info Type: 11 (.google.dataflow.v1beta3.JobExecutionInfo)
    # Field: create_time Type: 11 (.google.protobuf.Timestamp)
    # Field: replace_job_id Type: 9 ()
    # Field: transform_name_mapping Type: 11 (.google.dataflow.v1beta3.Job.TransformNameMappingEntry)
    # Field: client_request_id Type: 9 ()
    # Field: replaced_by_job_id Type: 9 ()
    # Field: temp_files Type: 9 ()
    # Field: labels Type: 11 (.google.dataflow.v1beta3.Job.LabelsEntry)
    # Field: location Type: 9 ()
    # Field: pipeline_description Type: 11 (.google.dataflow.v1beta3.PipelineDescription)
    # Field: stage_states Type: 11 (.google.dataflow.v1beta3.ExecutionStageState)
    # Field: job_metadata Type: 11 (.google.dataflow.v1beta3.JobMetadata)
    # Field: start_time Type: 11 (.google.protobuf.Timestamp)
    # Field: created_from_snapshot_id Type: 9 ()
    # Field: satisfies_pzs Type: 8 ()
    # Field: runtime_updatable_params Type: 11 (.google.dataflow.v1beta3.RuntimeUpdatableParams)
    # Field: satisfies_pzi Type: 8 ()
    # Field: service_resources Type: 11 (.google.dataflow.v1beta3.ServiceResources)
    # Field: pausable Type: 8 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::Job - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

    my $msg = Google::Dataflow::V1beta3::Jobs::Job->new(
        id => $value,
    );

=head1 FIELDS

=over 4

=item * B<id>

Type: String

=item * B<project_id>

Type: String

=item * B<name>

Type: String

=item * B<type>

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

=item * B<environment>

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

=item * B<steps>

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

=item * B<steps_location>

Type: String

=item * B<current_state>

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

=item * B<current_state_time>

Type: Message (.google.protobuf.Timestamp)

=item * B<requested_state>

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

=item * B<execution_info>

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

=item * B<create_time>

Type: Message (.google.protobuf.Timestamp)

=item * B<replace_job_id>

Type: String

=item * B<transform_name_mapping>

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

=item * B<client_request_id>

Type: String

=item * B<replaced_by_job_id>

Type: String

=item * B<temp_files>

Type: String

=item * B<labels>

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

=item * B<location>

Type: String

=item * B<pipeline_description>

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

=item * B<stage_states>

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

=item * B<job_metadata>

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

=item * B<start_time>

Type: Message (.google.protobuf.Timestamp)

=item * B<created_from_snapshot_id>

Type: String

=item * B<satisfies_pzs>

Type: Bool

=item * B<runtime_updatable_params>

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

=item * B<satisfies_pzi>

Type: Bool

=item * B<service_resources>

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

=item * B<pausable>

Type: Bool

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::ServiceResources ===
    # Fields for ServiceResources
    # Field: zones Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::ServiceResources - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

    my $msg = Google::Dataflow::V1beta3::Jobs::ServiceResources->new(
        zones => $value,
    );

=head1 FIELDS

=over 4

=item * B<zones>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::RuntimeUpdatableParams ===
    # Fields for RuntimeUpdatableParams
    # Field: max_num_workers Type: 5 ()
    # Field: min_num_workers Type: 5 ()
    # Field: worker_utilization_hint Type: 1 ()
    # Field: acceptable_backlog_duration Type: 11 (.google.protobuf.Duration)
    # Field: autoscaling_tier Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::RuntimeUpdatableParams - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

    my $msg = Google::Dataflow::V1beta3::Jobs::RuntimeUpdatableParams->new(
        max_num_workers => $value,
    );

=head1 FIELDS

=over 4

=item * B<max_num_workers>

Type: Int32

=item * B<min_num_workers>

Type: Int32

=item * B<worker_utilization_hint>

Type: Double

=item * B<acceptable_backlog_duration>

Type: Message (.google.protobuf.Duration)

=item * B<autoscaling_tier>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::DatastoreIODetails ===
    # Fields for DatastoreIODetails
    # Field: namespace Type: 9 ()
    # Field: project_id Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::DatastoreIODetails - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

    my $msg = Google::Dataflow::V1beta3::Jobs::DatastoreIODetails->new(
        namespace => $value,
    );

=head1 FIELDS

=over 4

=item * B<namespace>

Type: String

=item * B<project_id>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::PubSubIODetails ===
    # Fields for PubSubIODetails
    # Field: topic Type: 9 ()
    # Field: subscription Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::PubSubIODetails - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

    my $msg = Google::Dataflow::V1beta3::Jobs::PubSubIODetails->new(
        topic => $value,
    );

=head1 FIELDS

=over 4

=item * B<topic>

Type: String

=item * B<subscription>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::FileIODetails ===
    # Fields for FileIODetails
    # Field: file_pattern Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::FileIODetails - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

    my $msg = Google::Dataflow::V1beta3::Jobs::FileIODetails->new(
        file_pattern => $value,
    );

=head1 FIELDS

=over 4

=item * B<file_pattern>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::BigTableIODetails ===
    # Fields for BigTableIODetails
    # Field: project_id Type: 9 ()
    # Field: instance_id Type: 9 ()
    # Field: table_id Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::BigTableIODetails - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

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

=head1 FIELDS

=over 4

=item * B<project_id>

Type: String

=item * B<instance_id>

Type: String

=item * B<table_id>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::BigQueryIODetails ===
    # Fields for BigQueryIODetails
    # Field: table Type: 9 ()
    # Field: dataset Type: 9 ()
    # Field: project_id Type: 9 ()
    # Field: query Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::BigQueryIODetails - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

    my $msg = Google::Dataflow::V1beta3::Jobs::BigQueryIODetails->new(
        table => $value,
    );

=head1 FIELDS

=over 4

=item * B<table>

Type: String

=item * B<dataset>

Type: String

=item * B<project_id>

Type: String

=item * B<query>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::SpannerIODetails ===
    # Fields for SpannerIODetails
    # Field: project_id Type: 9 ()
    # Field: instance_id Type: 9 ()
    # Field: database_id Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::SpannerIODetails - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

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

=head1 FIELDS

=over 4

=item * B<project_id>

Type: String

=item * B<instance_id>

Type: String

=item * B<database_id>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::SdkVersion ===
    # Fields for SdkVersion
    # Field: version Type: 9 ()
    # Field: version_display_name Type: 9 ()
    # Field: sdk_support_status Type: 14 (.google.dataflow.v1beta3.SdkVersion.SdkSupportStatus)
    # Field: bugs Type: 11 (.google.dataflow.v1beta3.SdkBug)

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::SdkVersion - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

    my $msg = Google::Dataflow::V1beta3::Jobs::SdkVersion->new(
        version => $value,
    );

=head1 FIELDS

=over 4

=item * B<version>

Type: String

=item * B<version_display_name>

Type: String

=item * B<sdk_support_status>

Type: Enum (.google.dataflow.v1beta3.SdkVersion.SdkSupportStatus)

=item * B<bugs>

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

=back

=cut

# Enum: SdkVersion::SdkSupportStatus
our $SdkVersion_UNKNOWN = 0;
our $SdkVersion_SUPPORTED = 1;
our $SdkVersion_STALE = 2;
our $SdkVersion_DEPRECATED = 3;
our $SdkVersion_UNSUPPORTED = 4;

=pod

=head2 Enum: SdkVersion::SdkSupportStatus

Values:

=over 4

=item * C<UNKNOWN> => 0

=item * C<SUPPORTED> => 1

=item * C<STALE> => 2

=item * C<DEPRECATED> => 3

=item * C<UNSUPPORTED> => 4

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::SdkBug ===
    # Fields for SdkBug
    # Field: type Type: 14 (.google.dataflow.v1beta3.SdkBug.Type)
    # Field: severity Type: 14 (.google.dataflow.v1beta3.SdkBug.Severity)
    # Field: uri Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::SdkBug - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

    my $msg = Google::Dataflow::V1beta3::Jobs::SdkBug->new(
        type => $value,
    );

=head1 FIELDS

=over 4

=item * B<type>

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

=item * B<severity>

Type: Enum (.google.dataflow.v1beta3.SdkBug.Severity)

=item * B<uri>

Type: String

=back

=cut

# Enum: SdkBug::Type
our $SdkBug_TYPE_UNSPECIFIED = 0;
our $SdkBug_GENERAL = 1;
our $SdkBug_PERFORMANCE = 2;
our $SdkBug_DATALOSS = 3;

=pod

=head2 Enum: SdkBug::Type

Values:

=over 4

=item * C<TYPE_UNSPECIFIED> => 0

=item * C<GENERAL> => 1

=item * C<PERFORMANCE> => 2

=item * C<DATALOSS> => 3

=back

=cut

# Enum: SdkBug::Severity
our $SdkBug_SEVERITY_UNSPECIFIED = 0;
our $SdkBug_NOTICE = 1;
our $SdkBug_WARNING = 2;
our $SdkBug_SEVERE = 3;

=pod

=head2 Enum: SdkBug::Severity

Values:

=over 4

=item * C<SEVERITY_UNSPECIFIED> => 0

=item * C<NOTICE> => 1

=item * C<WARNING> => 2

=item * C<SEVERE> => 3

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::JobMetadata ===
    # Fields for JobMetadata
    # Field: sdk_version Type: 11 (.google.dataflow.v1beta3.SdkVersion)
    # Field: spanner_details Type: 11 (.google.dataflow.v1beta3.SpannerIODetails)
    # Field: bigquery_details Type: 11 (.google.dataflow.v1beta3.BigQueryIODetails)
    # Field: big_table_details Type: 11 (.google.dataflow.v1beta3.BigTableIODetails)
    # Field: pubsub_details Type: 11 (.google.dataflow.v1beta3.PubSubIODetails)
    # Field: file_details Type: 11 (.google.dataflow.v1beta3.FileIODetails)
    # Field: datastore_details Type: 11 (.google.dataflow.v1beta3.DatastoreIODetails)
    # Field: user_display_properties Type: 11 (.google.dataflow.v1beta3.JobMetadata.UserDisplayPropertiesEntry)

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::JobMetadata - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

    my $msg = Google::Dataflow::V1beta3::Jobs::JobMetadata->new(
        sdk_version => $value,
    );

=head1 FIELDS

=over 4

=item * B<sdk_version>

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

=item * B<spanner_details>

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

=item * B<bigquery_details>

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

=item * B<big_table_details>

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

=item * B<pubsub_details>

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

=item * B<file_details>

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

=item * B<datastore_details>

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

=item * B<user_display_properties>

Type: Message (.google.dataflow.v1beta3.JobMetadata.UserDisplayPropertiesEntry)

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::ExecutionStageState ===
    # Fields for ExecutionStageState
    # Field: execution_stage_name Type: 9 ()
    # Field: execution_stage_state Type: 14 (.google.dataflow.v1beta3.JobState)
    # Field: current_state_time Type: 11 (.google.protobuf.Timestamp)

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::ExecutionStageState - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

    my $msg = Google::Dataflow::V1beta3::Jobs::ExecutionStageState->new(
        execution_stage_name => $value,
    );

=head1 FIELDS

=over 4

=item * B<execution_stage_name>

Type: String

=item * B<execution_stage_state>

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

=item * B<current_state_time>

Type: Message (.google.protobuf.Timestamp)

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::PipelineDescription ===
    # Fields for PipelineDescription
    # Field: original_pipeline_transform Type: 11 (.google.dataflow.v1beta3.TransformSummary)
    # Field: execution_pipeline_stage Type: 11 (.google.dataflow.v1beta3.ExecutionStageSummary)
    # Field: display_data Type: 11 (.google.dataflow.v1beta3.DisplayData)
    # Field: step_names_hash Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::PipelineDescription - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

    my $msg = Google::Dataflow::V1beta3::Jobs::PipelineDescription->new(
        original_pipeline_transform => $value,
    );

=head1 FIELDS

=over 4

=item * B<original_pipeline_transform>

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

=item * B<execution_pipeline_stage>

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

=item * B<display_data>

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

=item * B<step_names_hash>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::TransformSummary ===
    # Fields for TransformSummary
    # Field: kind Type: 14 (.google.dataflow.v1beta3.KindType)
    # Field: id Type: 9 ()
    # Field: name Type: 9 ()
    # Field: display_data Type: 11 (.google.dataflow.v1beta3.DisplayData)
    # Field: output_collection_name Type: 9 ()
    # Field: input_collection_name Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::TransformSummary - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

    my $msg = Google::Dataflow::V1beta3::Jobs::TransformSummary->new(
        kind => $value,
    );

=head1 FIELDS

=over 4

=item * B<kind>

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

=item * B<id>

Type: String

=item * B<name>

Type: String

=item * B<display_data>

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

=item * B<output_collection_name>

Type: String

=item * B<input_collection_name>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::ExecutionStageSummary ===
    # Fields for ExecutionStageSummary
    # Field: name Type: 9 ()
    # Field: id Type: 9 ()
    # Field: kind Type: 14 (.google.dataflow.v1beta3.KindType)
    # Field: input_source Type: 11 (.google.dataflow.v1beta3.ExecutionStageSummary.StageSource)
    # Field: output_source Type: 11 (.google.dataflow.v1beta3.ExecutionStageSummary.StageSource)
    # Field: prerequisite_stage Type: 9 ()
    # Field: component_transform Type: 11 (.google.dataflow.v1beta3.ExecutionStageSummary.ComponentTransform)
    # Field: component_source Type: 11 (.google.dataflow.v1beta3.ExecutionStageSummary.ComponentSource)

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::ExecutionStageSummary - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

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

=head1 FIELDS

=over 4

=item * B<name>

Type: String

=item * B<id>

Type: String

=item * B<kind>

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

=item * B<input_source>

Type: Message (.google.dataflow.v1beta3.ExecutionStageSummary.StageSource)

=item * B<output_source>

Type: Message (.google.dataflow.v1beta3.ExecutionStageSummary.StageSource)

=item * B<prerequisite_stage>

Type: String

=item * B<component_transform>

Type: Message (.google.dataflow.v1beta3.ExecutionStageSummary.ComponentTransform)

=item * B<component_source>

Type: Message (.google.dataflow.v1beta3.ExecutionStageSummary.ComponentSource)

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::DisplayData ===
    # Fields for DisplayData
    # Field: key Type: 9 ()
    # Field: namespace Type: 9 ()
    # Field: str_value Type: 9 ()
    # Field: int64_value Type: 3 ()
    # Field: float_value Type: 2 ()
    # Field: java_class_value Type: 9 ()
    # Field: timestamp_value Type: 11 (.google.protobuf.Timestamp)
    # Field: duration_value Type: 11 (.google.protobuf.Duration)
    # Field: bool_value Type: 8 ()
    # Field: short_str_value Type: 9 ()
    # Field: url Type: 9 ()
    # Field: label Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::DisplayData - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

    my $msg = Google::Dataflow::V1beta3::Jobs::DisplayData->new(
        key => $value,
    );

=head1 FIELDS

=over 4

=item * B<key>

Type: String

=item * B<namespace>

Type: String

=item * B<str_value>

Type: String

=item * B<int64_value>

Type: Int64

=item * B<float_value>

Type: Float

=item * B<java_class_value>

Type: String

=item * B<timestamp_value>

Type: Message (.google.protobuf.Timestamp)

=item * B<duration_value>

Type: Message (.google.protobuf.Duration)

=item * B<bool_value>

Type: Bool

=item * B<short_str_value>

Type: String

=item * B<url>

Type: String

=item * B<label>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::Step ===
    # Fields for Step
    # Field: kind Type: 9 ()
    # Field: name Type: 9 ()
    # Field: properties Type: 11 (.google.protobuf.Struct)

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::Step - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

    my $msg = Google::Dataflow::V1beta3::Jobs::Step->new(
        kind => $value,
    );

=head1 FIELDS

=over 4

=item * B<kind>

Type: String

=item * B<name>

Type: String

=item * B<properties>

Type: Message (.google.protobuf.Struct)

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::JobExecutionInfo ===
    # Fields for JobExecutionInfo
    # Field: stages Type: 11 (.google.dataflow.v1beta3.JobExecutionInfo.StagesEntry)

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::JobExecutionInfo - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

    my $msg = Google::Dataflow::V1beta3::Jobs::JobExecutionInfo->new(
        stages => $value,
    );

=head1 FIELDS

=over 4

=item * B<stages>

Type: Message (.google.dataflow.v1beta3.JobExecutionInfo.StagesEntry)

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::JobExecutionStageInfo ===
    # Fields for JobExecutionStageInfo
    # Field: step_name Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::JobExecutionStageInfo - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

    my $msg = Google::Dataflow::V1beta3::Jobs::JobExecutionStageInfo->new(
        step_name => $value,
    );

=head1 FIELDS

=over 4

=item * B<step_name>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::CreateJobRequest ===
    # Fields for CreateJobRequest
    # Field: project_id Type: 9 ()
    # Field: job Type: 11 (.google.dataflow.v1beta3.Job)
    # Field: view Type: 14 (.google.dataflow.v1beta3.JobView)
    # Field: replace_job_id Type: 9 ()
    # Field: location Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::CreateJobRequest - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

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

=head1 FIELDS

=over 4

=item * B<project_id>

Type: String

=item * B<job>

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

=item * B<view>

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

=item * B<replace_job_id>

Type: String

=item * B<location>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::GetJobRequest ===
    # Fields for GetJobRequest
    # Field: project_id Type: 9 ()
    # Field: job_id Type: 9 ()
    # Field: view Type: 14 (.google.dataflow.v1beta3.JobView)
    # Field: location Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::GetJobRequest - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

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

=head1 FIELDS

=over 4

=item * B<project_id>

Type: String

=item * B<job_id>

Type: String

=item * B<view>

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

=item * B<location>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::UpdateJobRequest ===
    # Fields for UpdateJobRequest
    # Field: project_id Type: 9 ()
    # Field: job_id Type: 9 ()
    # Field: job Type: 11 (.google.dataflow.v1beta3.Job)
    # Field: location Type: 9 ()
    # Field: update_mask Type: 11 (.google.protobuf.FieldMask)

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::UpdateJobRequest - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

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

=head1 FIELDS

=over 4

=item * B<project_id>

Type: String

=item * B<job_id>

Type: String

=item * B<job>

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

=item * B<location>

Type: String

=item * B<update_mask>

Type: Message (.google.protobuf.FieldMask)

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::ListJobsRequest ===
    # Fields for ListJobsRequest
    # Field: filter Type: 14 (.google.dataflow.v1beta3.ListJobsRequest.Filter)
    # Field: project_id Type: 9 ()
    # Field: view Type: 14 (.google.dataflow.v1beta3.JobView)
    # Field: page_size Type: 5 ()
    # Field: page_token Type: 9 ()
    # Field: location Type: 9 ()
    # Field: name Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::ListJobsRequest - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

    my $msg = Google::Dataflow::V1beta3::Jobs::ListJobsRequest->new(
        filter => $value,
    );

=head1 FIELDS

=over 4

=item * B<filter>

Type: Enum (.google.dataflow.v1beta3.ListJobsRequest.Filter)

=item * B<project_id>

Type: String

=item * B<view>

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

=item * B<page_size>

Type: Int32

=item * B<page_token>

Type: String

=item * B<location>

Type: String

=item * B<name>

Type: String

=back

=cut

# Enum: ListJobsRequest::Filter
our $ListJobsRequest_UNKNOWN = 0;
our $ListJobsRequest_ALL = 1;
our $ListJobsRequest_TERMINATED = 2;
our $ListJobsRequest_ACTIVE = 3;

=pod

=head2 Enum: ListJobsRequest::Filter

Values:

=over 4

=item * C<UNKNOWN> => 0

=item * C<ALL> => 1

=item * C<TERMINATED> => 2

=item * C<ACTIVE> => 3

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::FailedLocation ===
    # Fields for FailedLocation
    # Field: name Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::FailedLocation - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

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

=head1 FIELDS

=over 4

=item * B<name>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::ListJobsResponse ===
    # Fields for ListJobsResponse
    # Field: jobs Type: 11 (.google.dataflow.v1beta3.Job)
    # Field: next_page_token Type: 9 ()
    # Field: failed_location Type: 11 (.google.dataflow.v1beta3.FailedLocation)

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::ListJobsResponse - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

    my $msg = Google::Dataflow::V1beta3::Jobs::ListJobsResponse->new(
        jobs => $value,
    );

=head1 FIELDS

=over 4

=item * B<jobs>

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

=item * B<next_page_token>

Type: String

=item * B<failed_location>

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

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::SnapshotJobRequest ===
    # Fields for SnapshotJobRequest
    # Field: project_id Type: 9 ()
    # Field: job_id Type: 9 ()
    # Field: ttl Type: 11 (.google.protobuf.Duration)
    # Field: location Type: 9 ()
    # Field: snapshot_sources Type: 8 ()
    # Field: description Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::SnapshotJobRequest - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

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

=head1 FIELDS

=over 4

=item * B<project_id>

Type: String

=item * B<job_id>

Type: String

=item * B<ttl>

Type: Message (.google.protobuf.Duration)

=item * B<location>

Type: String

=item * B<snapshot_sources>

Type: Bool

=item * B<description>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::CheckActiveJobsRequest ===
    # Fields for CheckActiveJobsRequest
    # Field: project_id Type: 9 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::CheckActiveJobsRequest - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

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

=head1 FIELDS

=over 4

=item * B<project_id>

Type: String

=back

=cut

# === Message: Google::Dataflow::V1beta3::Jobs::CheckActiveJobsResponse ===
    # Fields for CheckActiveJobsResponse
    # Field: active_jobs_exist Type: 8 ()

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::CheckActiveJobsResponse - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Dataflow::V1beta3::Jobs;

    my $msg = Google::Dataflow::V1beta3::Jobs::CheckActiveJobsResponse->new(
        active_jobs_exist => $value,
    );

=head1 FIELDS

=over 4

=item * B<active_jobs_exist>

Type: Bool

=back

=cut

# === Service Client: Google::Dataflow::V1beta3::Jobs::JobsV1Beta3Client ===
package Google::Dataflow::V1beta3::Jobs::JobsV1Beta3Client;

=pod

=head1 NAME

Google::Dataflow::V1beta3::Jobs::JobsV1Beta3Client - Client stub representing the remote JobsV1Beta3 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 {
    my ($self, $args) = @_;
    my $req = ref($args) eq 'HASH'
        ? Google::Dataflow::V1beta3::Jobs::CreateJobRequest->new($args)
        : $args;
    return $self->_grpc_client->call({
        service        => 'google.dataflow.v1beta3.JobsV1Beta3',
        method         => 'CreateJob',
        request        => $req,
        response_class => 'Google::Dataflow::V1beta3::Jobs::Job',
    });
}

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

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

sub list_jobs {
    my ($self, $args) = @_;
    my $req = ref($args) eq 'HASH'
        ? Google::Dataflow::V1beta3::Jobs::ListJobsRequest->new($args)
        : $args;
    return $self->_grpc_client->call({
        service        => 'google.dataflow.v1beta3.JobsV1Beta3',
        method         => 'ListJobs',
        request        => $req,
        response_class => 'Google::Dataflow::V1beta3::Jobs::ListJobsResponse',
    });
}

sub aggregated_list_jobs {
    my ($self, $args) = @_;
    my $req = ref($args) eq 'HASH'
        ? Google::Dataflow::V1beta3::Jobs::ListJobsRequest->new($args)
        : $args;
    return $self->_grpc_client->call({
        service        => 'google.dataflow.v1beta3.JobsV1Beta3',
        method         => 'AggregatedListJobs',
        request        => $req,
        response_class => 'Google::Dataflow::V1beta3::Jobs::ListJobsResponse',
    });
}

sub check_active_jobs {
    my ($self, $args) = @_;
    my $req = ref($args) eq 'HASH'
        ? Google::Dataflow::V1beta3::Jobs::CheckActiveJobsRequest->new($args)
        : $args;
    return $self->_grpc_client->call({
        service        => 'google.dataflow.v1beta3.JobsV1Beta3',
        method         => 'CheckActiveJobs',
        request        => $req,
        response_class => 'Google::Dataflow::V1beta3::Jobs::CheckActiveJobsResponse',
    });
}

sub snapshot_job {
    my ($self, $args) = @_;
    my $req = ref($args) eq 'HASH'
        ? Google::Dataflow::V1beta3::Jobs::SnapshotJobRequest->new($args)
        : $args;
    return $self->_grpc_client->call({
        service        => 'google.dataflow.v1beta3.JobsV1Beta3',
        method         => 'SnapshotJob',
        request        => $req,
        response_class => 'Google::Dataflow::V1beta3::Snapshots::Snapshot',
    });
}

1;

__END__

=head1 NAME

Google::Dataflow::V1beta3::Jobs - 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
