# 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
from . import outputs

__all__ = [
    'ApiConfigGatewayConfig',
    'ApiConfigGatewayConfigBackendConfig',
    'ApiConfigIamBindingCondition',
    'ApiConfigIamMemberCondition',
    'ApiConfigOpenapiDocument',
    'ApiConfigOpenapiDocumentDocument',
    'ApiIamBindingCondition',
    'ApiIamMemberCondition',
    'GatewayIamBindingCondition',
    'GatewayIamMemberCondition',
]

@pulumi.output_type
class ApiConfigGatewayConfig(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "backendConfig":
            suggest = "backend_config"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApiConfigGatewayConfig. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApiConfigGatewayConfig.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApiConfigGatewayConfig.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 backend_config: 'outputs.ApiConfigGatewayConfigBackendConfig'):
        """
        :param '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) -> 'outputs.ApiConfigGatewayConfigBackendConfig':
        """
        Backend settings that are applied to all backends of the Gateway.
        Structure is documented below.
        """
        return pulumi.get(self, "backend_config")


@pulumi.output_type
class ApiConfigGatewayConfigBackendConfig(dict):
    @staticmethod
    def __key_warning(key: str):
        suggest = None
        if key == "googleServiceAccount":
            suggest = "google_service_account"

        if suggest:
            pulumi.log.warn(f"Key '{key}' not found in ApiConfigGatewayConfigBackendConfig. Access the value via the '{suggest}' property getter instead.")

    def __getitem__(self, key: str) -> Any:
        ApiConfigGatewayConfigBackendConfig.__key_warning(key)
        return super().__getitem__(key)

    def get(self, key: str, default = None) -> Any:
        ApiConfigGatewayConfigBackendConfig.__key_warning(key)
        return super().get(key, default)

    def __init__(__self__, *,
                 google_service_account: str):
        """
        :param 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) -> 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")


@pulumi.output_type
class ApiConfigIamBindingCondition(dict):
    def __init__(__self__, *,
                 expression: str,
                 title: str,
                 description: Optional[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) -> str:
        return pulumi.get(self, "expression")

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

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


@pulumi.output_type
class ApiConfigIamMemberCondition(dict):
    def __init__(__self__, *,
                 expression: str,
                 title: str,
                 description: Optional[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) -> str:
        return pulumi.get(self, "expression")

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

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


@pulumi.output_type
class ApiConfigOpenapiDocument(dict):
    def __init__(__self__, *,
                 document: 'outputs.ApiConfigOpenapiDocumentDocument'):
        """
        :param 'ApiConfigOpenapiDocumentDocumentArgs' document: The OpenAPI Specification document file.
               Structure is documented below.
        """
        pulumi.set(__self__, "document", document)

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


@pulumi.output_type
class ApiConfigOpenapiDocumentDocument(dict):
    def __init__(__self__, *,
                 contents: str,
                 path: str):
        """
        :param str contents: Base64 encoded content of the file.
        :param 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) -> str:
        """
        Base64 encoded content of the file.
        """
        return pulumi.get(self, "contents")

    @property
    @pulumi.getter
    def path(self) -> 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")


@pulumi.output_type
class ApiIamBindingCondition(dict):
    def __init__(__self__, *,
                 expression: str,
                 title: str,
                 description: Optional[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) -> str:
        return pulumi.get(self, "expression")

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

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


@pulumi.output_type
class ApiIamMemberCondition(dict):
    def __init__(__self__, *,
                 expression: str,
                 title: str,
                 description: Optional[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) -> str:
        return pulumi.get(self, "expression")

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

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


@pulumi.output_type
class GatewayIamBindingCondition(dict):
    def __init__(__self__, *,
                 expression: str,
                 title: str,
                 description: Optional[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) -> str:
        return pulumi.get(self, "expression")

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

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


@pulumi.output_type
class GatewayIamMemberCondition(dict):
    def __init__(__self__, *,
                 expression: str,
                 title: str,
                 description: Optional[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) -> str:
        return pulumi.get(self, "expression")

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

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


