# coding=utf-8
# *** WARNING: this file was generated by the Pulumi Terraform Bridge (tfgen) Tool. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import copy
import warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities

__all__ = [
    'ApiConfigGatewayConfigArgs',
    'ApiConfigGatewayConfigBackendConfigArgs',
    'ApiConfigGrpcServiceArgs',
    'ApiConfigGrpcServiceFileDescriptorSetArgs',
    'ApiConfigGrpcServiceSourceArgs',
    'ApiConfigIamBindingConditionArgs',
    'ApiConfigIamMemberConditionArgs',
    'ApiConfigManagedServiceConfigArgs',
    'ApiConfigOpenapiDocumentArgs',
    'ApiConfigOpenapiDocumentDocumentArgs',
    'ApiIamBindingConditionArgs',
    'ApiIamMemberConditionArgs',
    'GatewayIamBindingConditionArgs',
    'GatewayIamMemberConditionArgs',
]

@pulumi.input_type
class ApiConfigGatewayConfigArgs:
    def __init__(__self__, *,
                 backend_config: pulumi.Input['ApiConfigGatewayConfigBackendConfigArgs']):
        """
        :param pulumi.Input['ApiConfigGatewayConfigBackendConfigArgs'] backend_config: Backend settings that are applied to all backends of the Gateway.
               Structure is documented below.
        """
        pulumi.set(__self__, "backend_config", backend_config)

    @property
    @pulumi.getter(name="backendConfig")
    def backend_config(self) -> pulumi.Input['ApiConfigGatewayConfigBackendConfigArgs']:
        """
        Backend settings that are applied to all backends of the Gateway.
        Structure is documented below.
        """
        return pulumi.get(self, "backend_config")

    @backend_config.setter
    def backend_config(self, value: pulumi.Input['ApiConfigGatewayConfigBackendConfigArgs']):
        pulumi.set(self, "backend_config", value)


@pulumi.input_type
class ApiConfigGatewayConfigBackendConfigArgs:
    def __init__(__self__, *,
                 google_service_account: pulumi.Input[str]):
        """
        :param pulumi.Input[str] google_service_account: Google Cloud IAM service account used to sign OIDC tokens for backends that have authentication configured
               (https://cloud.google.com/service-infrastructure/docs/service-management/reference/rest/v1/services.configs#backend).
        """
        pulumi.set(__self__, "google_service_account", google_service_account)

    @property
    @pulumi.getter(name="googleServiceAccount")
    def google_service_account(self) -> pulumi.Input[str]:
        """
        Google Cloud IAM service account used to sign OIDC tokens for backends that have authentication configured
        (https://cloud.google.com/service-infrastructure/docs/service-management/reference/rest/v1/services.configs#backend).
        """
        return pulumi.get(self, "google_service_account")

    @google_service_account.setter
    def google_service_account(self, value: pulumi.Input[str]):
        pulumi.set(self, "google_service_account", value)


@pulumi.input_type
class ApiConfigGrpcServiceArgs:
    def __init__(__self__, *,
                 file_descriptor_set: pulumi.Input['ApiConfigGrpcServiceFileDescriptorSetArgs'],
                 sources: Optional[pulumi.Input[Sequence[pulumi.Input['ApiConfigGrpcServiceSourceArgs']]]] = None):
        """
        :param pulumi.Input['ApiConfigGrpcServiceFileDescriptorSetArgs'] file_descriptor_set: Input only. File descriptor set, generated by protoc.
               To generate, use protoc with imports and source info included. For an example test.proto file, the following command would put the value in a new file named out.pb.
               $ protoc --include_imports --include_source_info test.proto -o out.pb
               Structure is documented below.
        :param pulumi.Input[Sequence[pulumi.Input['ApiConfigGrpcServiceSourceArgs']]] sources: Uncompiled proto files associated with the descriptor set, used for display purposes (server-side compilation is not supported). These should match the inputs to 'protoc' command used to generate fileDescriptorSet.
               Structure is documented below.
        """
        pulumi.set(__self__, "file_descriptor_set", file_descriptor_set)
        if sources is not None:
            pulumi.set(__self__, "sources", sources)

    @property
    @pulumi.getter(name="fileDescriptorSet")
    def file_descriptor_set(self) -> pulumi.Input['ApiConfigGrpcServiceFileDescriptorSetArgs']:
        """
        Input only. File descriptor set, generated by protoc.
        To generate, use protoc with imports and source info included. For an example test.proto file, the following command would put the value in a new file named out.pb.
        $ protoc --include_imports --include_source_info test.proto -o out.pb
        Structure is documented below.
        """
        return pulumi.get(self, "file_descriptor_set")

    @file_descriptor_set.setter
    def file_descriptor_set(self, value: pulumi.Input['ApiConfigGrpcServiceFileDescriptorSetArgs']):
        pulumi.set(self, "file_descriptor_set", value)

    @property
    @pulumi.getter
    def sources(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['ApiConfigGrpcServiceSourceArgs']]]]:
        """
        Uncompiled proto files associated with the descriptor set, used for display purposes (server-side compilation is not supported). These should match the inputs to 'protoc' command used to generate fileDescriptorSet.
        Structure is documented below.
        """
        return pulumi.get(self, "sources")

    @sources.setter
    def sources(self, value: Optional[pulumi.Input[Sequence[pulumi.Input['ApiConfigGrpcServiceSourceArgs']]]]):
        pulumi.set(self, "sources", value)


@pulumi.input_type
class ApiConfigGrpcServiceFileDescriptorSetArgs:
    def __init__(__self__, *,
                 contents: pulumi.Input[str],
                 path: pulumi.Input[str]):
        """
        :param pulumi.Input[str] contents: Base64 encoded content of the file.
        :param pulumi.Input[str] path: The file path (full or relative path). This is typically the path of the file when it is uploaded.
        """
        pulumi.set(__self__, "contents", contents)
        pulumi.set(__self__, "path", path)

    @property
    @pulumi.getter
    def contents(self) -> pulumi.Input[str]:
        """
        Base64 encoded content of the file.
        """
        return pulumi.get(self, "contents")

    @contents.setter
    def contents(self, value: pulumi.Input[str]):
        pulumi.set(self, "contents", value)

    @property
    @pulumi.getter
    def path(self) -> pulumi.Input[str]:
        """
        The file path (full or relative path). This is typically the path of the file when it is uploaded.
        """
        return pulumi.get(self, "path")

    @path.setter
    def path(self, value: pulumi.Input[str]):
        pulumi.set(self, "path", value)


@pulumi.input_type
class ApiConfigGrpcServiceSourceArgs:
    def __init__(__self__, *,
                 contents: pulumi.Input[str],
                 path: pulumi.Input[str]):
        """
        :param pulumi.Input[str] contents: Base64 encoded content of the file.
        :param pulumi.Input[str] path: The file path (full or relative path). This is typically the path of the file when it is uploaded.
        """
        pulumi.set(__self__, "contents", contents)
        pulumi.set(__self__, "path", path)

    @property
    @pulumi.getter
    def contents(self) -> pulumi.Input[str]:
        """
        Base64 encoded content of the file.
        """
        return pulumi.get(self, "contents")

    @contents.setter
    def contents(self, value: pulumi.Input[str]):
        pulumi.set(self, "contents", value)

    @property
    @pulumi.getter
    def path(self) -> pulumi.Input[str]:
        """
        The file path (full or relative path). This is typically the path of the file when it is uploaded.
        """
        return pulumi.get(self, "path")

    @path.setter
    def path(self, value: pulumi.Input[str]):
        pulumi.set(self, "path", value)


@pulumi.input_type
class ApiConfigIamBindingConditionArgs:
    def __init__(__self__, *,
                 expression: pulumi.Input[str],
                 title: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "expression", expression)
        pulumi.set(__self__, "title", title)
        if description is not None:
            pulumi.set(__self__, "description", description)

    @property
    @pulumi.getter
    def expression(self) -> pulumi.Input[str]:
        return pulumi.get(self, "expression")

    @expression.setter
    def expression(self, value: pulumi.Input[str]):
        pulumi.set(self, "expression", value)

    @property
    @pulumi.getter
    def title(self) -> pulumi.Input[str]:
        return pulumi.get(self, "title")

    @title.setter
    def title(self, value: pulumi.Input[str]):
        pulumi.set(self, "title", value)

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "description", value)


@pulumi.input_type
class ApiConfigIamMemberConditionArgs:
    def __init__(__self__, *,
                 expression: pulumi.Input[str],
                 title: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "expression", expression)
        pulumi.set(__self__, "title", title)
        if description is not None:
            pulumi.set(__self__, "description", description)

    @property
    @pulumi.getter
    def expression(self) -> pulumi.Input[str]:
        return pulumi.get(self, "expression")

    @expression.setter
    def expression(self, value: pulumi.Input[str]):
        pulumi.set(self, "expression", value)

    @property
    @pulumi.getter
    def title(self) -> pulumi.Input[str]:
        return pulumi.get(self, "title")

    @title.setter
    def title(self, value: pulumi.Input[str]):
        pulumi.set(self, "title", value)

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "description", value)


@pulumi.input_type
class ApiConfigManagedServiceConfigArgs:
    def __init__(__self__, *,
                 contents: pulumi.Input[str],
                 path: pulumi.Input[str]):
        """
        :param pulumi.Input[str] contents: Base64 encoded content of the file.
        :param pulumi.Input[str] path: The file path (full or relative path). This is typically the path of the file when it is uploaded.
        """
        pulumi.set(__self__, "contents", contents)
        pulumi.set(__self__, "path", path)

    @property
    @pulumi.getter
    def contents(self) -> pulumi.Input[str]:
        """
        Base64 encoded content of the file.
        """
        return pulumi.get(self, "contents")

    @contents.setter
    def contents(self, value: pulumi.Input[str]):
        pulumi.set(self, "contents", value)

    @property
    @pulumi.getter
    def path(self) -> pulumi.Input[str]:
        """
        The file path (full or relative path). This is typically the path of the file when it is uploaded.
        """
        return pulumi.get(self, "path")

    @path.setter
    def path(self, value: pulumi.Input[str]):
        pulumi.set(self, "path", value)


@pulumi.input_type
class ApiConfigOpenapiDocumentArgs:
    def __init__(__self__, *,
                 document: pulumi.Input['ApiConfigOpenapiDocumentDocumentArgs']):
        """
        :param pulumi.Input['ApiConfigOpenapiDocumentDocumentArgs'] document: The OpenAPI Specification document file.
               Structure is documented below.
        """
        pulumi.set(__self__, "document", document)

    @property
    @pulumi.getter
    def document(self) -> pulumi.Input['ApiConfigOpenapiDocumentDocumentArgs']:
        """
        The OpenAPI Specification document file.
        Structure is documented below.
        """
        return pulumi.get(self, "document")

    @document.setter
    def document(self, value: pulumi.Input['ApiConfigOpenapiDocumentDocumentArgs']):
        pulumi.set(self, "document", value)


@pulumi.input_type
class ApiConfigOpenapiDocumentDocumentArgs:
    def __init__(__self__, *,
                 contents: pulumi.Input[str],
                 path: pulumi.Input[str]):
        """
        :param pulumi.Input[str] contents: Base64 encoded content of the file.
        :param pulumi.Input[str] path: The file path (full or relative path). This is typically the path of the file when it is uploaded.
        """
        pulumi.set(__self__, "contents", contents)
        pulumi.set(__self__, "path", path)

    @property
    @pulumi.getter
    def contents(self) -> pulumi.Input[str]:
        """
        Base64 encoded content of the file.
        """
        return pulumi.get(self, "contents")

    @contents.setter
    def contents(self, value: pulumi.Input[str]):
        pulumi.set(self, "contents", value)

    @property
    @pulumi.getter
    def path(self) -> pulumi.Input[str]:
        """
        The file path (full or relative path). This is typically the path of the file when it is uploaded.
        """
        return pulumi.get(self, "path")

    @path.setter
    def path(self, value: pulumi.Input[str]):
        pulumi.set(self, "path", value)


@pulumi.input_type
class ApiIamBindingConditionArgs:
    def __init__(__self__, *,
                 expression: pulumi.Input[str],
                 title: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "expression", expression)
        pulumi.set(__self__, "title", title)
        if description is not None:
            pulumi.set(__self__, "description", description)

    @property
    @pulumi.getter
    def expression(self) -> pulumi.Input[str]:
        return pulumi.get(self, "expression")

    @expression.setter
    def expression(self, value: pulumi.Input[str]):
        pulumi.set(self, "expression", value)

    @property
    @pulumi.getter
    def title(self) -> pulumi.Input[str]:
        return pulumi.get(self, "title")

    @title.setter
    def title(self, value: pulumi.Input[str]):
        pulumi.set(self, "title", value)

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "description", value)


@pulumi.input_type
class ApiIamMemberConditionArgs:
    def __init__(__self__, *,
                 expression: pulumi.Input[str],
                 title: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "expression", expression)
        pulumi.set(__self__, "title", title)
        if description is not None:
            pulumi.set(__self__, "description", description)

    @property
    @pulumi.getter
    def expression(self) -> pulumi.Input[str]:
        return pulumi.get(self, "expression")

    @expression.setter
    def expression(self, value: pulumi.Input[str]):
        pulumi.set(self, "expression", value)

    @property
    @pulumi.getter
    def title(self) -> pulumi.Input[str]:
        return pulumi.get(self, "title")

    @title.setter
    def title(self, value: pulumi.Input[str]):
        pulumi.set(self, "title", value)

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "description", value)


@pulumi.input_type
class GatewayIamBindingConditionArgs:
    def __init__(__self__, *,
                 expression: pulumi.Input[str],
                 title: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "expression", expression)
        pulumi.set(__self__, "title", title)
        if description is not None:
            pulumi.set(__self__, "description", description)

    @property
    @pulumi.getter
    def expression(self) -> pulumi.Input[str]:
        return pulumi.get(self, "expression")

    @expression.setter
    def expression(self, value: pulumi.Input[str]):
        pulumi.set(self, "expression", value)

    @property
    @pulumi.getter
    def title(self) -> pulumi.Input[str]:
        return pulumi.get(self, "title")

    @title.setter
    def title(self, value: pulumi.Input[str]):
        pulumi.set(self, "title", value)

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "description", value)


@pulumi.input_type
class GatewayIamMemberConditionArgs:
    def __init__(__self__, *,
                 expression: pulumi.Input[str],
                 title: pulumi.Input[str],
                 description: Optional[pulumi.Input[str]] = None):
        pulumi.set(__self__, "expression", expression)
        pulumi.set(__self__, "title", title)
        if description is not None:
            pulumi.set(__self__, "description", description)

    @property
    @pulumi.getter
    def expression(self) -> pulumi.Input[str]:
        return pulumi.get(self, "expression")

    @expression.setter
    def expression(self, value: pulumi.Input[str]):
        pulumi.set(self, "expression", value)

    @property
    @pulumi.getter
    def title(self) -> pulumi.Input[str]:
        return pulumi.get(self, "title")

    @title.setter
    def title(self, value: pulumi.Input[str]):
        pulumi.set(self, "title", value)

    @property
    @pulumi.getter
    def description(self) -> Optional[pulumi.Input[str]]:
        return pulumi.get(self, "description")

    @description.setter
    def description(self, value: Optional[pulumi.Input[str]]):
        pulumi.set(self, "description", value)


