GraphQL-Abfragen (lesen)

Daten mit typisierten GraphQL-Abfragen abrufen

5 Min. Lesezeit
Diesen Abschnitt drucken

Der GraphQL-Endpunkt /api/v1/graphql stellt 16 Lese-Queries bereit: whoami, workOrders, workOrder(id | reference), assets, asset(id), assetDowntimes, meters(assetId), parts (mit lowStock-Filter), part (per id oder Barcode), stockMovements, floorPlans(locationId), locations, vendors, customers, purchaseOrders, purchaseOrder(id | reference | erpReference). Jede Liste lässt sich mit limit (1-200) plus offset bis zum Ende durchblättern — außer stockMovements, das mit afterId blättert.

Endpunkt

POST https://freemaint.com/api/v1/graphql mit Content-Type: application/json. Jede Abfrage verbraucht 1 von Ihrem Tageskontingent.

Beispiel: Arbeitsaufträge auflisten

query { workOrders(limit: 10, status: "OPEN") { id title priority status assetId assetName locationId locationName dueDate } } Gibt bis zu 200 Zeilen zurück; das Standardlimit ist 50.

Ein Teil abrufen (per id oder Barcode)

Ein einzelnes Ersatzteil per id oder Barcode abrufen, mit part(id: N) oder part(barcode: "CODE"). barcode trifft auf Barcode, QR-Code, Teilenummer und Referenz zu (ohne Groß-/Kleinschreibung, nur aktive Teile) — dieselbe Zuordnung wie im Scanner der App — und liefert null, wenn nichts passt. Beispiel: query { part(barcode: "ABC-123") { id name description partNumber quantity minQuantity maxStockLevel unitOfMeasure imageUrl area location { name } vendor { name website } } } Das Teil liefert außerdem description, minQuantity, maxStockLevel, imageUrl sowie die verschachtelten location und vendor — genug, um einen Kiosk-Bildschirm mit einer einzigen Abfrage zu füllen. Es trifft auch auf Ihre eigene customReference zu, sodass eine Integration ein Teil über den Code findet, den es in Ihrem System trägt.

Verfügbare Filter

  • workOrders(limit, offset, status, updatedSince) — neueste zuerst; Blättern mit limit (1-200, Standard 50) und offset; status als String-Filter; updatedSince liefert nur Arbeitsaufträge, die seit diesem Zeitpunkt geändert wurden; Arbeitsaufträge im Papierkorb werden nie zurückgegeben
  • workOrder(id:) / workOrder(reference:) — ein Arbeitsauftrag, gefunden über seine ID oder über die Referenz, die Ihr Team nennt (WO-2026-11-016, ohne Beachtung der Groß-/Kleinschreibung); geben Sie genau eines von beiden an. Jeder Arbeitsauftrag liefert außerdem assetName und locationName, die Namen, die ein Formular oder eine Erlaubnis druckt
  • assets(limit, offset, updatedSince) — neueste zuerst; Blättern mit limit (1-200, Standard 50) und offset; updatedSince liefert nur Anlagen, die seit diesem Zeitpunkt geändert wurden
  • assetDowntimes(assetId, openOnly, since, limit, offset) — Maschinenstillstände, neueste zuerst; Blättern mit limit (1-200, Standard 50) und offset; openOnly=true liefert nur noch laufende Stillstände; since (ISO 8601) liefert Stillstände, die ab einem Zeitstempel BEGONNEN haben — der günstige Weg, eine verpasste Zustellung nachzuholen
  • parts(limit, offset, lowStock, updatedSince) — Blättern mit limit (1-200) und offset; updatedSince liefert nur seit diesem Zeitpunkt geänderte Teile; lowStock=true liefert nur Lagerartikel auf oder unter minQuantity
  • locations, vendors, customers (limit, offset, updatedSince) — nach Namen sortiert; Blättern mit limit (1-200, Standard 200) und offset; updatedSince liefert nur Zeilen, die seit diesem Zeitpunkt geändert wurden
  • part(id, barcode) — Einzelteilsuche; barcode trifft auf Barcode, QR-Code, Teilenummer, Referenz und eigene Referenz zu, ideal für Scanner
  • floorPlans(locationId) — die Grundrisse eines Standorts mit ihren Markern (x/y-Koordinaten in Prozent); damit kann ein Kiosk anzeigen, wo ein Teil gelagert ist
  • meters(assetId, limit, offset) — Zähler (Betriebsstunden, Stückzähler, Kilometerzähler, Messanzeigen), neueste zuerst; Blättern mit limit (1-200, Standard 50) und offset; assetId beschränkt auf eine Maschine; lastReadingValue und lastReadingDate liefern den letzten Zählerstand
  • purchaseOrders(limit, offset, status, vendorId, updatedSince) — Bestellungen mit ihren Positionen (jeweils mit receivedQuantity), ihren Lieferungen (receipts) und dem Lieferanten, neueste zuerst; Blättern mit limit (1-200, Standard 50) und offset; status ist PENDING, APPROVED, ORDERED, PARTIALLY_RECEIVED, RECEIVED oder CANCELLED; updatedSince liefert nur Bestellungen, die seit diesem Zeitpunkt geändert wurden
  • purchaseOrder(id, reference, erpReference) — eine einzelne Bestellung, gefunden über ihre id, ihre FreeMaint-Referenz (PO-12) oder die erpReference, die Ihr ERP zurückgeschrieben hat; genau eines davon angeben
  • stockMovements(limit, afterId, since, partId, workOrderId, type) — das Bestandsjournal, älteste zuerst; Blättern mit limit (1-200, Standard 50) und afterId: Übergeben Sie die id der zuletzt erhaltenen Bewegung, um die nächste Seite zu erhalten — sie bleibt exakt, auch während neue Bewegungen geschrieben werden; since (ISO 8601) beginnt ab einem Datum; type ist ADJUSTMENT, PURCHASE, WORK_ORDER, TRANSFER, RETURN, SCRAP, INITIAL, CORRECTION oder INSPECTION

Schema-Introspektion

Introspektion ist aktiviert. Um das gesamte Schema interaktiv zu erkunden — jede Abfrage, jede Mutation und jeden Eingabetyp samt Feldern —, richten Sie einen Desktop-GraphQL-Client (Altair, Insomnia oder Postman) mit Ihrem Bearer-Token auf POST /api/v1/graphql. Im Browser laufende Explorer wie Apollo Sandbox oder das Online-GraphiQL werden von unserer CORS-Richtlinie abgewiesen.

Tipp

Mehrere Abfragen in einer Anfrage kombinieren: { workOrders(limit:5){ id } assets(limit:5){ id } } — das zählt als ein einziger Kontingent-Aufruf.

Tipp

Benutzerdefinierte Zählerfelder: meters { id name customFields { name label fieldType value } } liefert einen Eintrag je für Zähler definiertem Feld, in Anzeigereihenfolge; value ist Text oder null, wenn der Zähler keinen Wert hat. Über die API sind die Werte schreibgeschützt.

War diese Seite hilfreich?