Grants
Befehlszeile (CLI)
Ein nativer Befehlszeilen-Client für Grants. Eine Installationszeile.
Die Grants-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://granttool.de/xapi2/cli/install.sh | bash
1.2.8·Befehl: grantscli·Prüfsumme: 6d49ad4588…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 ~/.grantscli/credentials.json, Modus 0600).
grantscli 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 |
|---|---|
| derived_doc | grantscli derived_doc listgrantscli derived_doc getgrantscli derived_doc creategrantscli derived_doc updategrantscli derived_doc deletegrantscli derived_doc upsert |
| feedback_item | grantscli feedback_item listgrantscli feedback_item getgrantscli feedback_item creategrantscli feedback_item updategrantscli feedback_item deletegrantscli feedback_item upsert |
| feedback_point | grantscli feedback_point listgrantscli feedback_point getgrantscli feedback_point creategrantscli feedback_point updategrantscli feedback_point deletegrantscli feedback_point upsert |
| file | grantscli file listgrantscli file getgrantscli file creategrantscli file updategrantscli file deletegrantscli file upsert |
| folder | grantscli folder listgrantscli folder getgrantscli folder creategrantscli folder updategrantscli folder deletegrantscli folder upsert |
| grant | grantscli grant listgrantscli grant getgrantscli grant creategrantscli grant updategrantscli grant deletegrantscli grant upsert |
| lead | grantscli lead listgrantscli lead getgrantscli lead creategrantscli lead updategrantscli lead deletegrantscli lead upsert |
| loi | grantscli loi listgrantscli loi getgrantscli loi creategrantscli loi updategrantscli loi deletegrantscli loi upsert |
| review_note | grantscli review_note listgrantscli review_note getgrantscli review_note creategrantscli review_note updategrantscli review_note deletegrantscli review_note upsert |
| version_snapshot | grantscli version_snapshot listgrantscli version_snapshot getgrantscli version_snapshot creategrantscli version_snapshot updategrantscli version_snapshot deletegrantscli version_snapshot 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 `grantscli`, the CLI for the Grants app.Install:macOS/Linux: curl -fsSL https://granttool.de/xapi2/cli/install.sh | bashWindows PS: irm https://granttool.de/xapi2/cli/install.ps1 | iexSign in (required before any data command):grantscli login --token pat_… # personal access tokengrantscli login # interactive (token or email + password)Commands per model:grantscli derived_doc { list | get | create | update | delete | upsert }fields: --grant-id --kind --based-on-version --status --formats --latest-blob-id --latest-formatgrantscli feedback_item { list | get | create | update | delete | upsert }fields: --grant-id --source-type --who --subject --body --urgent --unread --status --due-dategrantscli feedback_point { list | get | create | update | delete | upsert }fields: --grant-id --feedback-item-id --chapter-key --kind --excerpt --suggestion --applied --applied-atgrantscli file { list | get | create | update | delete | upsert }fields: --name --kind --content --doc --grant-id --folder-id --is-root --blob-id --mime-type --size-bytes --sort-order --chapter-type --chapter-answers --ai-messages --import-status --import-gaps --import-atgrantscli folder { list | get | create | update | delete | upsert }fields: --name --grant-id --parent-folder-id --sort-ordergrantscli grant { list | get | create | update | delete | upsert }fields: --grant-type-key --title --description --funder --program --deadline --requested-amount --currency --status --compiler --root-file-id --tags --notes --color --intake-blob-id --intake-url --intake-extracted --import-status --import-started-at --import-finished-at --intake-extracted-by-source --intake-sources --awarded-amount --awarded-at --profile --team-size --baseline-scoregrantscli lead { list | get | create | update | delete | upsert }fields: --first-name --last-name --gender --company --position --fair-location --phone --email --linkedin --website --city --country --lead-status --note --tags --inferred-gender --inferred-country --inferred-domain --account-id --lead-source-id --last-contacted-atgrantscli loi { list | get | create | update | delete | upsert }fields: --grant-id --lead-id --partner-id --status --scope-months --exclusive --body --blob-idgrantscli review_note { list | get | create | update | delete | upsert }fields: --grant-id --chapter-key --who --role --body --resolved --resolved-atgrantscli version_snapshot { list | get | create | update | delete | upsert }fields: --grant-id --label --score --summary --snapshot --feedback-trigger --derived-keysOutput + 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://granttool.de/docs/types/<model>Full CLI reference: https://granttool.de/docs/cliTask: <describe what you want to do>
Beispiele
grantscli login --token pat_…grantscli 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: grant_id,Full Name,status# --map renames CSV headers to API field names; missing cells skipped.grantscli derived_doc 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.