Zapytania GraphQL (odczyt)

Pobieraj dane za pomocą typowanych zapytań GraphQL

Czas czytania: 5 min
Drukuj tę sekcję

Endpoint GraphQL /api/v1/graphql udostępnia 16 zapytań odczytu: whoami, workOrders, workOrder(id | reference), assets, asset(id), assetDowntimes, meters(assetId), parts (z filtrem lowStock), part (po id lub kodzie kreskowym), stockMovements, floorPlans(locationId), locations, vendors, customers, purchaseOrders, purchaseOrder(id | reference | erpReference). Każdą listę można przejrzeć stronami do końca za pomocą limit (1-200) i offset — z wyjątkiem stockMovements, które stronicuje się przez afterId.

Punkt końcowy

POST https://freemaint.com/api/v1/graphql z nagłówkiem Content-Type: application/json. Każde zapytanie zużywa 1 z Twojego dziennego limitu.

Przykład: lista zleceń

query { workOrders(limit: 10, status: "OPEN") { id title priority status assetId assetName locationId locationName dueDate } } Zwraca do 200 wierszy; domyślny limit to 50.

Pobierz jedną część (po id lub kodzie kreskowym)

Pobierz pojedynczą część po id lub kodzie kreskowym: part(id: N) albo part(barcode: "CODE"). barcode dopasowuje kod kreskowy, kod QR, numer części i referencję (bez rozróżniania wielkości liter, tylko aktywne części) — to samo dopasowanie, którego używa skaner w aplikacji — i zwraca null, gdy nic nie pasuje. Przykład: query { part(barcode: "ABC-123") { id name description partNumber quantity minQuantity maxStockLevel unitOfMeasure imageUrl area location { name } vendor { name website } } } Część zwraca również description, minQuantity, maxStockLevel, imageUrl oraz zagnieżdżone location i vendor — dość, by wypełnić ekran kiosku jednym zapytaniem. Dopasowuje też Państwa własne customReference, więc integracja może odnaleźć część po kodzie, który nosi ona w Państwa systemie.

Dostępne filtry

  • workOrders(limit, offset, status, updatedSince) — od najnowszych; stronicowanie przez limit (1-200, domyślnie 50) i offset; status to tekstowy filtr statusu; updatedSince zwraca tylko zlecenia pracy zmienione od tej chwili; zlecenia pracy znajdujące się w Koszu nigdy nie są zwracane
  • workOrder(id:) / workOrder(reference:) — jedno zlecenie, wyszukane po id albo po numerze, którym posługuje się Twój zespół (WO-2026-11-016, bez rozróżniania wielkości liter); podaj dokładnie jedno z nich. Każde zlecenie zwraca też assetName i locationName — nazwy, które drukuje formularz lub pozwolenie
  • assets(limit, offset, updatedSince) — od najnowszych; stronicowanie przez limit (1-200, domyślnie 50) i offset; updatedSince zwraca tylko zasoby zmienione od tej chwili
  • assetDowntimes(assetId, openOnly, since, limit, offset) — postoje maszyn, od najnowszego; stronicowanie przez limit (1-200, domyślnie 50) i offset; openOnly=true zwraca tylko postoje jeszcze niezakończone; since (ISO 8601) zwraca postoje ROZPOCZĘTE od podanego znacznika czasu, czyli tani sposób na nadrobienie utraconej dostawy
  • parts(limit, offset, lowStock, updatedSince) — stronicowanie przez limit (1-200) oraz offset; updatedSince zwraca tylko części zmienione od tej chwili; lowStock=true zwraca tylko pozycje magazynowe na poziomie minQuantity lub poniżej
  • locations, vendors, customers (limit, offset, updatedSince) — uporządkowane według nazwy; stronicowanie przez limit (1-200, domyślnie 200) i offset; updatedSince zwraca tylko wiersze zmienione od tej chwili
  • part(id, barcode) — wyszukanie jednej części; barcode dopasowuje kod kreskowy, kod QR, numer części, referencję i referencję własną — idealne dla skanerów
  • floorPlans(locationId) — plany pięter lokalizacji wraz z ich znacznikami (współrzędne x/y w procentach); kiosk może pokazać, gdzie przechowywana jest część
  • meters(assetId, limit, offset) — liczniki (motogodziny, liczniki sztuk, drogomierze, wskaźniki), od najnowszych; stronicowanie przez limit (1-200, domyślnie 50) i offset; assetId zawęża do jednej maszyny; lastReadingValue i lastReadingDate podają ostatni odczyt
  • purchaseOrders(limit, offset, status, vendorId, updatedSince) — zamówienia zakupu z pozycjami (każda z receivedQuantity), dostawami (receipts) i dostawcą, od najnowszych; stronicowanie przez limit (1-200, domyślnie 50) i offset; status to PENDING, APPROVED, ORDERED, PARTIALLY_RECEIVED, RECEIVED lub CANCELLED; updatedSince zwraca tylko zamówienia zmienione od tej chwili
  • purchaseOrder(id, reference, erpReference) — jedno zamówienie zakupu, wyszukane po id, po numerze FreeMaint (PO-12) albo po erpReference zapisanym przez Twój ERP; podaj dokładnie jeden
  • stockMovements(limit, afterId, since, partId, workOrderId, type) — rejestr ruchów magazynowych, od najstarszych; stronicowanie przez limit (1-200, domyślnie 50) i afterId: przekaż id ostatniego otrzymanego ruchu, aby pobrać następną stronę — pozostaje ona dokładna nawet wtedy, gdy zapisywane są nowe ruchy; since (ISO 8601) zaczyna od podanej daty; type to ADJUSTMENT, PURCHASE, WORK_ORDER, TRANSFER, RETURN, SCRAP, INITIAL, CORRECTION lub INSPECTION

Introspekcja schematu

Introspekcja jest włączona. Aby interaktywnie przeglądać pełny schemat — każde zapytanie, mutację i typ wejściowy wraz z polami — skieruj desktopowego klienta GraphQL (Altair, Insomnia lub Postman) na POST /api/v1/graphql z tokenem Bearer. Eksploratory działające w przeglądarce, takie jak Apollo Sandbox czy GraphiQL online, są odrzucane przez naszą politykę CORS.

Wskazówka

Połącz kilka zapytań w jednym żądaniu: { workOrders(limit:5){ id } assets(limit:5){ id } } — liczy się jako jedno wywołanie limitu.

Wskazówka

Pola niestandardowe liczników: meters { id name customFields { name label fieldType value } } zwraca jeden wpis na każde pole zdefiniowane dla liczników, w kolejności wyświetlania; value to tekst albo null, gdy licznik nie ma wartości. Przez API wartości są tylko do odczytu.

Czy ta strona była pomocna?