Grants

Client-Bibliotheken

Direkt einsetzbare API-Wrapper für Grants in Python, TypeScript, JavaScript, Go, Java, Rust, C#, C++, PHP, Ruby, Kotlin, Swift, Dart, Elixir und Clojure.

Jede Bibliothek ist eine einzelne Quelldatei, die du auf dieser Seite herunterlädst und in dein Projekt legst. Die meisten Sprachen kommen ohne weitere Abhängigkeiten aus - die Datei nutzt nur die Standardbibliothek. Rust ist die einzige Ausnahme: Füge die beiden im Datei-Header genannten Crates (reqwest + serde_json) deiner Cargo.toml hinzu, fertig. Jeder von der HTTP-API von Grants bereitgestellte Endpunkt ist als typisierte Funktion gekapselt, benannt nach dem Datenmodell und der Operation - die Oberfläche spiegelt damit eins zu eins die REST-API. Die Authentifizierung läuft über dieselben persönlichen Zugriffstoken wie der Rest der API. Die Bibliotheken lassen sich direkt im eigenen Code-Repo übernehmen, prüfen und erweitern.

Download

Wähle deine Sprache und lade die einzelne Quelldatei herunter. Modulname für Grants: grants_client. Klassenname für sprachen mit explizitem Wrapper-Typ: GrantsClient.

Version: 0.3.13·Modul: grants_client·Modelle: 10
Tipps zum Einbinden je Sprache
  • PythonLege grants_client.py ins Paket; from grants_client import .... Reine Standardbibliothek (urllib.request / json / threading); setzt Python 3.8+ voraus.
  • TypeScriptLege grants_client.ts zu deinen TS-Dateien. Type-Check funktioniert mit jeder Kombination aus @types/node und DOM-Lib dank kleiner eingebauter Shims; zur Laufzeit wird fetch benutzt (Node 18+ / Browser).
  • GoLege grants_client.go in einen Ordner namens grants_client/, damit das package grants_client zum Import-Pfad passt.
  • JavaLege GrantsClient.java in einen Ordner namens grants_client/, passend zur package grants_client;-Zeile in der Datei. Setzt JDK 11+ voraus; nutzt nur java.net.http.
  • RustDatei als Modul einbinden (mod grants_client; in lib.rs bzw. main.rs) und die beiden im Datei-Header genannten Crates in die Cargo.toml aufnehmen: reqwest (mit den Features blocking,json) sowie serde_json.
  • C# / .NETLege GrantsClient.cs in einen beliebigen Ordner; die Datei deklariert namespace grants_client;. Setzt .NET 6+ voraus; nutzt nur HttpClient + System.Text.Json - keine NuGet-Pakete.
  • PHPrequire_once __DIR__ . '/grants_client.php' aus dem Bootstrap heraus, oder den Namespace grants_client\\ per Composer-PSR-4 autoloaden. Setzt PHP 8.0+ mit den Erweiterungen curl und json voraus (beide Standard).
  • Rubyrequire_relative 'grants_client' von beliebiger Stelle im Projekt. Die Wrapper-Klasse heisst GrantsClient::Client. Setzt Ruby 3.0+ voraus; reine Standardbibliothek (net/http, json, securerandom).
  • KotlinLege GrantsClient.kt in einen Ordner namens grants_client/, passend zur package grants_client-Zeile. Setzt Kotlin 1.9+ und JVM 11+ voraus; nur JDK.
  • SwiftLege GrantsClient.swift zu deinen anderen Swift-Dateien. Setzt Swift 5.7+ voraus (macOS 12 / iOS 15 / Linux mit FoundationNetworking).

Authentifizieren

Erstelle ein persönliches Zugriffstoken (PAT) im Integrationen-Menü und übergib es der Bibliothek zur Laufzeit. Jede Sprache bietet dieselben zwei Wege: ein explizites setToken(...), oder die Umgebungsvariable XCLIENT_TOKEN für CI / Skripte. Tokens werden als Authorization: Bearer ... mit jeder Anfrage gesendet und niemals geloggt.

from grants_client import set_token
set_token("pat_…")
# or, equivalently:
# export XCLIENT_TOKEN=pat_…

Bibliothek einsetzen

Lege die heruntergeladene Datei in deinem Projekt als grants_client.py (bzw. die Entsprechung deiner Sprache) ab und importiere die benötigten Funktionen. Jede Funktion heisst <model>_<op> (account_create, deal_list, lead_get, ...) und ruft den passenden HTTP-Endpunkt auf, inklusive Retry bei 429, exponentiellem Backoff und automatischem Beachten des Retry-After-Headers. Listen-Funktionen akzeptieren die üblichen Query-Parameter (limit, offset, sort, q sowie die für den Typ erlaubten Filter); get/update/delete-Funktionen erwarten die Datensatz-ID als erstes Argument.

from grants_client import derived_doc_list, derived_doc_get, derived_doc_create, derived_doc_update, derived_doc_delete
# Erste 20 Datensätze
page = derived_doc_list(limit=20, sort="-created_at")
print(page["data"], page["meta"]["has_more"])
# Anlegen + Lesen + Ändern + Löschen
created = derived_doc_create({"name": "Example"})
fresh = derived_doc_get(created["id"])
derived_doc_update(created["id"], {"name": "Updated"})
derived_doc_delete(created["id"])

Verfügbare Modelle

Jede Bibliothek liefert eine Funktion pro Operation und Modell. Die Liste unten ist die Eins-zu-eins-Spiegelung der HTTP-Endpunkte für diese App.

ModellFunktionen
derived_doc
derived_doc_listderived_doc_getderived_doc_createderived_doc_updatederived_doc_delete
feedback_item
feedback_item_listfeedback_item_getfeedback_item_createfeedback_item_updatefeedback_item_delete
feedback_point
feedback_point_listfeedback_point_getfeedback_point_createfeedback_point_updatefeedback_point_delete
file
file_listfile_getfile_createfile_updatefile_delete
folder
folder_listfolder_getfolder_createfolder_updatefolder_delete
grant
grant_listgrant_getgrant_creategrant_updategrant_delete
lead
lead_listlead_getlead_createlead_updatelead_delete
loi
loi_listloi_getloi_createloi_updateloi_delete
review_note
review_note_listreview_note_getreview_note_createreview_note_updatereview_note_delete
version_snapshot
version_snapshot_listversion_snapshot_getversion_snapshot_createversion_snapshot_updateversion_snapshot_delete

Umgebungsvariablen

VariableZweck
XCLIENT_TOKENPersönliches Zugriffstoken für alle API-Aufrufe.
XCLIENT_BASE_URLEingebettete Server-URL überschreiben (nur für Tests).

Analyse + Updates

Jeder Aufruf sendet ein Analyse-Event ans gleiche Dashboard wie die Web-UI (Operations-Name, Bibliotheksversion, OS - keine Feldwerte, keine Request-Bodies), damit das Team, das diese App betreibt, die Nutzung der Integration sieht. Die Daten werden sicher verarbeitet; ein Audit-Log aller dich betreffenden Events kann jederzeit beim Anbieter dieser App angefragt werden. Zusätzlich prüft die Bibliothek höchstens alle 24 Stunden auf eine neuere Version. In interpretierten Sprachen (Python, TypeScript unter Node, JavaScript unter Node, PHP, Ruby, Elixir) wird die Datei auf der Platte atomar ersetzt; der nächste Import lädt die neuen Bytes. In kompilierten Sprachen (Go, Java, Rust, C#, C++, Kotlin, Swift, Dart, Clojure) bleibt die Quelldatei unverändert - dort werden vorkompilierte Artefakte ausgeliefert, also stempelt der Versions-Probe nur einen Zeitstempel, den du beim Build sichtbar machen kannst. Mit XCLIENT_NO_AUTOUPDATE=1 lässt sich die Prüfung komplett abschalten.