b6180867ef2c50fbec3b0e77d48939c55239ef40
Agrarmonitor Connector
TypeScript MVP connector for Agrarmonitor with shared cookie persistence, optional AES-GCM cookie encryption, automatic login, retry after expired sessions, device registration checks, and customer detail extraction.
Login uses Agrarmonitor's redirect flow only: the connector loads /, extracts the nonce, and posts credentials to /redirect.php?id=benutzerverwaltung&action=login.
Installation
npm install
Build
npm run build
Example
import {
AesGcmCookieEncryptor,
FileCookieStore,
createAgrarmonitorClient,
} from 'agrarmonitor-connector';
const agrarmonitor = await createAgrarmonitorClient({
baseUrl: 'https://admin7.agrarmonitor.de',
apiToken: process.env.AGRARMONITOR_API_TOKEN,
username: process.env.AGRARMONITOR_USERNAME ?? '',
password: process.env.AGRARMONITOR_PASSWORD ?? '',
cookieStore: new FileCookieStore(
process.env.AGRARMONITOR_COOKIE_PATH ?? './data/agrarmonitor-cookies.json',
{
encryptor: process.env.AGRARMONITOR_ENCRYPTION_KEY
? new AesGcmCookieEncryptor(process.env.AGRARMONITOR_ENCRYPTION_KEY)
: undefined,
logger: console,
}
),
logger: console,
});
const freischaltung = await agrarmonitor.checkFreigeschaltet();
console.log(freischaltung.freigeschaltet);
const registrierung = await agrarmonitor.checkRegistriert();
console.log(registrierung.registriert);
const response = await agrarmonitor.http.get('/kunden/detail/123');
console.log(response.status);
Cookie Persistence
FileCookieStore keeps one shared CookieJar per file path inside the Node process. Multiple connector instances that use the same cookie file therefore reuse the same session and every successful request saves the latest cookies back to disk.
The store can read both the connector format and the older Telefonbuch cookie-array format.
Useful Methods
checkFreigeschaltet()checks whether Agrarmonitor redirects to/freischaltung/.checkRegistriert()checks whether the page still containsNeues Gerät registrieren.registerDevice({ agrarmonitorId, pcName })loads/freischaltung/, extracts the nonce, and posts the registration request.fetchCustomers()loads customers fromhttps://api.agrarmonitor.de/v1/kunden.getKunden2()loads all customer pages and returns normalized customer/supplier fields.getCustomerById(id)loads one customer from the token-based Agrarmonitor API.eingangsrechnungenLivesearch(suchstring)searches invoice files and enriches matching Eingangsrechnungen with edit/detail metadata.eingangsrechnungVorhanden(suchstring)checks whether invoice file search has rows.eingangsrechnungImDateieingangVorhanden(suchstring)checks whether file inbox search has rows.getRechnungsdaten(rechnungId)reads editable invoice fields.setRechnungsdaten(rechnungId, daten)updates editable invoice fields.setLieferscheinNummer(rechnungId, nummer)updates only the delivery note number.setEingangsdatum(rechnungId, datum)updates the received date.getMaschinenKategorien()reads/maschinen/kategorienand returns ID, name, tractor flag, and mobile visibility.getMaschinen(gruppenId, suchstring?)reads/module/maschinen/livesearch.phpand returns ID, number, name, license plate, and active flag.getFirmen()reads/einstellungenand returns company ID and description.getArtikelEinheiten()reads/artikel/einheitenand returns unit ID, description, and short label.getArtikelKategorien()reads/artikel/kategorienand returns product group ID and name.getArtikel(artikelGruppe, suchstring?)reads/module/artikel/livesearch.phpand returns article ID, number, and description.saveSession()explicitly persists the current cookie jar.
Description
Languages
TypeScript
94.2%
JavaScript
5.8%