Friendship Tracker
Befehlszeile (CLI)
Ein nativer Befehlszeilen-Client für Friendship Tracker. Eine Installationszeile.
Die Friendship Tracker-CLI wird automatisch aus denselben Modellen erzeugt wie die HTTP-API - jeder mit curl erreichbare Endpunkt ist hier auch ein Unterbefehl. Das Skript ist eine einzelne, in sich geschlossene Python-Datei (kein pip install), prüft täglich auf Updates und authentifiziert sich mit denselben Bearer-Tokens wie der Rest der API.
Installation
Eine Zeile, eine Datei. Das Skript wird in deinem Home-Verzeichnis abgelegt - kein pip install, kein systemweiter Eingriff. Wähle das passende Betriebssystem über die Tabs.
curl -fsSL https://friendship-tracker.com/xapi2/cli/install.sh | bash
1.2.8·Befehl: friendshipcli·Prüfsumme: e7e3a48b71…Anmelden
Jeder Befehl außer login / version / update braucht ein gültiges Token. Zwei Wege: ein persönliches Zugriffstoken (PAT) aus dem Integrationen-Menü (empfohlen für Skripte und CI) oder interaktiv per E-Mail und Passwort (gespeichert als Sitzungstoken unter ~/.friendshipcli/credentials.json, Modus 0600).
friendshipcli login --token pat_…
Befehle
Jedes Datenmodell ist eine Untergruppe. Klicke auf einen Modellnamen, um die zugehörige Detailseite zu öffnen. Die verfügbaren Operationen entsprechen denen der HTTP-API.
| Modell | Befehle |
|---|---|
| activity | friendshipcli activity listfriendshipcli activity getfriendshipcli activity createfriendshipcli activity updatefriendshipcli activity deletefriendshipcli activity upsert |
| contact | friendshipcli contact listfriendshipcli contact getfriendshipcli contact createfriendshipcli contact updatefriendshipcli contact deletefriendshipcli contact upsert |
| conversation | friendshipcli conversation listfriendshipcli conversation getfriendshipcli conversation createfriendshipcli conversation updatefriendshipcli conversation deletefriendshipcli conversation upsert |
| custom_field | friendshipcli custom_field listfriendshipcli custom_field getfriendshipcli custom_field createfriendshipcli custom_field updatefriendshipcli custom_field deletefriendshipcli custom_field upsert |
| gift | friendshipcli gift listfriendshipcli gift getfriendshipcli gift createfriendshipcli gift updatefriendshipcli gift deletefriendshipcli gift upsert |
| journal_entry | friendshipcli journal_entry listfriendshipcli journal_entry getfriendshipcli journal_entry createfriendshipcli journal_entry updatefriendshipcli journal_entry deletefriendshipcli journal_entry upsert |
| life_event | friendshipcli life_event listfriendshipcli life_event getfriendshipcli life_event createfriendshipcli life_event updatefriendshipcli life_event deletefriendshipcli life_event upsert |
| note | friendshipcli note listfriendshipcli note getfriendshipcli note createfriendshipcli note updatefriendshipcli note deletefriendshipcli note upsert |
| pet | friendshipcli pet listfriendshipcli pet getfriendshipcli pet createfriendshipcli pet updatefriendshipcli pet deletefriendshipcli pet upsert |
| relationship | friendshipcli relationship listfriendshipcli relationship getfriendshipcli relationship createfriendshipcli relationship updatefriendshipcli relationship deletefriendshipcli relationship upsert |
| reminder | friendshipcli reminder listfriendshipcli reminder getfriendshipcli reminder createfriendshipcli reminder updatefriendshipcli reminder deletefriendshipcli reminder upsert |
--filter name=Foo (wiederholbar), --all (auto-paginieren), --fields id,name (Antwort projizieren), --cache N (lokaler Cache, N s), --file p.json / --csv p.csv / --stdin (Bulk-Eingabe; Arrays + CSV-Zeilen), --continue-on-error (Bulk-Fehler nicht stoppen, Exit 1 bei Fehler), --dry-run (Anfrage vorher zeigen), --idempotency-key K / --auto-idempotency (sicheres Wiederholen), --retry N + --backoff exp (429/5xx wiederholen), --format json|ndjson|table (Ausgabeformat), --stderr-json (maschinenlesbare Fehler), --profile NAME (Konto wechseln).Mit einer KI nutzen
Modelle wie Claude, ChatGPT oder Gemini schreiben dir Skripte, die diese CLI direkt verwenden - sie brauchen nur den Kontext unten. Kopiere den Block in deinen Chat und beschreibe, was du erreichen willst.
Help me write scripts using `friendshipcli`, the CLI for the Friendship Tracker app.Install:macOS/Linux: curl -fsSL https://friendship-tracker.com/xapi2/cli/install.sh | bashWindows PS: irm https://friendship-tracker.com/xapi2/cli/install.ps1 | iexSign in (required before any data command):friendshipcli login --token pat_… # personal access tokenfriendshipcli login # interactive (token or email + password)Commands per model:friendshipcli activity { list | get | create | update | delete | upsert }fields: --parent-id --kind --summary --description --occurred-at --locationfriendshipcli contact { list | get | create | update | delete | upsert }fields: --name --nickname --pronouns --email --phone --secondary-email --secondary-phone --company --job-title --address-line --city --country --website --linkedin --twitter --birthday --anniversary --gender --how-we-met --food-prefs --allergies --last-contacted-at --stay-in-touch-frequency --stay-in-touch-topic --notes --tags --favorite --avatar-blob-id --colorfriendshipcli conversation { list | get | create | update | delete | upsert }fields: --parent-id --channel --summary --content --occurred-at --sentiment --duration-minutesfriendshipcli custom_field { list | get | create | update | delete | upsert }fields: --parent-id --label --value --kind --iconfriendshipcli gift { list | get | create | update | delete | upsert }fields: --parent-id --title --occasion --status --occurred-at --price --currency --url --notesfriendshipcli journal_entry { list | get | create | update | delete | upsert }fields: --title --body --mood --occurred-at --tagsfriendshipcli life_event { list | get | create | update | delete | upsert }fields: --parent-id --kind --title --occurred-at --description --location --recurringfriendshipcli note { list | get | create | update | delete | upsert }fields: --parent-id --body --pinnedfriendshipcli pet { list | get | create | update | delete | upsert }fields: --parent-id --name --species --species-other --breed --born-at --color --notesfriendshipcli relationship { list | get | create | update | delete | upsert }fields: --parent-id --target-id --kind --label --since --notesfriendshipcli reminder { list | get | create | update | delete | upsert }fields: --parent-id --message --due-date --completedOutput + flags:- stdout is JSON (one object, or {data:[...], meta:{...}} on list).- errors go to stderr; non-zero exit (3=auth, 5=not found, 6=validation, 7=conflict, 8=rate-limited).- --filter name=Foo (friendly key, repeatable) on `list`.- --all auto-paginates; --fields id,name projects; --cache N caches list/get for N s.- writes accept --json '{...}', --file path.json (arrays = bulk), --stdin, or --csv path [--map k=COL,…].- upsert needs --unique <field>; --dry-run previews any write.- --retry N --backoff exp survives 429/5xx; --stderr-json gives machine-readable errors.Field schemas + constraints per model: https://friendship-tracker.com/docs/types/<model>Full CLI reference: https://friendship-tracker.com/docs/cliTask: <describe what you want to do>
Beispiele
friendshipcli login --token pat_…friendshipcli whoami
Rezepte
End-to-end Snippets für die Workflows, die Leute am häufigsten brauchen. Auswählbar über die Tabs.
# items.csv has columns: parent_id,Full Name,status# --map renames CSV headers to API field names; missing cells skipped.friendshipcli activity create \--csv items.csv \--map name=Full Name \--continue-on-error \--retry 3 --backoff exp
Umgebungsvariablen
| Variable | Zweck |
|---|---|
| XCLI_NO_AUTOUPDATE | Tägliche Versionsprüfung und Selbst-Update überspringen. |
| XCLI_NO_TELEMETRY | Anonyme CLI-Nutzungs-Analyse überspringen. |
| XCLI_BASE_URL | Eingebettete Server-URL überschreiben (nur für Tests). |
| XCLI_TOKEN | PAT nur für diesen Aufruf nutzen, ohne ihn zu speichern. |
Telemetrie + Auto-Update
Die CLI sendet pro Befehl ein anonymes Analyse-Event (Befehlsname, Version, OS - keine Request-Bodies, keine Feldwerte), damit das Team, das diese App betreibt, die Nutzung im gleichen Dashboard wie die Web-UI sieht. Die Daten werden sicher verarbeitet; ein Audit-Log aller dich betreffenden Events kann jederzeit beim Anbieter dieser App angefragt werden. Wir empfehlen ausdrücklich, die Telemetrie aktiviert zu lassen - so werden Stabilitäts-probleme sichtbar und das Team kann Verbesserungen priorisieren, die dich betreffen. Abschalten mit XCLI_NO_TELEMETRY=1. Zusätzlich prüft die CLI höchstens alle 24 Stunden auf eine neuere Version und ersetzt sich selbst; XCLI_NO_AUTOUPDATE=1 deaktiviert das.