# 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

__all__ = [
    'GetSwitchPortsBySwitchResult',
    'AwaitableGetSwitchPortsBySwitchResult',
    'get_switch_ports_by_switch',
    'get_switch_ports_by_switch_output',
]

@pulumi.output_type
class GetSwitchPortsBySwitchResult:
    """
    A collection of values returned by getSwitchPortsBySwitch.
    """
    def __init__(__self__, configuration_updated_after=None, ending_before=None, id=None, items=None, mac=None, macs=None, name=None, network_ids=None, organization_id=None, per_page=None, port_profile_ids=None, serial=None, serials=None, starting_after=None):
        if configuration_updated_after and not isinstance(configuration_updated_after, str):
            raise TypeError("Expected argument 'configuration_updated_after' to be a str")
        pulumi.set(__self__, "configuration_updated_after", configuration_updated_after)
        if ending_before and not isinstance(ending_before, str):
            raise TypeError("Expected argument 'ending_before' to be a str")
        pulumi.set(__self__, "ending_before", ending_before)
        if id and not isinstance(id, str):
            raise TypeError("Expected argument 'id' to be a str")
        pulumi.set(__self__, "id", id)
        if items and not isinstance(items, list):
            raise TypeError("Expected argument 'items' to be a list")
        pulumi.set(__self__, "items", items)
        if mac and not isinstance(mac, str):
            raise TypeError("Expected argument 'mac' to be a str")
        pulumi.set(__self__, "mac", mac)
        if macs and not isinstance(macs, list):
            raise TypeError("Expected argument 'macs' to be a list")
        pulumi.set(__self__, "macs", macs)
        if name and not isinstance(name, str):
            raise TypeError("Expected argument 'name' to be a str")
        pulumi.set(__self__, "name", name)
        if network_ids and not isinstance(network_ids, list):
            raise TypeError("Expected argument 'network_ids' to be a list")
        pulumi.set(__self__, "network_ids", network_ids)
        if organization_id and not isinstance(organization_id, str):
            raise TypeError("Expected argument 'organization_id' to be a str")
        pulumi.set(__self__, "organization_id", organization_id)
        if per_page and not isinstance(per_page, int):
            raise TypeError("Expected argument 'per_page' to be a int")
        pulumi.set(__self__, "per_page", per_page)
        if port_profile_ids and not isinstance(port_profile_ids, list):
            raise TypeError("Expected argument 'port_profile_ids' to be a list")
        pulumi.set(__self__, "port_profile_ids", port_profile_ids)
        if serial and not isinstance(serial, str):
            raise TypeError("Expected argument 'serial' to be a str")
        pulumi.set(__self__, "serial", serial)
        if serials and not isinstance(serials, list):
            raise TypeError("Expected argument 'serials' to be a list")
        pulumi.set(__self__, "serials", serials)
        if starting_after and not isinstance(starting_after, str):
            raise TypeError("Expected argument 'starting_after' to be a str")
        pulumi.set(__self__, "starting_after", starting_after)

    @_builtins.property
    @pulumi.getter(name="configurationUpdatedAfter")
    def configuration_updated_after(self) -> Optional[_builtins.str]:
        """
        configurationUpdatedAfter query parameter. Optional parameter to filter results by switches where the configuration has been updated after the given timestamp.
        """
        return pulumi.get(self, "configuration_updated_after")

    @_builtins.property
    @pulumi.getter(name="endingBefore")
    def ending_before(self) -> Optional[_builtins.str]:
        """
        endingBefore query parameter. A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.
        """
        return pulumi.get(self, "ending_before")

    @_builtins.property
    @pulumi.getter
    def id(self) -> _builtins.str:
        """
        The provider-assigned unique ID for this managed resource.
        """
        return pulumi.get(self, "id")

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

    @_builtins.property
    @pulumi.getter
    def mac(self) -> Optional[_builtins.str]:
        """
        mac query parameter. Optional parameter to filter switchports belonging to switches by MAC address. All returned switches will have a MAC address that contains the search term or is an exact match.
        """
        return pulumi.get(self, "mac")

    @_builtins.property
    @pulumi.getter
    def macs(self) -> Optional[Sequence[_builtins.str]]:
        """
        macs query parameter. Optional parameter to filter switchports by one or more MAC addresses belonging to devices. All switchports returned belong to MAC addresses of switches that are an exact match.
        """
        return pulumi.get(self, "macs")

    @_builtins.property
    @pulumi.getter
    def name(self) -> Optional[_builtins.str]:
        """
        name query parameter. Optional parameter to filter switchports belonging to switches by name. All returned switches will have a name that contains the search term or is an exact match.
        """
        return pulumi.get(self, "name")

    @_builtins.property
    @pulumi.getter(name="networkIds")
    def network_ids(self) -> Optional[Sequence[_builtins.str]]:
        """
        networkIds query parameter. Optional parameter to filter switchports by network.
        """
        return pulumi.get(self, "network_ids")

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

    @_builtins.property
    @pulumi.getter(name="perPage")
    def per_page(self) -> Optional[_builtins.int]:
        """
        perPage query parameter. The number of entries per page returned. Acceptable range is 3 50. Default is 50.
        """
        return pulumi.get(self, "per_page")

    @_builtins.property
    @pulumi.getter(name="portProfileIds")
    def port_profile_ids(self) -> Optional[Sequence[_builtins.str]]:
        """
        portProfileIds query parameter. Optional parameter to filter switchports belonging to the specified port profiles.
        """
        return pulumi.get(self, "port_profile_ids")

    @_builtins.property
    @pulumi.getter
    def serial(self) -> Optional[_builtins.str]:
        """
        serial query parameter. Optional parameter to filter switchports belonging to switches by serial number. All returned switches will have a serial number that contains the search term or is an exact match.
        """
        return pulumi.get(self, "serial")

    @_builtins.property
    @pulumi.getter
    def serials(self) -> Optional[Sequence[_builtins.str]]:
        """
        serials query parameter. Optional parameter to filter switchports belonging to switches with one or more serial numbers. All switchports returned belong to serial numbers of switches that are an exact match.
        """
        return pulumi.get(self, "serials")

    @_builtins.property
    @pulumi.getter(name="startingAfter")
    def starting_after(self) -> Optional[_builtins.str]:
        """
        startingAfter query parameter. A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.
        """
        return pulumi.get(self, "starting_after")


class AwaitableGetSwitchPortsBySwitchResult(GetSwitchPortsBySwitchResult):
    # pylint: disable=using-constant-test
    def __await__(self):
        if False:
            yield self
        return GetSwitchPortsBySwitchResult(
            configuration_updated_after=self.configuration_updated_after,
            ending_before=self.ending_before,
            id=self.id,
            items=self.items,
            mac=self.mac,
            macs=self.macs,
            name=self.name,
            network_ids=self.network_ids,
            organization_id=self.organization_id,
            per_page=self.per_page,
            port_profile_ids=self.port_profile_ids,
            serial=self.serial,
            serials=self.serials,
            starting_after=self.starting_after)


def get_switch_ports_by_switch(configuration_updated_after: Optional[_builtins.str] = None,
                               ending_before: Optional[_builtins.str] = None,
                               mac: Optional[_builtins.str] = None,
                               macs: Optional[Sequence[_builtins.str]] = None,
                               name: Optional[_builtins.str] = None,
                               network_ids: Optional[Sequence[_builtins.str]] = None,
                               organization_id: Optional[_builtins.str] = None,
                               per_page: Optional[_builtins.int] = None,
                               port_profile_ids: Optional[Sequence[_builtins.str]] = None,
                               serial: Optional[_builtins.str] = None,
                               serials: Optional[Sequence[_builtins.str]] = None,
                               starting_after: Optional[_builtins.str] = None,
                               opts: Optional[pulumi.InvokeOptions] = None) -> AwaitableGetSwitchPortsBySwitchResult:
    """
    ## Example Usage

    ```python
    import pulumi
    import pulumi_meraki as meraki

    example = meraki.organizations.get_switch_ports_by_switch(configuration_updated_after="string",
        ending_before="string",
        mac="string",
        macs=["string"],
        name="string",
        network_ids=["string"],
        organization_id="string",
        per_page=1,
        port_profile_ids=["string"],
        serial="string",
        serials=["string"],
        starting_after="string")
    pulumi.export("merakiOrganizationsSwitchPortsBySwitchExample", example.items)
    ```


    :param _builtins.str configuration_updated_after: configurationUpdatedAfter query parameter. Optional parameter to filter results by switches where the configuration has been updated after the given timestamp.
    :param _builtins.str ending_before: endingBefore query parameter. A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.
    :param _builtins.str mac: mac query parameter. Optional parameter to filter switchports belonging to switches by MAC address. All returned switches will have a MAC address that contains the search term or is an exact match.
    :param Sequence[_builtins.str] macs: macs query parameter. Optional parameter to filter switchports by one or more MAC addresses belonging to devices. All switchports returned belong to MAC addresses of switches that are an exact match.
    :param _builtins.str name: name query parameter. Optional parameter to filter switchports belonging to switches by name. All returned switches will have a name that contains the search term or is an exact match.
    :param Sequence[_builtins.str] network_ids: networkIds query parameter. Optional parameter to filter switchports by network.
    :param _builtins.str organization_id: organizationId path parameter. Organization ID
    :param _builtins.int per_page: perPage query parameter. The number of entries per page returned. Acceptable range is 3 50. Default is 50.
    :param Sequence[_builtins.str] port_profile_ids: portProfileIds query parameter. Optional parameter to filter switchports belonging to the specified port profiles.
    :param _builtins.str serial: serial query parameter. Optional parameter to filter switchports belonging to switches by serial number. All returned switches will have a serial number that contains the search term or is an exact match.
    :param Sequence[_builtins.str] serials: serials query parameter. Optional parameter to filter switchports belonging to switches with one or more serial numbers. All switchports returned belong to serial numbers of switches that are an exact match.
    :param _builtins.str starting_after: startingAfter query parameter. A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.
    """
    __args__ = dict()
    __args__['configurationUpdatedAfter'] = configuration_updated_after
    __args__['endingBefore'] = ending_before
    __args__['mac'] = mac
    __args__['macs'] = macs
    __args__['name'] = name
    __args__['networkIds'] = network_ids
    __args__['organizationId'] = organization_id
    __args__['perPage'] = per_page
    __args__['portProfileIds'] = port_profile_ids
    __args__['serial'] = serial
    __args__['serials'] = serials
    __args__['startingAfter'] = starting_after
    opts = pulumi.InvokeOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke('meraki:organizations/getSwitchPortsBySwitch:getSwitchPortsBySwitch', __args__, opts=opts, typ=GetSwitchPortsBySwitchResult).value

    return AwaitableGetSwitchPortsBySwitchResult(
        configuration_updated_after=pulumi.get(__ret__, 'configuration_updated_after'),
        ending_before=pulumi.get(__ret__, 'ending_before'),
        id=pulumi.get(__ret__, 'id'),
        items=pulumi.get(__ret__, 'items'),
        mac=pulumi.get(__ret__, 'mac'),
        macs=pulumi.get(__ret__, 'macs'),
        name=pulumi.get(__ret__, 'name'),
        network_ids=pulumi.get(__ret__, 'network_ids'),
        organization_id=pulumi.get(__ret__, 'organization_id'),
        per_page=pulumi.get(__ret__, 'per_page'),
        port_profile_ids=pulumi.get(__ret__, 'port_profile_ids'),
        serial=pulumi.get(__ret__, 'serial'),
        serials=pulumi.get(__ret__, 'serials'),
        starting_after=pulumi.get(__ret__, 'starting_after'))
def get_switch_ports_by_switch_output(configuration_updated_after: Optional[pulumi.Input[Optional[_builtins.str]]] = None,
                                      ending_before: Optional[pulumi.Input[Optional[_builtins.str]]] = None,
                                      mac: Optional[pulumi.Input[Optional[_builtins.str]]] = None,
                                      macs: Optional[pulumi.Input[Optional[Sequence[_builtins.str]]]] = None,
                                      name: Optional[pulumi.Input[Optional[_builtins.str]]] = None,
                                      network_ids: Optional[pulumi.Input[Optional[Sequence[_builtins.str]]]] = None,
                                      organization_id: Optional[pulumi.Input[_builtins.str]] = None,
                                      per_page: Optional[pulumi.Input[Optional[_builtins.int]]] = None,
                                      port_profile_ids: Optional[pulumi.Input[Optional[Sequence[_builtins.str]]]] = None,
                                      serial: Optional[pulumi.Input[Optional[_builtins.str]]] = None,
                                      serials: Optional[pulumi.Input[Optional[Sequence[_builtins.str]]]] = None,
                                      starting_after: Optional[pulumi.Input[Optional[_builtins.str]]] = None,
                                      opts: Optional[Union[pulumi.InvokeOptions, pulumi.InvokeOutputOptions]] = None) -> pulumi.Output[GetSwitchPortsBySwitchResult]:
    """
    ## Example Usage

    ```python
    import pulumi
    import pulumi_meraki as meraki

    example = meraki.organizations.get_switch_ports_by_switch(configuration_updated_after="string",
        ending_before="string",
        mac="string",
        macs=["string"],
        name="string",
        network_ids=["string"],
        organization_id="string",
        per_page=1,
        port_profile_ids=["string"],
        serial="string",
        serials=["string"],
        starting_after="string")
    pulumi.export("merakiOrganizationsSwitchPortsBySwitchExample", example.items)
    ```


    :param _builtins.str configuration_updated_after: configurationUpdatedAfter query parameter. Optional parameter to filter results by switches where the configuration has been updated after the given timestamp.
    :param _builtins.str ending_before: endingBefore query parameter. A token used by the server to indicate the end of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.
    :param _builtins.str mac: mac query parameter. Optional parameter to filter switchports belonging to switches by MAC address. All returned switches will have a MAC address that contains the search term or is an exact match.
    :param Sequence[_builtins.str] macs: macs query parameter. Optional parameter to filter switchports by one or more MAC addresses belonging to devices. All switchports returned belong to MAC addresses of switches that are an exact match.
    :param _builtins.str name: name query parameter. Optional parameter to filter switchports belonging to switches by name. All returned switches will have a name that contains the search term or is an exact match.
    :param Sequence[_builtins.str] network_ids: networkIds query parameter. Optional parameter to filter switchports by network.
    :param _builtins.str organization_id: organizationId path parameter. Organization ID
    :param _builtins.int per_page: perPage query parameter. The number of entries per page returned. Acceptable range is 3 50. Default is 50.
    :param Sequence[_builtins.str] port_profile_ids: portProfileIds query parameter. Optional parameter to filter switchports belonging to the specified port profiles.
    :param _builtins.str serial: serial query parameter. Optional parameter to filter switchports belonging to switches by serial number. All returned switches will have a serial number that contains the search term or is an exact match.
    :param Sequence[_builtins.str] serials: serials query parameter. Optional parameter to filter switchports belonging to switches with one or more serial numbers. All switchports returned belong to serial numbers of switches that are an exact match.
    :param _builtins.str starting_after: startingAfter query parameter. A token used by the server to indicate the start of the page. Often this is a timestamp or an ID but it is not limited to those. This parameter should not be defined by client applications. The link for the first, last, prev, or next page in the HTTP Link header should define it.
    """
    __args__ = dict()
    __args__['configurationUpdatedAfter'] = configuration_updated_after
    __args__['endingBefore'] = ending_before
    __args__['mac'] = mac
    __args__['macs'] = macs
    __args__['name'] = name
    __args__['networkIds'] = network_ids
    __args__['organizationId'] = organization_id
    __args__['perPage'] = per_page
    __args__['portProfileIds'] = port_profile_ids
    __args__['serial'] = serial
    __args__['serials'] = serials
    __args__['startingAfter'] = starting_after
    opts = pulumi.InvokeOutputOptions.merge(_utilities.get_invoke_opts_defaults(), opts)
    __ret__ = pulumi.runtime.invoke_output('meraki:organizations/getSwitchPortsBySwitch:getSwitchPortsBySwitch', __args__, opts=opts, typ=GetSwitchPortsBySwitchResult)
    return __ret__.apply(lambda __response__: GetSwitchPortsBySwitchResult(
        configuration_updated_after=pulumi.get(__response__, 'configuration_updated_after'),
        ending_before=pulumi.get(__response__, 'ending_before'),
        id=pulumi.get(__response__, 'id'),
        items=pulumi.get(__response__, 'items'),
        mac=pulumi.get(__response__, 'mac'),
        macs=pulumi.get(__response__, 'macs'),
        name=pulumi.get(__response__, 'name'),
        network_ids=pulumi.get(__response__, 'network_ids'),
        organization_id=pulumi.get(__response__, 'organization_id'),
        per_page=pulumi.get(__response__, 'per_page'),
        port_profile_ids=pulumi.get(__response__, 'port_profile_ids'),
        serial=pulumi.get(__response__, 'serial'),
        serials=pulumi.get(__response__, 'serials'),
        starting_after=pulumi.get(__response__, 'starting_after')))
