Das HookContext-Interface bietet ein zentrales Objekt, um Zugang zu verschiedenen Attributen und Paketen zu erhalten. Es wird als context in den Hooks des tibi-server genutzt und stellt wichtige Funktionalitäten zur Verfügung, die zur Manipulation der Daten und Abläufe in den HTTP-Methoden und Schritten der API benötigt werden.
Das HookContext-Interface setzt sich aus mehreren Schnittstellen zusammen, darunter GetHookData, GetHookGetOnlyData, PostHookData, JobData, request und mehrere third-party Pakete. Hierbei sind mit ausnahme von den request und den third-party-paketen attributen alle attribute direkt auf dem context Objekt vorhanden. Request ist eine funktion die ihre Objekte zurückgibt und ist somit rechenaufwendig. Daher ist es ratsam bei mehrfacher nutzung des request attributs, sich den Wert in einer variable zwischen zu speichern. Die Attribute auf den paketen werden über context.paketname.attribut aufgerufen.
## GetHookData
Das GetHookData-Interface enthält Attribute, die spezifisch für die Manipulation von GET-Anfragen in den Hooks sind:
-`filter`: Ein Filter-Objekt, das die Anfragebedingungen für die zu abrufenden Dokumente enthält.
-`selector`: Ein Selektor-Objekt, das festlegt, welche Felder in den zurückgegebenen Dokumenten enthalten sein sollten.
-`offset`: Ein numerischer Wert, der den Startpunkt für die Rückgabe von Dokumenten festlegt.
`data`: Das Dokument oder die Daten, die gesendet wurden. Dies ist ein CollectionDocument-Objekt und wird in die Datenbank geschrieben. Will man den Datenbankeinträge im hook also modifizieren, so muss dieses Objekt modifiziert werden. Mann muss dieses Objekt idealerweise also einfach modifiziert in dem HookResponse data attribut abspeichern, dies wird nämlich zwischen allen Hooks immer ausgetauscht. Demzufolge ist das veränderte data Objekt dann auch so im nächsten Hook verfügbar.
-`debug`: Stellt Funktionen zum Debuggen zur Verfügung (DebugPackage).
-`response`: Bietet Funktionen zur Manipulation der HTTP-Antwort (ResponsePackage).
-`user`: Bietet Funktionen zum Arbeiten mit Benutzern (UserPackage).
-`bcrypt`: Stellt Funktionen zum Hashen und Überprüfen von Passwörtern zur Verfügung (BcryptPackage)`
-`jwt`: Bietet Funktionen zum Arbeiten mit JSON Web Tokens (JwtPackage).
-`charset`: Bietet Funktionen zur Arbeit mit Zeichensätzen (CharsetPackage).
-`image`: Bietet Funktionen zur Arbeit mit Bildern (ImagePackage).
-`xml`: Stellt Funktionen zum Arbeiten mit XML-Daten zur Verfügung (XmlPackage).
-`cookie`: Bietet Funktionen zum Arbeiten mit Cookies (CookiePackage).
-`pdf`: Bietet Funktionen zum Arbeiten mit PDF-Dokumenten (PdfPackage).
-`crypt`: Bietet Funktionen für Kryptografie (CryptoPackage).
-`json`: Bietet Funktionen zum Arbeiten mit JSON-Daten (JsonPackage).
Diese Pakete erweitern die Möglichkeiten des Context Objektes und ermöglichen es, eine Vielzahl von Aufgaben auszuführen. Für detaillierte Informationen zu jedem Paket, siehe die spezifische Dokumentation des jeweiligen Pakets.