114 lines
3.6 KiB
Bash
114 lines
3.6 KiB
Bash
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# Reflect API helper script
|
|
# Usage:
|
|
# reflect.sh daily "text" ["list_name"]
|
|
# reflect.sh note "subject" "content_markdown"
|
|
# reflect.sh link "url" "title" ["description"]
|
|
# reflect.sh links
|
|
|
|
# Configuration: Set these environment variables
|
|
# REFLECT_TOKEN - Your Reflect API access token (required)
|
|
# REFLECT_GRAPH_ID - Your graph ID (required, find via /api/graphs endpoint)
|
|
|
|
# Check for required environment variables
|
|
if [[ -z "${REFLECT_TOKEN:-}" ]]; then
|
|
echo "Error: REFLECT_TOKEN environment variable not set" >&2
|
|
echo "Get your token at: https://reflect.app/developer/oauth" >&2
|
|
exit 1
|
|
fi
|
|
|
|
if [[ -z "${REFLECT_GRAPH_ID:-}" ]]; then
|
|
echo "Error: REFLECT_GRAPH_ID environment variable not set" >&2
|
|
echo "Find your graph ID by running:" >&2
|
|
echo " curl -H \"Authorization: Bearer \$REFLECT_TOKEN\" https://reflect.app/api/graphs" >&2
|
|
exit 1
|
|
fi
|
|
|
|
API_BASE="https://reflect.app/api/graphs/$REFLECT_GRAPH_ID"
|
|
|
|
case "${1:-help}" in
|
|
daily)
|
|
TEXT="${2:?Usage: reflect.sh daily \"text\" [\"list_name\"]}"
|
|
LIST_NAME="${3:-}"
|
|
|
|
PAYLOAD=$(jq -n \
|
|
--arg text "$TEXT" \
|
|
--arg list "$LIST_NAME" \
|
|
'{
|
|
text: $text,
|
|
transform_type: "list-append"
|
|
} + (if $list != "" then {list_name: $list} else {} end)')
|
|
|
|
curl -s -X PUT "$API_BASE/daily-notes" \
|
|
-H "Authorization: Bearer $REFLECT_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "$PAYLOAD"
|
|
;;
|
|
|
|
note)
|
|
SUBJECT="${2:?Usage: reflect.sh note \"subject\" \"content_markdown\" [pinned]}"
|
|
CONTENT="${3:?Usage: reflect.sh note \"subject\" \"content_markdown\" [pinned]}"
|
|
PINNED="${4:-false}"
|
|
|
|
curl -s -X POST "$API_BASE/notes" \
|
|
-H "Authorization: Bearer $REFLECT_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "$(jq -n \
|
|
--arg subject "$SUBJECT" \
|
|
--arg content "$CONTENT" \
|
|
--argjson pinned "$PINNED" \
|
|
'{subject: $subject, content_markdown: $content, pinned: $pinned}')"
|
|
;;
|
|
|
|
link)
|
|
URL="${2:?Usage: reflect.sh link \"url\" \"title\" [\"description\"]}"
|
|
TITLE="${3:?Usage: reflect.sh link \"url\" \"title\" [\"description\"]}"
|
|
DESC="${4:-}"
|
|
|
|
PAYLOAD=$(jq -n \
|
|
--arg url "$URL" \
|
|
--arg title "$TITLE" \
|
|
--arg desc "$DESC" \
|
|
'{url: $url, title: $title} + (if $desc != "" then {description: $desc} else {} end)')
|
|
|
|
curl -s -X POST "$API_BASE/links" \
|
|
-H "Authorization: Bearer $REFLECT_TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "$PAYLOAD"
|
|
;;
|
|
|
|
links)
|
|
curl -s "$API_BASE/links" \
|
|
-H "Authorization: Bearer $REFLECT_TOKEN" | jq .
|
|
;;
|
|
|
|
books)
|
|
curl -s "$API_BASE/books" \
|
|
-H "Authorization: Bearer $REFLECT_TOKEN" | jq .
|
|
;;
|
|
|
|
graphs)
|
|
# Helper to find your graph ID
|
|
curl -s "https://reflect.app/api/graphs" \
|
|
-H "Authorization: Bearer $REFLECT_TOKEN" | jq .
|
|
;;
|
|
|
|
*)
|
|
echo "Reflect API Helper"
|
|
echo ""
|
|
echo "Setup:"
|
|
echo " export REFLECT_TOKEN=\"your-access-token\""
|
|
echo " export REFLECT_GRAPH_ID=\"your-graph-id\""
|
|
echo ""
|
|
echo "Usage:"
|
|
echo " reflect.sh daily \"text\" [\"[[List Name]]\"] - Append to daily note"
|
|
echo " reflect.sh note \"subject\" \"markdown\" - Create a new note"
|
|
echo " reflect.sh link \"url\" \"title\" [\"desc\"] - Save a link"
|
|
echo " reflect.sh links - List saved links"
|
|
echo " reflect.sh books - List books"
|
|
echo " reflect.sh graphs - List your graphs (to find graph ID)"
|
|
;;
|
|
esac
|