# 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 warnings
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
from .. import _utilities

__all__ = [
    'ApiConfigGatewayConfigArgs',
    'ApiConfigGatewayConfigBackendConfigArgs',
    'ApiConfigIamBindingConditionArgs',
    'ApiConfigIamMemberConditionArgs',
    '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 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 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)


