def update_friend(id: str) -> Response:
    """
    Update all aspects of a Friend resource.

    Use a JSON representation to fully update an existing friend resource.
    Args:
        id: The unique identifier of a Friend resouce

    Returns:
        A flask.Response object.
    """
    try:
        payload = api_helpers.json_payload(request)
        api_helpers.required_elements_exist(payload)
    except ValueError as error:
        error_response = make_response(jsonify({"error": str(error)}), 400)
        return error_response

    friend = datastore.existing_friend(payload['id'])
    if friend:
        friend.update({
            "id": payload["id"],
            "first_name": payload["firstName"],
            "last_name": payload["lastName"],
            "telephone": payload["telephone"],
            "email": payload["email"],
            "notes": payload["notes"],
        })

        response = make_response(
            jsonify({
                "message":
                "Friend resource {} updated.".format(payload['id'])
            }))
        return response
    else:
        response = make_response(
            jsonify({
                "error":
                "Friend resource {} not found.".format(payload['id'])
            }), 404)
        return response
def update_friend(id: str) -> Response:
    """
    Update all aspects of a Friend resource.

    Use a JSON representation to fully update an existing friend resource.
    Args:
        id: The unique identifier of a Friend resouce

    Returns:
        A flask.Response object.
    """
    try:
        payload = api_helpers.json_payload(request)
        api_helpers.required_elements_exist(payload)
    except ValueError as error:
        error_response = make_response(jsonify({"error": str(error)}), 400)
        return error_response

    friend = datastore.existing_friend(payload['id'])
    if friend:
        friend.update({
                "id": payload["id"],
                "first_name": payload["firstName"],
                "last_name": payload["lastName"],
                "telephone": payload["telephone"],
                "email": payload["email"],
                "notes": payload["notes"],
            })

        response = make_response(
            jsonify({"message": "Friend resource {} updated.".format(
                payload['id'])}))
        return response
    else:
        response = make_response(
            jsonify({"error": "Friend resource {} not found.".format(
                payload['id'])}), 404)
        return response
def create_friend() -> Response:
    """
    Create a new friend resource.

    Utilize a JSON  representation/payload in the request object to
    create a new friend resource.

    Returns:
        A flask.Response object.
    """

    #DEP_01: Remove dependency on datastore
    try:
        payload = api_helpers.json_payload(request)
        api_helpers.required_elements_exist(payload)
    except ValueError as error:
        error_response = make_response(jsonify({"error": str(error)}), 400)
        return error_response

    if datastore.existing_friend(payload['id']):
        response = make_response(
            jsonify(
                {"error": "The specified friend resource already exists."}), 400
            )
    else:
        datastore.friends.append({
                "id": payload["id"],
                "first_name": payload["firstName"],
                "last_name": payload["lastName"],
                "telephone": payload["telephone"],
                "email": payload["email"],
                "notes": payload["notes"],
            })

        response = make_response(
            jsonify({"message": "Friend resource created."}), 201)

    return response
def create_friend() -> Response:
    """
    Create a new friend resource.

    Utilize a JSON  representation/payload in the request object to
    create a new friend resource.

    Returns:
        A flask.Response object.
    """

    #DEP_01: Remove dependency on datastore
    try:
        payload = api_helpers.json_payload(request)
        api_helpers.required_elements_exist(payload)
    except ValueError as error:
        error_response = make_response(jsonify({"error": str(error)}), 400)
        return error_response

    if datastore.existing_friend(payload['id']):
        response = make_response(
            jsonify({"error":
                     "The specified friend resource already exists."}), 400)
    else:
        datastore._friends.append({
            "id": payload["id"],
            "first_name": payload["firstName"],
            "last_name": payload["lastName"],
            "telephone": payload["telephone"],
            "email": payload["email"],
            "notes": payload["notes"],
        })

        response = make_response(
            jsonify({"message": "Friend resource created."}), 201)

    return response