def structure_payload(user_settings=None, login=None, email=None, password=None, first_name=None, last_name=None,
                      biography=None, sso_id=None, web_page_url=None, cover_image=None):
    """This function properly structures the payload to be passed when creating or manipulating users via the API.

    :param user_settings: Allows all user settings to be passed to the function within a single dictionary
    :type user_settings: dict, None
    :param login: The username (i.e. ``login``) for the user (**required**)
    :type login: str, None
    :param email: The email address for the user (**required**)
    :type email: str, None
    :param password: The password for the user
    :type password: str, None
    :param first_name: The user's first name (i.e. given name)
    :type first_name: str, None
    :param last_name: The user's last name (i.e. surname)
    :type last_name: str, None
    :param biography: The user's biography for their profile
    :type biography: str, None
    :param sso_id: The Single Sign-On (SSO) ID for the user
    :type sso_id: str, None
    :param web_page_url: The URL to the user's website
    :type web_page_url: str, None
    :param cover_image: The cover image to be used on the user's profile
    :type cover_image: str, None
    :returns: The properly formatted payload within a dictionary
    """
    payload_mapping = {
        'biography': biography,
        'cover_image': cover_image,
        'email': email,
        'first_name': first_name,
        'last_name': last_name,
        'login': login,
        'password': password,
        'sso_id': sso_id,
        'web_page_url': web_page_url
    }
    payload = {}
    if user_settings:
        payload.update(user_settings)
    for field_name, field_value in payload_mapping.items():
        if payload_mapping[field_name]:
            payload[field_name] = field_value
    payload = {'data': payload}
    return payload