package Google::Iam::V1::Policy;

use strict;
use warnings;

our $VERSION = '0.04';

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

BEGIN {
    eval { require Google::Type::Expr };
    my $descriptor_b64 = <<'EOF';
[encoded data, 22192 characters]
DQoFBAYCAwMSBJgDFBViBnByb3RvMw==
EOF
    Protobuf::DescriptorPool->generated_pool->add_serialized_file(MIME::Base64::decode_base64($descriptor_b64));
}

# Message definitions

# === Message: Google::Iam::V1::Policy::Policy ===
    # Fields for Policy
    # Field: version Type: 5 ()
    # Field: bindings Type: 11 (.google.iam.v1.Binding)
    # Field: audit_configs Type: 11 (.google.iam.v1.AuditConfig)
    # Field: etag Type: 12 ()

=pod

=head1 NAME

Google::Iam::V1::Policy::Policy - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Iam::V1::Policy;

    my $msg = Google::Iam::V1::Policy::Policy->new(
        version => $value,
    );

=head1 FIELDS

=over 4

=item * B<version>

Type: Int32

=item * B<bindings>

Type: Message (.google.iam.v1.Binding)

=item * B<audit_configs>

Type: Message (.google.iam.v1.AuditConfig)

=item * B<etag>

Type: Bytes

=back

=cut

# === Message: Google::Iam::V1::Policy::Binding ===
    # Fields for Binding
    # Field: role Type: 9 ()
    # Field: members Type: 9 ()
    # Field: condition Type: 11 (.google.type.Expr)

=pod

=head1 NAME

Google::Iam::V1::Policy::Binding - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Iam::V1::Policy;

    my $msg = Google::Iam::V1::Policy::Binding->new(
        role => $value,
    );

=head1 FIELDS

=over 4

=item * B<role>

Type: String

=item * B<members>

Type: String

=item * B<condition>

Type: Message (.google.type.Expr)

=back

=cut

# === Message: Google::Iam::V1::Policy::AuditConfig ===
    # Fields for AuditConfig
    # Field: service Type: 9 ()
    # Field: audit_log_configs Type: 11 (.google.iam.v1.AuditLogConfig)

=pod

=head1 NAME

Google::Iam::V1::Policy::AuditConfig - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Iam::V1::Policy;

    my $msg = Google::Iam::V1::Policy::AuditConfig->new(
        service => $value,
    );

=head1 FIELDS

=over 4

=item * B<service>

Type: String

=item * B<audit_log_configs>

Type: Message (.google.iam.v1.AuditLogConfig)

=back

=cut

# === Message: Google::Iam::V1::Policy::AuditLogConfig ===
    # Fields for AuditLogConfig
    # Field: log_type Type: 14 (.google.iam.v1.AuditLogConfig.LogType)
    # Field: exempted_members Type: 9 ()

=pod

=head1 NAME

Google::Iam::V1::Policy::AuditLogConfig - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Iam::V1::Policy;

    my $msg = Google::Iam::V1::Policy::AuditLogConfig->new(
        log_type => $value,
    );

=head1 FIELDS

=over 4

=item * B<log_type>

Type: Enum (.google.iam.v1.AuditLogConfig.LogType)

=item * B<exempted_members>

Type: String

=back

=cut

# Enum: AuditLogConfig::LogType
our $AuditLogConfig_LOG_TYPE_UNSPECIFIED = 0;
our $AuditLogConfig_ADMIN_READ = 1;
our $AuditLogConfig_DATA_WRITE = 2;
our $AuditLogConfig_DATA_READ = 3;

=pod

=head2 Enum: AuditLogConfig::LogType

Values:

=over 4

=item * C<LOG_TYPE_UNSPECIFIED> => 0

=item * C<ADMIN_READ> => 1

=item * C<DATA_WRITE> => 2

=item * C<DATA_READ> => 3

=back

=cut

# === Message: Google::Iam::V1::Policy::PolicyDelta ===
    # Fields for PolicyDelta
    # Field: binding_deltas Type: 11 (.google.iam.v1.BindingDelta)
    # Field: audit_config_deltas Type: 11 (.google.iam.v1.AuditConfigDelta)

=pod

=head1 NAME

Google::Iam::V1::Policy::PolicyDelta - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Iam::V1::Policy;

    my $msg = Google::Iam::V1::Policy::PolicyDelta->new(
        binding_deltas => $value,
    );

=head1 FIELDS

=over 4

=item * B<binding_deltas>

Type: Message (.google.iam.v1.BindingDelta)

=item * B<audit_config_deltas>

Type: Message (.google.iam.v1.AuditConfigDelta)

=back

=cut

# === Message: Google::Iam::V1::Policy::BindingDelta ===
    # Fields for BindingDelta
    # Field: action Type: 14 (.google.iam.v1.BindingDelta.Action)
    # Field: role Type: 9 ()
    # Field: member Type: 9 ()
    # Field: condition Type: 11 (.google.type.Expr)

=pod

=head1 NAME

Google::Iam::V1::Policy::BindingDelta - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Iam::V1::Policy;

    my $msg = Google::Iam::V1::Policy::BindingDelta->new(
        action => $value,
    );

=head1 FIELDS

=over 4

=item * B<action>

Type: Enum (.google.iam.v1.BindingDelta.Action)

=item * B<role>

Type: String

=item * B<member>

Type: String

=item * B<condition>

Type: Message (.google.type.Expr)

=back

=cut

# Enum: BindingDelta::Action
our $BindingDelta_ACTION_UNSPECIFIED = 0;
our $BindingDelta_ADD = 1;
our $BindingDelta_REMOVE = 2;

=pod

=head2 Enum: BindingDelta::Action

Values:

=over 4

=item * C<ACTION_UNSPECIFIED> => 0

=item * C<ADD> => 1

=item * C<REMOVE> => 2

=back

=cut

# === Message: Google::Iam::V1::Policy::AuditConfigDelta ===
    # Fields for AuditConfigDelta
    # Field: action Type: 14 (.google.iam.v1.AuditConfigDelta.Action)
    # Field: service Type: 9 ()
    # Field: exempted_member Type: 9 ()
    # Field: log_type Type: 9 ()

=pod

=head1 NAME

Google::Iam::V1::Policy::AuditConfigDelta - Compiled Protocol Buffers message class

=head1 SYNOPSIS

    use Google::Iam::V1::Policy;

    my $msg = Google::Iam::V1::Policy::AuditConfigDelta->new(
        action => $value,
    );

=head1 FIELDS

=over 4

=item * B<action>

Type: Enum (.google.iam.v1.AuditConfigDelta.Action)

=item * B<service>

Type: String

=item * B<exempted_member>

Type: String

=item * B<log_type>

Type: String

=back

=cut

# Enum: AuditConfigDelta::Action
our $AuditConfigDelta_ACTION_UNSPECIFIED = 0;
our $AuditConfigDelta_ADD = 1;
our $AuditConfigDelta_REMOVE = 2;

=pod

=head2 Enum: AuditConfigDelta::Action

Values:

=over 4

=item * C<ACTION_UNSPECIFIED> => 0

=item * C<ADD> => 1

=item * C<REMOVE> => 2

=back

=cut

1;

__END__

=head1 NAME

Google::Iam::V1::Policy - 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
