def format_notes(notes):
    """Formats a list of notes.

    :param list notes: The list of note dictionaries to display
    :returns: a list of note strings

    Assumed note dictionary example:
    {
        'assoc_id': "action/12345678901234567890123456,
        'subject': "12345678901234567890123456",
        'sub_type': "action",
        'note_val': "message",
        'verbosity': 1,
        'note_id': "09876543210987654321098765",
        'note_timestamp': "2018-10-08 14:23:53.346534",
        'resolved_url_value': \
            "Details at notedetails/09876543210987654321098765"
    }

    Resulting in:

    > action:12345678901234567890123456(2018-10-08 14:23:53.346534): message
      - Info available with 'describe notedetails/09876543210987654321098765'
    """
    nl = []
    for n in notes:
        try:
            s = "> {}:{}({}): {}".format(
                n['sub_type'],
                n['subject'],
                n['note_timestamp'],
                n['note_val']
            )
            if n['resolved_url_value']:
                s += ("\n  - Info available with "
                      "'describe notedetails/{}'".format(n['note_id']))
        except KeyError:
            s = "!!! Unparseable Note: {}".format(n)

        nl.append(s)
    return nl