# coding=utf-8
# *** WARNING: this file was generated by pulumi-language-python. ***
# *** Do not edit by hand unless you're certain you know what you are doing! ***

import builtins as _builtins
import warnings
import sys
import pulumi
import pulumi.runtime
from typing import Any, Mapping, Optional, Sequence, Union, overload
if sys.version_info >= (3, 11):
    from typing import NotRequired, TypedDict, TypeAlias
else:
    from typing_extensions import NotRequired, TypedDict, TypeAlias
from .. import _utilities

__all__ = [
    'DeploymentEndpointArgs',
    'DeploymentEndpointArgsDict',
    'DeploymentEndpointServiceArgs',
    'DeploymentEndpointServiceArgsDict',
    'DeploymentPrivateNetworkArgs',
    'DeploymentPrivateNetworkArgsDict',
    'DeploymentVolumeArgs',
    'DeploymentVolumeArgsDict',
]

MYPY = False

if not MYPY:
    class DeploymentEndpointArgsDict(TypedDict):
        id: NotRequired[pulumi.Input[_builtins.str]]
        """
        The ID of the endpoint.
        """
        private_network_id: NotRequired[pulumi.Input[_builtins.str]]
        """
        Private network ID if the endpoint is private.
        """
        public: NotRequired[pulumi.Input[_builtins.bool]]
        """
        Whether the endpoint is public (true) or private (false).
        """
        services: NotRequired[pulumi.Input[Sequence[pulumi.Input['DeploymentEndpointServiceArgsDict']]]]
        """
        List of services exposed on the endpoint.
        """
elif False:
    DeploymentEndpointArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class DeploymentEndpointArgs:
    def __init__(__self__, *,
                 id: Optional[pulumi.Input[_builtins.str]] = None,
                 private_network_id: Optional[pulumi.Input[_builtins.str]] = None,
                 public: Optional[pulumi.Input[_builtins.bool]] = None,
                 services: Optional[pulumi.Input[Sequence[pulumi.Input['DeploymentEndpointServiceArgs']]]] = None):
        """
        :param pulumi.Input[_builtins.str] id: The ID of the endpoint.
        :param pulumi.Input[_builtins.str] private_network_id: Private network ID if the endpoint is private.
        :param pulumi.Input[_builtins.bool] public: Whether the endpoint is public (true) or private (false).
        :param pulumi.Input[Sequence[pulumi.Input['DeploymentEndpointServiceArgs']]] services: List of services exposed on the endpoint.
        """
        if id is not None:
            pulumi.set(__self__, "id", id)
        if private_network_id is not None:
            pulumi.set(__self__, "private_network_id", private_network_id)
        if public is not None:
            pulumi.set(__self__, "public", public)
        if services is not None:
            pulumi.set(__self__, "services", services)

    @_builtins.property
    @pulumi.getter
    def id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        The ID of the endpoint.
        """
        return pulumi.get(self, "id")

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

    @_builtins.property
    @pulumi.getter(name="privateNetworkId")
    def private_network_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Private network ID if the endpoint is private.
        """
        return pulumi.get(self, "private_network_id")

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

    @_builtins.property
    @pulumi.getter
    def public(self) -> Optional[pulumi.Input[_builtins.bool]]:
        """
        Whether the endpoint is public (true) or private (false).
        """
        return pulumi.get(self, "public")

    @public.setter
    def public(self, value: Optional[pulumi.Input[_builtins.bool]]):
        pulumi.set(self, "public", value)

    @_builtins.property
    @pulumi.getter
    def services(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['DeploymentEndpointServiceArgs']]]]:
        """
        List of services exposed on the endpoint.
        """
        return pulumi.get(self, "services")

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


if not MYPY:
    class DeploymentEndpointServiceArgsDict(TypedDict):
        name: NotRequired[pulumi.Input[_builtins.str]]
        """
        Name of the OpenSearch deployment. If not specified, a random name will be generated.
        """
        port: NotRequired[pulumi.Input[_builtins.int]]
        """
        Service port number.
        """
        url: NotRequired[pulumi.Input[_builtins.str]]
        """
        Full URL to access the service (e.g., "https://abc-123.searchdb.fr-par.scw.cloud:9200").
        """
elif False:
    DeploymentEndpointServiceArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class DeploymentEndpointServiceArgs:
    def __init__(__self__, *,
                 name: Optional[pulumi.Input[_builtins.str]] = None,
                 port: Optional[pulumi.Input[_builtins.int]] = None,
                 url: Optional[pulumi.Input[_builtins.str]] = None):
        """
        :param pulumi.Input[_builtins.str] name: Name of the OpenSearch deployment. If not specified, a random name will be generated.
        :param pulumi.Input[_builtins.int] port: Service port number.
        :param pulumi.Input[_builtins.str] url: Full URL to access the service (e.g., "https://abc-123.searchdb.fr-par.scw.cloud:9200").
        """
        if name is not None:
            pulumi.set(__self__, "name", name)
        if port is not None:
            pulumi.set(__self__, "port", port)
        if url is not None:
            pulumi.set(__self__, "url", url)

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Name of the OpenSearch deployment. If not specified, a random name will be generated.
        """
        return pulumi.get(self, "name")

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

    @_builtins.property
    @pulumi.getter
    def port(self) -> Optional[pulumi.Input[_builtins.int]]:
        """
        Service port number.
        """
        return pulumi.get(self, "port")

    @port.setter
    def port(self, value: Optional[pulumi.Input[_builtins.int]]):
        pulumi.set(self, "port", value)

    @_builtins.property
    @pulumi.getter
    def url(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        Full URL to access the service (e.g., "https://abc-123.searchdb.fr-par.scw.cloud:9200").
        """
        return pulumi.get(self, "url")

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


if not MYPY:
    class DeploymentPrivateNetworkArgsDict(TypedDict):
        private_network_id: pulumi.Input[_builtins.str]
        """
        Private network ID if the endpoint is private.
        """
elif False:
    DeploymentPrivateNetworkArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class DeploymentPrivateNetworkArgs:
    def __init__(__self__, *,
                 private_network_id: pulumi.Input[_builtins.str]):
        """
        :param pulumi.Input[_builtins.str] private_network_id: Private network ID if the endpoint is private.
        """
        pulumi.set(__self__, "private_network_id", private_network_id)

    @_builtins.property
    @pulumi.getter(name="privateNetworkId")
    def private_network_id(self) -> pulumi.Input[_builtins.str]:
        """
        Private network ID if the endpoint is private.
        """
        return pulumi.get(self, "private_network_id")

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


if not MYPY:
    class DeploymentVolumeArgsDict(TypedDict):
        size_in_gb: pulumi.Input[_builtins.int]
        """
        Volume size in GB. Changing this forces recreation of the deployment.
        """
        type: pulumi.Input[_builtins.str]
        """
        Volume type. Valid values are `sbs_5k` (5K IOPS) or `sbs_15k` (15K IOPS). Changing this forces recreation of the deployment.
        """
elif False:
    DeploymentVolumeArgsDict: TypeAlias = Mapping[str, Any]

@pulumi.input_type
class DeploymentVolumeArgs:
    def __init__(__self__, *,
                 size_in_gb: pulumi.Input[_builtins.int],
                 type: pulumi.Input[_builtins.str]):
        """
        :param pulumi.Input[_builtins.int] size_in_gb: Volume size in GB. Changing this forces recreation of the deployment.
        :param pulumi.Input[_builtins.str] type: Volume type. Valid values are `sbs_5k` (5K IOPS) or `sbs_15k` (15K IOPS). Changing this forces recreation of the deployment.
        """
        pulumi.set(__self__, "size_in_gb", size_in_gb)
        pulumi.set(__self__, "type", type)

    @_builtins.property
    @pulumi.getter(name="sizeInGb")
    def size_in_gb(self) -> pulumi.Input[_builtins.int]:
        """
        Volume size in GB. Changing this forces recreation of the deployment.
        """
        return pulumi.get(self, "size_in_gb")

    @size_in_gb.setter
    def size_in_gb(self, value: pulumi.Input[_builtins.int]):
        pulumi.set(self, "size_in_gb", value)

    @_builtins.property
    @pulumi.getter
    def type(self) -> pulumi.Input[_builtins.str]:
        """
        Volume type. Valid values are `sbs_5k` (5K IOPS) or `sbs_15k` (15K IOPS). Changing this forces recreation of the deployment.
        """
        return pulumi.get(self, "type")

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


