Builds query string params from inputs. It handles offset and
        count defaults and validation.

        :param bounce_type: The type of bounces retrieve. See `bounce_types`
            for a list of types, or read the Postmark API docs. Defaults to
            `None`.
        :param inactive: If `True`, retrieves inactive bounces only.
            Defaults to `None`.
        :param email_filter: A string to filter emails by.
            Defaults to `None`.
        :param message_id: Retrieve a bounce for a single message's ID.
            Defaults to `None`.
        :param count: The number of bounces to retrieve in this request.
            Defaults to 25 if `message_id` is not provided.
        :param offset: The page offset for bounces to retrieve. Defaults to 0
            if `message_id` is not provided.

def _construct_params(self, bounce_type=None, inactive=None,
                          email_filter=None, message_id=None, count=None,
                          offset=None):
        '''Builds query string params from inputs. It handles offset and
        count defaults and validation.

        :param bounce_type: The type of bounces retrieve. See `bounce_types`
            for a list of types, or read the Postmark API docs. Defaults to
            `None`.
        :param inactive: If `True`, retrieves inactive bounces only.
            Defaults to `None`.
        :param email_filter: A string to filter emails by.
            Defaults to `None`.
        :param message_id: Retrieve a bounce for a single message's ID.
            Defaults to `None`.
        :param count: The number of bounces to retrieve in this request.
            Defaults to 25 if `message_id` is not provided.
        :param offset: The page offset for bounces to retrieve. Defaults to 0
            if `message_id` is not provided.
        '''
        params = {}
        if bounce_type is not None:
            if bounce_type not in bounce_types:
                err = 'Invalid bounce type "{0}".'
                raise BounceError(err.format(bounce_type))
            else:
                params['type'] = bounce_type
        if inactive is not None:
            params['inactive'] = inactive
        if email_filter is not None:
            params['emailFilter'] = email_filter
        if message_id is None:
            # If the message_id is given, count and offset are not
            # required, so we postpone assigning defaults to here
            if count is None:
                count = 25
            if offset is None:
                offset = 0
        else:
            params['messageID'] = message_id
        if count is not None:
            params['count'] = count
        if offset is not None:
            params['offset'] = offset
        return params