<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def add_user(self, user_id, custom_properties=None, headers=None, endpoint_url=None):
 """ Creates a new identified user if he doesn't exist. :param str user_id: identified user's ID :param dict custom_properties: user properties :param dict headers: custom request headers (if isn't set default values are used) :param str endpoint_url: where to send the request (if isn't set default value is used) :return: Response """

        endpoint_url = endpoint_url or self._endpoint_url

        url = endpoint_url + '/users'

        headers = headers or self._default_headers()
        payload = {"user_id": user_id}

        if custom_properties is not None:
            payload["user_properties"] = custom_properties

        response = requests.post(url, headers=headers, json=payload)

        return response