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

__all__ = ['InventoryOnboardingCloudMonitoringPrepareArgs', 'InventoryOnboardingCloudMonitoringPrepare']

@pulumi.input_type
class InventoryOnboardingCloudMonitoringPrepareArgs:
    def __init__(__self__, *,
                 organization_id: pulumi.Input[_builtins.str],
                 parameters: pulumi.Input['InventoryOnboardingCloudMonitoringPrepareParametersArgs']):
        """
        The set of arguments for constructing a InventoryOnboardingCloudMonitoringPrepare resource.
        :param pulumi.Input[_builtins.str] organization_id: organizationId path parameter. Organization ID
        """
        pulumi.set(__self__, "organization_id", organization_id)
        pulumi.set(__self__, "parameters", parameters)

    @_builtins.property
    @pulumi.getter(name="organizationId")
    def organization_id(self) -> pulumi.Input[_builtins.str]:
        """
        organizationId path parameter. Organization ID
        """
        return pulumi.get(self, "organization_id")

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

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> pulumi.Input['InventoryOnboardingCloudMonitoringPrepareParametersArgs']:
        return pulumi.get(self, "parameters")

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


@pulumi.input_type
class _InventoryOnboardingCloudMonitoringPrepareState:
    def __init__(__self__, *,
                 items: Optional[pulumi.Input[Sequence[pulumi.Input['InventoryOnboardingCloudMonitoringPrepareItemArgs']]]] = None,
                 organization_id: Optional[pulumi.Input[_builtins.str]] = None,
                 parameters: Optional[pulumi.Input['InventoryOnboardingCloudMonitoringPrepareParametersArgs']] = None):
        """
        Input properties used for looking up and filtering InventoryOnboardingCloudMonitoringPrepare resources.
        :param pulumi.Input[Sequence[pulumi.Input['InventoryOnboardingCloudMonitoringPrepareItemArgs']]] items: Array of ResponseOrganizationsCreateOrganizationInventoryOnboardingCloudMonitoringPrepare
        :param pulumi.Input[_builtins.str] organization_id: organizationId path parameter. Organization ID
        """
        if items is not None:
            pulumi.set(__self__, "items", items)
        if organization_id is not None:
            pulumi.set(__self__, "organization_id", organization_id)
        if parameters is not None:
            pulumi.set(__self__, "parameters", parameters)

    @_builtins.property
    @pulumi.getter
    def items(self) -> Optional[pulumi.Input[Sequence[pulumi.Input['InventoryOnboardingCloudMonitoringPrepareItemArgs']]]]:
        """
        Array of ResponseOrganizationsCreateOrganizationInventoryOnboardingCloudMonitoringPrepare
        """
        return pulumi.get(self, "items")

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

    @_builtins.property
    @pulumi.getter(name="organizationId")
    def organization_id(self) -> Optional[pulumi.Input[_builtins.str]]:
        """
        organizationId path parameter. Organization ID
        """
        return pulumi.get(self, "organization_id")

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

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> Optional[pulumi.Input['InventoryOnboardingCloudMonitoringPrepareParametersArgs']]:
        return pulumi.get(self, "parameters")

    @parameters.setter
    def parameters(self, value: Optional[pulumi.Input['InventoryOnboardingCloudMonitoringPrepareParametersArgs']]):
        pulumi.set(self, "parameters", value)


@pulumi.type_token("meraki:organizations/inventoryOnboardingCloudMonitoringPrepare:InventoryOnboardingCloudMonitoringPrepare")
class InventoryOnboardingCloudMonitoringPrepare(pulumi.CustomResource):
    @overload
    def __init__(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 organization_id: Optional[pulumi.Input[_builtins.str]] = None,
                 parameters: Optional[pulumi.Input[Union['InventoryOnboardingCloudMonitoringPrepareParametersArgs', 'InventoryOnboardingCloudMonitoringPrepareParametersArgsDict']]] = None,
                 __props__=None):
        """
        ~>Warning: This resource does not represent a real-world entity in Meraki Dashboard, therefore changing or deleting this resource on its own has no immediate effect. Instead, it is a task part of a Meraki Dashboard workflow. It is executed in Meraki without any additional verification. It does not check if it was executed before or if a similar configuration or action
        already existed previously.

        ## Example Usage

        ```python
        import pulumi
        import pulumi_meraki as meraki

        example = meraki.organizations.InventoryOnboardingCloudMonitoringPrepare("example",
            organization_id="string",
            parameters={
                "devices": [{
                    "sudi": \"\"\"          "-----BEGIN CERTIFICATE-----
                MIIDyTCCArGgAwIBAgIKBBNXOVCGU1YztjANBgkqhkiG9w0BAQsFADAnMQ4wDAYD
                VQQKEwVDaXNjbzEVMBMGA1UEAxMMQUNUMiBTVURJIENBMB4XDTIxMDUzMTEzNTUx
                NVoXDTI5MDUxNDIwMjU0MVowbTEpMCcGA1UEBRMgUElEOkM5MjAwTC0yNFAtNEcg
                U046SkFFMjUyMjBSMksxDjAMBgNVBAoTBUNpc2NvMRgwFgYDVQQLEw9BQ1QtMiBM
                aXRlIFNVREkxFjAUBgNVBAMTDUM5MjAwTC0yNFAtNEcwggEiMA0GCSqGSIb3DQEB
                AQUAA4IBDwAwggEKAoIBAQDaUPxW76gT5MdoEAt+UrDFiYA9RYh2iHicDViBEyow
                TR1TuP36bHh13X3vtGiDsCD88Ci2TZIqd/EDkkc7v9ipUUYVVH+YDrPt2Aukb1PH
                D6K0R+KhgEzRo5x54TlU6oWvjUpwNZUwwdhMWIQaUVkMyZBYNy0jGPLO8jwZhyBg
                1Fneybr9pwedGbLrAaz+gdEikB8B4a/fvPjVfL5Ngb4QRjFqWuE+X3nLc0kHedep
                6nfgpUNXMlStVm5nIXKP6OjmzfCHPYh9L2Ehs1TrSk1ser9Ofx0ZMVL/jBZR2EIj
                OZ8tH6KlX2/B2pbSPIO6kD5c4UA8Cf1SbDJCwJ/kI9ihAgMBAAGjgbAwga0wDgYD
                VR0PAQH/BAQDAgXgMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUSNjx8cJw1Vu7
                fHMJk6+4uDAD+H8wTQYDVR0RBEYwRKBCBgkrBgEEAQkVAgOgNRMzQ2hpcElEPVVV
                VUNNaElGcUVFMklFUUVBQWNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9MB0GA1Ud
                DgQWBBRdhMkFD/z5hokaQeLbaRsp4hkvbzANBgkqhkiG9w0BAQsFAAOCAQEAMtuh
                YpBz4xEZ7YdJsLpw67Q0TTJGnTBRpzAeY1urYDoDz8TSx556XG7z3IRzuED5KVSp
                OwmH/iZ+tDfYQ3W3ElWTW93871DkuW4WQIfbnoHg/F7bF0DKYVkD3rpZjyz3NhzH
                d7cjTdJXQ85bTAOXDuxKH3qewrXxxOGXgh3I6NUq0UwMTWh84lND7Jl+ZAQkYNS2
                iHanTZFQBk3ML0NUb7fKDYGRTZRqwQ/upIO4S6LV1cxH/6V0qbMy3sCSHZoMLrW3
                0m3M6yKpe5+VZzHZwmWdUf3Ot+zKjhveK5/YNsMIASdvtvymxUizq2Hr1hvR/kPc
                p1vuyWxipU8JfzOh/A==
                -----END CERTIFICATE-----
                "
        \"\"\",
                    "tunnel": {
                        "certificate_name": "DeviceSUDI",
                        "local_interface": 1,
                        "loopback_number": 1000,
                        "name": "MERAKI",
                    },
                    "user": {
                        "username": "Meraki",
                    },
                    "vty": {
                        "access_list": {
                            "vty_in": {
                                "name": "MERAKI_IN",
                            },
                            "vty_out": {
                                "name": "MERAKI_OUT",
                            },
                        },
                        "authentication": {
                            "group": {
                                "name": "",
                            },
                        },
                        "authorization": {
                            "group": {
                                "name": "MERAKI",
                            },
                        },
                        "end_line_number": 17,
                        "rotary_number": 50,
                        "start_line_number": 16,
                    },
                }],
            })
        pulumi.export("merakiOrganizationsInventoryOnboardingCloudMonitoringPrepareExample", example)
        ```

        :param str resource_name: The name of the resource.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[_builtins.str] organization_id: organizationId path parameter. Organization ID
        """
        ...
    @overload
    def __init__(__self__,
                 resource_name: str,
                 args: InventoryOnboardingCloudMonitoringPrepareArgs,
                 opts: Optional[pulumi.ResourceOptions] = None):
        """
        ~>Warning: This resource does not represent a real-world entity in Meraki Dashboard, therefore changing or deleting this resource on its own has no immediate effect. Instead, it is a task part of a Meraki Dashboard workflow. It is executed in Meraki without any additional verification. It does not check if it was executed before or if a similar configuration or action
        already existed previously.

        ## Example Usage

        ```python
        import pulumi
        import pulumi_meraki as meraki

        example = meraki.organizations.InventoryOnboardingCloudMonitoringPrepare("example",
            organization_id="string",
            parameters={
                "devices": [{
                    "sudi": \"\"\"          "-----BEGIN CERTIFICATE-----
                MIIDyTCCArGgAwIBAgIKBBNXOVCGU1YztjANBgkqhkiG9w0BAQsFADAnMQ4wDAYD
                VQQKEwVDaXNjbzEVMBMGA1UEAxMMQUNUMiBTVURJIENBMB4XDTIxMDUzMTEzNTUx
                NVoXDTI5MDUxNDIwMjU0MVowbTEpMCcGA1UEBRMgUElEOkM5MjAwTC0yNFAtNEcg
                U046SkFFMjUyMjBSMksxDjAMBgNVBAoTBUNpc2NvMRgwFgYDVQQLEw9BQ1QtMiBM
                aXRlIFNVREkxFjAUBgNVBAMTDUM5MjAwTC0yNFAtNEcwggEiMA0GCSqGSIb3DQEB
                AQUAA4IBDwAwggEKAoIBAQDaUPxW76gT5MdoEAt+UrDFiYA9RYh2iHicDViBEyow
                TR1TuP36bHh13X3vtGiDsCD88Ci2TZIqd/EDkkc7v9ipUUYVVH+YDrPt2Aukb1PH
                D6K0R+KhgEzRo5x54TlU6oWvjUpwNZUwwdhMWIQaUVkMyZBYNy0jGPLO8jwZhyBg
                1Fneybr9pwedGbLrAaz+gdEikB8B4a/fvPjVfL5Ngb4QRjFqWuE+X3nLc0kHedep
                6nfgpUNXMlStVm5nIXKP6OjmzfCHPYh9L2Ehs1TrSk1ser9Ofx0ZMVL/jBZR2EIj
                OZ8tH6KlX2/B2pbSPIO6kD5c4UA8Cf1SbDJCwJ/kI9ihAgMBAAGjgbAwga0wDgYD
                VR0PAQH/BAQDAgXgMAwGA1UdEwEB/wQCMAAwHwYDVR0jBBgwFoAUSNjx8cJw1Vu7
                fHMJk6+4uDAD+H8wTQYDVR0RBEYwRKBCBgkrBgEEAQkVAgOgNRMzQ2hpcElEPVVV
                VUNNaElGcUVFMklFUUVBQWNBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUE9MB0GA1Ud
                DgQWBBRdhMkFD/z5hokaQeLbaRsp4hkvbzANBgkqhkiG9w0BAQsFAAOCAQEAMtuh
                YpBz4xEZ7YdJsLpw67Q0TTJGnTBRpzAeY1urYDoDz8TSx556XG7z3IRzuED5KVSp
                OwmH/iZ+tDfYQ3W3ElWTW93871DkuW4WQIfbnoHg/F7bF0DKYVkD3rpZjyz3NhzH
                d7cjTdJXQ85bTAOXDuxKH3qewrXxxOGXgh3I6NUq0UwMTWh84lND7Jl+ZAQkYNS2
                iHanTZFQBk3ML0NUb7fKDYGRTZRqwQ/upIO4S6LV1cxH/6V0qbMy3sCSHZoMLrW3
                0m3M6yKpe5+VZzHZwmWdUf3Ot+zKjhveK5/YNsMIASdvtvymxUizq2Hr1hvR/kPc
                p1vuyWxipU8JfzOh/A==
                -----END CERTIFICATE-----
                "
        \"\"\",
                    "tunnel": {
                        "certificate_name": "DeviceSUDI",
                        "local_interface": 1,
                        "loopback_number": 1000,
                        "name": "MERAKI",
                    },
                    "user": {
                        "username": "Meraki",
                    },
                    "vty": {
                        "access_list": {
                            "vty_in": {
                                "name": "MERAKI_IN",
                            },
                            "vty_out": {
                                "name": "MERAKI_OUT",
                            },
                        },
                        "authentication": {
                            "group": {
                                "name": "",
                            },
                        },
                        "authorization": {
                            "group": {
                                "name": "MERAKI",
                            },
                        },
                        "end_line_number": 17,
                        "rotary_number": 50,
                        "start_line_number": 16,
                    },
                }],
            })
        pulumi.export("merakiOrganizationsInventoryOnboardingCloudMonitoringPrepareExample", example)
        ```

        :param str resource_name: The name of the resource.
        :param InventoryOnboardingCloudMonitoringPrepareArgs args: The arguments to use to populate this resource's properties.
        :param pulumi.ResourceOptions opts: Options for the resource.
        """
        ...
    def __init__(__self__, resource_name: str, *args, **kwargs):
        resource_args, opts = _utilities.get_resource_args_opts(InventoryOnboardingCloudMonitoringPrepareArgs, pulumi.ResourceOptions, *args, **kwargs)
        if resource_args is not None:
            __self__._internal_init(resource_name, opts, **resource_args.__dict__)
        else:
            __self__._internal_init(resource_name, *args, **kwargs)

    def _internal_init(__self__,
                 resource_name: str,
                 opts: Optional[pulumi.ResourceOptions] = None,
                 organization_id: Optional[pulumi.Input[_builtins.str]] = None,
                 parameters: Optional[pulumi.Input[Union['InventoryOnboardingCloudMonitoringPrepareParametersArgs', 'InventoryOnboardingCloudMonitoringPrepareParametersArgsDict']]] = None,
                 __props__=None):
        opts = pulumi.ResourceOptions.merge(_utilities.get_resource_opts_defaults(), opts)
        if not isinstance(opts, pulumi.ResourceOptions):
            raise TypeError('Expected resource options to be a ResourceOptions instance')
        if opts.id is None:
            if __props__ is not None:
                raise TypeError('__props__ is only valid when passed in combination with a valid opts.id to get an existing resource')
            __props__ = InventoryOnboardingCloudMonitoringPrepareArgs.__new__(InventoryOnboardingCloudMonitoringPrepareArgs)

            if organization_id is None and not opts.urn:
                raise TypeError("Missing required property 'organization_id'")
            __props__.__dict__["organization_id"] = organization_id
            if parameters is None and not opts.urn:
                raise TypeError("Missing required property 'parameters'")
            __props__.__dict__["parameters"] = parameters
            __props__.__dict__["items"] = None
        super(InventoryOnboardingCloudMonitoringPrepare, __self__).__init__(
            'meraki:organizations/inventoryOnboardingCloudMonitoringPrepare:InventoryOnboardingCloudMonitoringPrepare',
            resource_name,
            __props__,
            opts)

    @staticmethod
    def get(resource_name: str,
            id: pulumi.Input[str],
            opts: Optional[pulumi.ResourceOptions] = None,
            items: Optional[pulumi.Input[Sequence[pulumi.Input[Union['InventoryOnboardingCloudMonitoringPrepareItemArgs', 'InventoryOnboardingCloudMonitoringPrepareItemArgsDict']]]]] = None,
            organization_id: Optional[pulumi.Input[_builtins.str]] = None,
            parameters: Optional[pulumi.Input[Union['InventoryOnboardingCloudMonitoringPrepareParametersArgs', 'InventoryOnboardingCloudMonitoringPrepareParametersArgsDict']]] = None) -> 'InventoryOnboardingCloudMonitoringPrepare':
        """
        Get an existing InventoryOnboardingCloudMonitoringPrepare resource's state with the given name, id, and optional extra
        properties used to qualify the lookup.

        :param str resource_name: The unique name of the resulting resource.
        :param pulumi.Input[str] id: The unique provider ID of the resource to lookup.
        :param pulumi.ResourceOptions opts: Options for the resource.
        :param pulumi.Input[Sequence[pulumi.Input[Union['InventoryOnboardingCloudMonitoringPrepareItemArgs', 'InventoryOnboardingCloudMonitoringPrepareItemArgsDict']]]] items: Array of ResponseOrganizationsCreateOrganizationInventoryOnboardingCloudMonitoringPrepare
        :param pulumi.Input[_builtins.str] organization_id: organizationId path parameter. Organization ID
        """
        opts = pulumi.ResourceOptions.merge(opts, pulumi.ResourceOptions(id=id))

        __props__ = _InventoryOnboardingCloudMonitoringPrepareState.__new__(_InventoryOnboardingCloudMonitoringPrepareState)

        __props__.__dict__["items"] = items
        __props__.__dict__["organization_id"] = organization_id
        __props__.__dict__["parameters"] = parameters
        return InventoryOnboardingCloudMonitoringPrepare(resource_name, opts=opts, __props__=__props__)

    @_builtins.property
    @pulumi.getter
    def items(self) -> pulumi.Output[Sequence['outputs.InventoryOnboardingCloudMonitoringPrepareItem']]:
        """
        Array of ResponseOrganizationsCreateOrganizationInventoryOnboardingCloudMonitoringPrepare
        """
        return pulumi.get(self, "items")

    @_builtins.property
    @pulumi.getter(name="organizationId")
    def organization_id(self) -> pulumi.Output[_builtins.str]:
        """
        organizationId path parameter. Organization ID
        """
        return pulumi.get(self, "organization_id")

    @_builtins.property
    @pulumi.getter
    def parameters(self) -> pulumi.Output['outputs.InventoryOnboardingCloudMonitoringPrepareParameters']:
        return pulumi.get(self, "parameters")

