def METHOD_NAME(
    self, name, service_account_name=None, ttl=None, mount_point=DEFAULT_MOUNT_POINT
):
    """This endpoint creates or updates the ad role definition.
    :param name: Specifies the name of an existing role against which to create this ad credential.
    :type name: str | unicode
    :param service_account_name: The name of a pre-existing service account in Active Directory that maps to this role.
        This value is required on create and optional on update.
    :type service_account_name: str | unicode
    :param ttl: Specifies the TTL for this role.
        This is provided as a string duration with a time suffix like "30s" or "1h" or as seconds.
        If not provided, the default Vault TTL is used.
    :type ttl: str | unicode
    :param mount_point: Specifies the place where the secrets engine will be accessible (default: ad).
    :type mount_point: str | unicode
    :return: The response of the request.
    :rtype: requests.Response
    """
    api_path = utils.format_url("/v1/{}/roles/{}", mount_point, name)
    params = {
        "name": name,
    }
    params.update(
        utils.remove_nones(
            {
                "service_account_name": service_account_name,
                "ttl": ttl,
            }
        )
    )
    return self._adapter.post(
        url=api_path,
        json=params,
    )