← Agro GPS

API, webhooks og MCP: forbind dit ERP med journalen

Hvis du styrer bedriften med et ERP, et regneark over omkostninger eller din rådgivers program, giver det ingen mening at taste opgaverne ind to gange. Her er dokumentationen til at hente journalen, omkostningerne og status for overholdelse ud udefra, og til at lægge opgaver ind fra det system, du allerede bruger.

Basen er https://agrogps-api.fly.dev/api/v1. Den har været i produktion siden 17. september 2026. Den svarer altid i JSON, også ved fejl.

To måder at identificere sig på

Hvem kalderHeaderHvad den kan
Appen eller webbenAuthorization: Bearer <sesión>Alt, også at oprette og tilbagekalde nøgler
Et eksternt systemX-API-Key: agk_…Læse, eller læse og skrive alt efter nøglens omfang

Nøglen oprettes én gang fra din session og vises kun én gang: bagefter gemmer vi kun dens hash. Mister du den, tilbagekalder du den og opretter en ny. En skrivebeskyttet nøgle, der forsøger at skrive, får 403 AUT_004. Nøgler kan ikke oprette eller slette andre nøgler eller webhooks: det kræver altid en persons session.

curl -X POST https://agrogps-api.fly.dev/api/v1/api-keys \
  -H "Authorization: Bearer $SESION" \
  -H "Content-Type: application/json" \
  -d '{"name":"ERP Sage","scope":"read"}'

Hvad du kan læse

EndpointReturnerer
GET /farmsNøgleindehaverens bedrifter, med rolle
GET /sync/entries?farm_id=…&since=0Alle opgaver med alle registreringsfelter, pagineret med next
GET /groups/:id/overviewGruppens oversigt: opgaver, omkostning, indtægter, margin, behandlede hektar og afgrøde pr. bedrift
GET /advisor/portfolioRådgiverens portefølje: hvilke bedrifter er ajour, og hvilke er ikke
GET /advisor/farms/:id/pendingDe felter, der mangler at blive udfyldt, opgave for opgave
GET /notebook/entries/:id/historyHvem ændrede hvad og hvornår i en opgave

Med en skrivenøgle kan du også registrere opgaver med POST /sync/entries, med samme body som appen bruger. Synkroniseringen går efter since, så en natlig kørsel kun henter det, der er ændret.

Kom gratis i gang

Signerede webhooks

I stedet for at spørge hvert femte minut giver vi dig besked. Du registrerer en offentlig https-URL, og vi sender en besked, når der sker noget på en bedrift, hvor du er ejer eller ansvarlig.

HændelseHvornår den udløses
entry.pushedOpgaver synkroniseres, og mindst én bliver accepteret
entry.reviewedEn rådgiver eller ejeren godkender eller markerer en opgave
webhook.testDu trykker på test

Hver levering har X-Agro-Event, X-Agro-Timestamp i Unix-sekunder og X-Agro-Signature med HMAC-SHA256 af "<timestamp>.<cuerpo>". Tjek begge dele: signaturen, og at uret ikke er mere end fem minutter ved siden af.

import hmac, hashlib, time

ts = request.headers["X-Agro-Timestamp"]
assert abs(time.time() - int(ts)) < 300
esperada = "sha256=" + hmac.new(
    secreto.encode(), ts.encode() + b"." + cuerpo, hashlib.sha256
).hexdigest()
ok = hmac.compare_digest(esperada, request.headers["X-Agro-Signature"])

Leveringsreglerne, sagt klart, så du ikke bliver overrasket: ét forsøg, seks sekunders ventetid og ingen genforsøg. Vi følger ikke omdirigeringer og afviser private adresser, link-lokale adresser og cloud-metadataadresser, både når URL'en registreres, og når DNS slås op ved hver levering. Har dit system brug for garantier, så brug webhooken som besked og GET /sync/entries med since som sikkerhedsnet: beskeden er en høflighed, API'et er sandheden.

MCP til AI-assistenter

Det samme API er tilgængeligt som MCP-server, den protokol assistenter bruger til at forbinde sig med værktøjer. Du kan spørge en assistent om fx hvilke bedrifter der er bagud, hvad sæsonen har kostet, eller hvad der mangler før en kontrol.

{ "mcpServers": { "agro-gps": {
  "command": "npx", "args": ["-y", "agro-gps-mcp"],
  "env": { "AGROGPS_API_KEY": "agk_…" } } } }

Tilgængelige værktøjer: list_farms, list_entries, entry_history, list_groups, group_overview, advisor_portfolio, advisor_pending og record_entry. Det sidste virker kun med en skrivenøgle, markeres i historikken som skrevet via API og sender aldrig noget til myndighederne.

Hvorfor API'et ikke kan bruges til at snyde

Et API oven på en registrering med juridisk værdi skal kunne tåle at blive set efter i sømmene. I Spanien tillader RD 1054/2022 at føre journalen i ethvert IT-system, der opfylder kravene i bilag II og kan udveksle data med SIEX, og loven gør det klart, at det er ejeren og ikke programmet, der står inde for oplysningerne. Vores del er integriteten, og den ligger i koden, i alle lande.

Hvad nogen kunne forsøgeHvad API'et gør
Registrere i dag med en dato for måneder sidenHver opgave gemmer den angivne dato og den faktiske ankomst til serveren, og historikken noterer antal dages forsinkelse
Registrere med en fremtidig datoAfvises, hvis den ligger mere end 24 timer ude i fremtiden
Skrive uden en person bagEnhver opgave har en forfatter, og dem der kommer ind via nøgle, markeres med nøglens præfiks
Slette det, der er i vejenIntet slettes: sletninger er gravsten med dato
Indsende til myndighederne automatiskOfficiel indsendelse kræver en persons session med tilladelse: en nøgle får 403 SIE_403

Officiel indsendelse findes i dag kun i Spanien, og den afventer godkendelse region for region. I Danmark forbereder Agro GPS den årlige indberetning til SJI, men indsendelsen fra appen er endnu ikke i produktion. Via API'et læser og skriver du journalen.

Fejl

Altid {"code":"INT_NNN","message":"…"}, aldrig en stack trace. Dem du oftest vil se: AUT_003 ugyldig nøgle, AUT_004 skrivebeskyttet nøgle, AUT_429 for mange forsøg, AUT_503 godkendelse utilgængelig (ikke det samme som en forkert nøgle: prøv igen), INT_003 URL der ikke er https, INT_403 handling der kræver en session, INT_404 nøgle eller webhook der ikke er din.

Sådan får du en nøgle

API'et følger med virksomheds- og rådgiverplanerne. Har du allerede en konto, opretter du nøglen i selve appen. Overvejer du integrationen, før du køber, så skriv til support@agrogps.eu, fortæl hvilket system du vil forbinde, så giver vi dig testadgang. Dokumentationen er offentlig og gratis: vi vil hellere have, at du ser den, før du betaler.

Kom gratis i gang

Ofte stillede spørgsmål

Kan jeg føre hele journalen fra mit ERP uden at åbne appen? Ja til at registrere og læse. Nej til officiel indsendelse til myndighederne, som kræver en persons session med tilladelse til at indsende. Det er et bevidst valg: den handling har juridiske konsekvenser og må ikke udløses af en automatisk proces.

Er dataene mine? Ja. Den fulde eksport er altid gratis, også hvis du opsiger, og via API'et får du præcis det samme, som du ser på skærmen, inklusive historik og ændringsspor.

Er der en grænse for kald? Der er ingen offentliggjort kvote for normal brug fra et ERP. Test af en webhook er begrænset til tyve gange pr. bruger og IP hvert tiende minut, så ingen bruger funktionen til at sende trafik.

Hvad sker der, hvis I ændrer API'et? Versionen står i URL'en. Så længe v1 er udgivet, fjerner vi ingen felter og ændrer ikke betydningen af dem, der findes; nyt bliver tilføjet. Hvis der en dag kommer en v2, vil de to leve side om side.

Ligger MCP-serveren på npm? Endnu ikke. I dag køres den fra repositoriet; udgivelsen er ikke besluttet endnu. Konfigurationen ovenfor er den, der vil virke den dag, den udgives.

Kan en rådgiver med mange kunder bruge det? Det er det, advisor/portfolio er til: ét kald fortæller, hvilke bedrifter der er ajour, og hvilke der har ufuldstændige opgaver, uden at gå ind i dem én for én.