class NetFlowSettings(object):
    def __init__(self, session):
        super(NetFlowSettings, self).__init__()
        self._session = session
    
    def getNetworkNetflowSettings(self, networkId: str):
        """
        **Return the NetFlow traffic reporting settings for a network**
        https://developer.cisco.com/meraki/api/#!get-network-netflow-settings
        
        - networkId (string)
        """

        metadata = {
            'tags': ['NetFlow settings'],
            'operation': 'getNetworkNetflowSettings',
        }
        resource = f'/networks/{networkId}/netflowSettings'

        return self._session.get(metadata, resource)

    def updateNetworkNetflowSettings(self, networkId: str, **kwargs):
        """
        **Update the NetFlow traffic reporting settings for a network**
        https://developer.cisco.com/meraki/api/#!update-network-netflow-settings
        
        - networkId (string)
        - reportingEnabled (boolean): Boolean indicating whether NetFlow traffic reporting is enabled (true) or disabled (false).
        - collectorIp (string): The IPv4 address of the NetFlow collector.
        - collectorPort (integer): The port that the NetFlow collector will be listening on.
        """

        kwargs.update(locals())

        metadata = {
            'tags': ['NetFlow settings'],
            'operation': 'updateNetworkNetflowSettings',
        }
        resource = f'/networks/{networkId}/netflowSettings'

        body_params = ['reportingEnabled', 'collectorIp', 'collectorPort']
        payload = {k: v for (k, v) in kwargs.items() if k in body_params}

        return self._session.put(metadata, resource, payload)

