Zoho.ts - eine Open-Source Typescript-Library für die Zoho Finance Suite

Jannik Zinkl
Jannik Zinkl
  • 2023-02-14
  • 8 min to read
Blog Images

Bei der Integration von Zoho Inventory und Zoho Books in einen Kundenstack haben wir festgestellt, dass wir eine Typescript-Bibliothek für die API-Endpunkte benötigen. Nachdem wir über ein Jahr lang mit der Bibliothek in der Produktion gearbeitet hatten, haben wir beschlossen, sie als Open-Source Projekt zu veröffentlichen, in der Hoffnung, Entwicklern viele Kopfschmerzen zu ersparen. Klick hier, um direkt zum Github Repo der Bibliothek zu gelangen

Die Zoho Finance Suite

Die Zoho Corporation betreibt die Zoho Finance Suite, die aus einer Sammlung verschiedener SaaS-Geschäftsanwendungen besteht. Die Zoho Corporation selbst hat ihren Sitz in Indien und ihre Softwarelösungen werden rund um den Globus eingesetzt. Es ist erwähnenswert, dass sie ein sehr reichhaltiges Portfolio an spezialisierten Geschäftsanwendungen zu einem wettbewerbsfähigen Preis anbieten.

Die am häufigsten verwendeten Anwendungen der Zoho Finance Suite sind Zoho Books, Zoho Inventory und Zoho Invoice. Diese Anwendungen umfassen gut dokumentierte APIs, so dass sie in den bestehenden Technologie-Stack eines Unternehmens integriert werden können. Sie scheinen auf der gleichen Technologie zu laufen, da ihre REST-API-Endpunkte einander sehr ähnlich sind. Diese Tatsache hat uns veranlasst, eine generische Bibliothek für diese drei Dienste zu erstellen.

Installation und Konfiguration der Bibliothek

Die Typescript-Bibliothek ist bei NPM veröffentlicht: https://www.npmjs.com/package/@trieb.work/zoho-ts

Abhängig vom benutzen Paketmanager kann die Lib einfach installiert werden:

npm i @trieb.work/zoho-ts

Oder mit Yarn:

yarn i @trieb.work/zoho-ts

Um die Bibliothek auf dem Server zu verwenden, muss eine neue Instanz der Bibliothek erstellt werden:

import { Zoho, ZohoApiClient } from "@trieb.work/zoho-ts";

const zoho = new Zoho(
    await ZohoApiClient.fromOAuth({
      orgId: "243546",
      dc: ".com", # Ihr Rechenzentrum - z.B. .com, .eu
      apiFlavour: "invoice", # Wählen sie hier, ob sie Books, Invoice oder Inventory verwenden möchten
      scope: "ZohoInvoice.fullaccess.all" # Optional
      client: {
        id: "",
        secret: "",
      },
    }),
  );

Hier sind mehrere Konfigurationsoptionen möglich. Zoho-Tenants können sich in verschiedenen Rechenzentren befinden. Es muss das richtige ausgewählt werden, in dem sich dein Tenant befindet.

Authentifizierung mit der Zoho API

Zoho verwendet die OAuth2-Technologie zur Authentifizierung von Anfragen an die API und die Daten des Tenants. Da die Bibliothek für den Einsatz auf einem Server konzipiert ist, haben wir einen OAuth-Client integriert, der die Token-Erstellung übernimmt. Im Moment muss die "Self-Client"-Methode verwendet werden, bei der eine Client-ID und ein Client-Secret erstellt werden, die die Bibliothek verwendet, um ein kurzlebiges Token zu erstellen, mit dem alle folgenden Anfragen an die Zoho-API authentifiziert werden. Möglicherweise fügen wir hier neue Funktionen hinzu, um andere OAuth-Flows zu unterstützen, die mehr Benutzerinteraktion und Aktualisierungs-Tokens erfordern.

Unterstützung und Github-Repository

Der Quellcode, die Dokumentation und die geschriebenen Tests können im öffentlichen Github-Repository der Bibliothek gefunden werden. Das Plugin kann geforked werden, um weitere Funktionen hinzuzufügen oder um Probleme direkt selbst zu lösen. Solltet ihr interessante Änderungen gemacht haben die ihr der Community zurückspielen wollt akzeptieren wir sehr gerne eure Pull-Requests.

Jannik Zinkl
Jannik Zinkl

Entrepreneur & Cloud Architect with a passion for Climate Tech