Übersicht
Sie senden die Geometrie einer Parzelle, die Entwaldungsanalyse startet automatisch, und Sie lesen das Ergebnis als JSON und laden den Parzellenbericht als PDF. Ein Artikel oder Lieferant ist dafür nicht nötig — eine Parzelle mit Rohstoffgruppe genügt.Berechtigungen
Schlüsselmechanismus, Basis-URL und die allgemeinen Statuscodes stehen in der Einführung; wie Sie einen Schlüssel anlegen, steht unter Einstellungen → API-Schlüssel. Parzellen gibt es nur im EUDR-Modul.plots:write deckt alles ab; plots:read genügt, um das Ergebnis zu lesen und den
Bericht herunterzuladen.
In einem Kunden-Workspace antwortet der Bericht mit
403 und EUDR compliance module is not enabled,
wenn das EUDR-Modul für den Benutzer, für den der Schlüssel handelt, nicht aktiviert ist
(persönlicher Schlüssel: sein Inhaber; Unternehmensschlüssel: der ranghöchste aktive Benutzer des
Workspace). Das Ergebnis-JSON hat diese Prüfung nicht.Parzelle anlegen
POST /api/v1/plots legt eine Parzelle an und startet ihre Analyse. Alle Felder stehen in der
Endpunkt-Referenz; für eine Integration wichtig:
geojsonist Pflicht (siehe Geometrie).commodityGroupist Pflicht, wenn Sie keinesupplierArticleIdssenden: eine voncattle,cocoa,coffee,oil_palm,rubber,soya,wood. Die API akzeptiert außerdemnon_relevant(steht in der Fehlermeldung); für eine Parzelle, die analysiert werden soll, nicht senden. MitsupplierArticleIdswird die Gruppe dann aus den Artikeln abgeleitet.- Bei
woodistspeciesPflicht — je EintragcommonNameundscientificName. - Tragen Sie Ihre eigene Parzellenreferenz in
nameein (siehe Idempotenz). country(ISO 3166-1 Alpha-2, z.B.BR): Ohne Land (oder mit einem nicht auflösbaren Wert) greift das Überspringen für Länder mit geringem Risiko nie; die Parzelle wird immer analysiert.
Geometrie
- Erlaubt sind
Polygon,MultiPolygon,PointundMultiPoint— als bloße Geometrie oder alsFeature. Koordinaten in WGS84, Reihenfolge[Längengrad, Breitengrad]; eine Höhenangabe (dritter Wert) wird angenommen, aber nicht gespeichert. Koordinaten außerhalb von Längengrad ±180 / Breitengrad ±90 werden abgelehnt; es wird nichts gespeichert. - Eine Anfrage legt eine Parzelle an. Eine
FeatureCollectionwird abgelehnt — senden Sie jedes Feature als eigene Anfrage. Andere Typen (LineString,GeometryCollection, …) werden ebenfalls abgelehnt. - Ist
sizeangegeben, ist einPointoderMultiPointnur bis 4 ha zulässig (20.000 ha, wenncommodityGroupcattleist); darüber verlangt die EUDR ein Polygon. Ohnesizegibt es keine Flächenprüfung.
Qualitätsprüfungen
Vor dem Speichern führt die API dieselben Geometrieprüfungen durch wie der Import in der App und speichert das Ergebnis:
Wird ein Loch entfernt – auch eines, das erst die Reparatur einer Selbstüberschneidung einschließt –,
wird die ausgeschlossene Fläche Teil der Parzelle: Die Parzelle wird größer. Die API vertauscht
Breiten- und Längengrad nie. Die Antwort beim Anlegen nennt die Codes oben in
warnings
([{ "code": … }]); Rundung, entfernte Höhenangabe, entfernte doppelte Punkte sowie geschlossene oder
umgedrehte Ringe werden nicht genannt. Bei einer deduplizierten Antwort ist warnings immer leer, weil
diese Anfrage nichts gespeichert hat.
Idempotenz
Senden Sie dieselbe Parzelle erneut — gleichername, gleiches country, gleiche Geometrie (verglichen nach den Qualitätsprüfungen) und
gleiche supplierArticleIds —, legt die API keine zweite Parzelle an und startet keine zweite
Analyse; sie antwortet mit der gespeicherten Parzelle und "deduplicated": true. Name und Land werden
ohne Rücksicht auf Groß-/Kleinschreibung, Leerzeichen am Anfang und Ende sowie mehrfache Leerzeichen
verglichen. Andere Felder einer Wiederholung, etwa commodityGroup oder size, werden nicht
übernommen. Die Antwort enthält "updated": true, wenn Erzeuger, Produktionsdaten oder Holzarten der
Wiederholung übernommen wurden, sonst false; wurde eine neue Parzelle angelegt, fehlt das Feld.
Auch die Wiederholung einer Parzelle, die vor Einführung dieser Prüfungen gespeichert wurde, wird
erkannt: Verglichen wird zusätzlich die Geometrie genau so, wie sie gesendet wurde.
Geometrie prüfen, ohne eine Parzelle anzulegen
POST /api/v1/plots/validate nimmt denselben Body wie das Anlegen und führt dieselben Prüfungen
durch, schreibt aber nichts — keine Parzelle, keine Analyse (Probelauf). plots:read genügt, und
commodityGroup ist optional. Eine Anfrage, die das Anlegen mit einem code ablehnen würde, erhält
200 mit valid: false und diesem Code; ein Body, der kein JSON ist, erhält 400. valid sagt, ob
das Anlegen die Anfrage annehmen würde, abgesehen von den unten unter „Nicht geprüft” genannten
Punkten. Für ein Polygon mit einem Loch, mit 6 Nachkommastellen geschrieben:
geometry ist die Geometrie, die das Anlegen speichern würde, measuredAreaHa ihre Fläche — 3,1 ha
statt der 2,68 ha des Polygons mit Loch; null bei Punkten. Bei valid: false enthält errors den code und die message,
mit denen das Anlegen antworten würde, geometry und measuredAreaHa sind null, und precision ist
null, wenn die Anfrage abgelehnt wurde, bevor die Genauigkeit gemessen war. Der Probelauf gibt der
Flächengrenze für Punkte und einer ungültigen size einen Code (plot_point_area_too_large,
plot_size_invalid); das Anlegen antwortet darauf ohne Code. Nicht geprüft wird, ob
commodityGroup ohne supplierArticleIds fehlt (das Anlegen antwortet mit
plot_commodity_group_required), ob die supplierArticleIds zu Ihrem Unternehmen gehören und ob
dieselbe Parzelle schon existiert.
Status abfragen
Fragen Sie alle 15 bis 30 Sekunden ab, solange der Status
pending oder in_progress ist. Die
App setzt für diese Endpunkte kein Rate-Limit je Schlüssel.
Ist die Analyse failed oder skipped, können Sie die Parzelle in der App über Neu analysieren
erneut analysieren lassen (siehe Parzellen verwalten). Nach Neu
analysieren behält der Status seinen bisherigen Wert, bis die Analyse startet.
Ergebnis lesen
analysis enthält das zuletzt gespeicherte Ergebnis. Es ist null, wenn nie eines gespeichert
wurde oder nachdem die Geometrie geändert wurde. Während eine erneute Analyse läuft (in_progress)
oder nachdem eine erneute Analyse fehlgeschlagen ist, kann es noch das vorherige Ergebnis enthalten —
vergleichen Sie assessedAt. Die Texte sind Englisch und wortgleich mit dem Parzellenbericht.
riskLevel-Werte können hinzukommen; behandeln Sie einen unbekannten Wert als prüfbedürftig.
Die Namen in evidence[].dataset sind stabil (JRC GFC 2020, Hansen GFC, GFW alerts,
JRC TMF AnnualChange und JRC GFT 2020 nur bei wood); measurementStatus, observation und
relevance sind für Menschen gedacht, ihr Wortlaut kann sich ändern — werten Sie sie nicht
maschinell aus.
Risikostufen
Die bisherige Kennzahl
deforestationRiskResult ist 0 niedrig (steht auch bei exempt), 1 hoch,
2 mittel oder null ohne Ergebnis (pending, skipped, failed einschließlich INVALID);
während einer erneuten Analyse oder nach einer fehlgeschlagenen erneuten Analyse kann sie noch den
vorherigen Wert enthalten. Maßgeblich für die Auswertung sind analysisStatus und analysis.
Parzellenbericht (PDF)
GET /api/v1/plots/{id}/report liefert den Parzellenbericht als PDF-Anhang. Er ist Englisch und
enthält dieselben Nachweiszeilen wie analysis.evidence. Der Dateiname ist plot-report-<name>.pdf;
jedes Zeichen außer Buchstaben, Ziffern, _ und - wird zu _ (plot-report-plot.pdf ohne Namen).
Fehlercodes
Abgelehnte Anfragen legen nichts an. Der Body enthälterror und, bei den Fällen unten, einen
maschinenlesbaren code:
plot_geometry_too_many_members, plot_geometry_bbox_spread_too_wide und
plot_geometry_area_too_large enthalten limit und actual in derselben Einheit (Teile, Grad,
Hektar); teilen Sie in mehrere Parzellen auf. Bei plot_geometry_too_many_vertices vereinfachen Sie
die Geometrie. Ohne code antworten: 400, wenn der Body kein JSON ist; 400, wenn ein Point oder MultiPoint über
der Flächengrenze für seine size liegt (siehe Geometrie); 400, wenn size keine
endliche Zahl ≥ 0 ist; 403, wenn ein Lieferantenartikel nicht zu Ihrem Unternehmen gehört.
Rezept: von GeoJSON zum Bericht
1
Parzelle anlegen
201 mit der Parzelle unter created und warnings (hier leer). Übernehmen Sie
created.id; bei einer Wiederholung enthält die Antwort "deduplicated": true.2
Bis zum Ende der Analyse abfragen, dann Ergebnis lesen
Alle 15 bis 30 Sekunden, bis
analysisStatus nicht mehr pending oder in_progress ist; das
Ergebnis steht dann in analysis:3
Bericht herunterladen