Interfejs REST API AMAGE - zasoby/parametry
Wstęp/Kontekst
Kontekst dla operacji na obiektach modułu zasobów (Structure) w systemie AMAGE, którą należy w zapytaniu rozszerzyć o odpowiednią metodę.
-
rest/amage/v1/assets
Struktury danych
Struktury i typy danych wykorzystywane w zapytaniach i odpowiedziach.
Rezultat:
W polach ID/UUID znajduje się identyfikator nowo utworzonego lub edytowanego obiektu. W przypadku poprawnego wykonania operacji pole success jest ustawiane na true
. W przypadku wystąpienia błędu pole success jest ustawiane na false
, a w polu message znajduje się opis błędu. Kod błędu zawiera wtedy kod HTTP typu NOT_FOUND lub BAD_REQUEST. Zwracany w zapytaniu wtedy jest również kod BAD_REQUEST. W zależności od typu błędu podczas przetwarzania zapytania kod błędu może być różny niż zwracany główny kod zapytania. Kod zapytania będzie BAD_REQUEST, a kod wewnętrzny będzie ustawiony na NOT_FOUND w przypadku takim, gdy zapytanie będzie ustawiało właściwość obiektu na inny obiekt w systemie. Parametr JSON będzie poprawny (UUID rekordu), ale takiego rekordu nie będzie w systemie. W związku z tym w polu errorCode pojawi się kod NOT_FOUND. W polu opisowym message
komunikat informujący jakiego rekordu nie znaleziono, a główny kod błędu zapytania będzie wynosił BAD_REQUEST.
{
"id": 1,
"uuid":"f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"success":true,
"errorCode":0,
"message":""
}
Typ parametru. Element wyliczeniowy, który określa typ parametru (ParameterType):
-
STRING,
-
FLOAT,
-
INTEGER,
-
ENUM,
-
DATETIME,
-
DATE,
-
TIME
Źródło informacji. Pole wyliczeniowe jako lista wartości separowana przecinkami. Dostępne wartości:
-
FROM_DESKTOP,
-
FROM_MOBILE,
-
FROM_IDENTIFIER,
-
FROM_DIFFERENCE,
-
FROM_IMPORT,
-
FROM_WEB_SERVICE,
-
FROM_DATA_AGGREGATOR,
-
FROM_AUTOMATION
Typ identyfikatora
-
BARCODE,
-
DATAMATRIX
-
QRCODE
-
RFID_LF
-
RFID_HF
-
RFID_MIFARE
-
RFID_UHF
-
BEACON
Typ załącznika:
-
TEXT("txt")
-
HTML("html", "htm")
-
SPEECH("spc")
-
AUDIO("wav", "mp2", "mp3")
-
VIDEO("avi", "mpeg", "mp4", "mov")
-
PHOTO("jpg", "jpeg", "png", "bmp", "gif")
-
PDF("pdf")
-
OFFICE("doc", "docx", "xls", "xlsx", "xlsm", "odt", "ods")
-
MODEL3D("j3o", "obj")
-
IFC("ifc")
-
BINARY()
Operacje API
Pobieranie liczby zasobów/produktów
-
Metoda:
GET
-
Ścieżka:
/count
-
Generuje:
text/plain
-
Wymaga:
application/json, text/plain
-
Autoryzacja: podpis API (device-uuid, api-key, api-sign)
Zwraca liczbę wszystkich zasobów w systemie.
{
123456
}
Pobranie listy zasobów
-
Metoda:
GET
-
Ścieżka:
/list
-
Generuje:
application/json
-
Wymaga:
application/json, text/plain
-
Autoryzacja: podpis API (device-uuid, api-key, api-sign)
Parametry:
-
page
- RequestParam - strona - liczona od 1 -
size
- RequestParam - rozmiar strony - liczba rekordów na stronie, sugerujemy ograniczenie do 1000 elementów. W zależności od implementacji API, wartość może być ograniczona do mniejszej liczby.
Zwracane dane to obiekt JSON ze strukturą:
{
"id": 12345,
"uuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"globalId": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"ifcTag": "1sd3df3d3dfd",
"name": "Nazwa elementu",
"serialNumber": "123456",
"inventoryNumber": "123456",
"count": 123.45,
"note": "Notatka",
"parentUuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"typeUuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"groupUuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"locationUuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"objectStateUuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"mapShapeLatitude": 123.45,
"mapShapeLongitude": 123.45,
"mapShapeMapCode": "default",
"identifierList": [
{
"uuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"value": "P1234-445644",
"type": "DATAMATRIX"
}
],
"attachmentList": [
{
"uuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"fileName": "plik.pdf",
"attachmentType": "PDF",
"hash": "c1534f7c2e65f4b93e284c6f878c1ba1"
}
],
"parameterSettingList": [
{
"uuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"parameterName": "parametr",
"parameterUuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"value": "Testowa wartość",
"availability": true,
"userUuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"timestamp": "2021-01-01T12:00:00"
}
],
"contractUuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"contractScopeUuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"customerUuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"recipientUuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"dateOfProduction": "2021-01-01T12:00:00",
"dateOfSale": "2021-01-01T12:00:00",
"dateOfCommissioning": "2021-01-01T12:00:00",
"warrantyExpirationDate": "2021-01-01T12:00:00",
"warrantyPeriod": 123,
"customWarranty": true,
"equipmentObjectStateUuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"equipmentEnabled": true,
"equipmentOwnerUuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"equipmentHolderUuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"equipmentRequesterUuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"equipmentCheckerUuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"equipmentValidTillDate": "2021-01-01T12:00:00",
"equipmentTestingLaboratoryUuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"equipmentValidationDocument": "Dokument.pdf",
"equipmentValidationNotes": "Notatka"
}
Identifier:
{
"id": 12345,
"uuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"value": "X-234-222",
"type": "DATAMATRIX"
}
Attachment:
{
"id": 12345,
"uuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"fileName": "plik.pdf",
"attachmentType": "PDF",
"hash": "c1534f7c2e65f4b93e284c6f878c1ba1"
}
ParameterSetting:
{
"id": 12345,
"uuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"parameterName": "parametr",
"parameterUuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"value": "Testowa wartość",
"availability": true,
"userUuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"timestamp": "2021-01-01T12:00:00"
}
Pobranie zasobu/produktu po UUID
-
Metoda:
GET
-
Ścieżka:
/get/by-uuid/{uuid}
-
Generuje:
application/json
-
Wymaga:
application/json, text/plain
-
Autoryzacja: podpis API (device-uuid, api-key, api-sign)
Parametry:
-
UUID - identyfikator zasobu/produktu
Zwracane dane to pojedynczy obiekt JSON ze strukturą zasobu tożsamą z metodą /list
.
Dodanie nowego zasobu
-
Metoda:
PUT
-
Ścieżka:
/add
-
Generuje:
application/json
-
Wymaga:
application/json, text/plain
-
Autoryzacja: podpis API (device-uuid, api-key, api-sign)
Parametry:
-
ProductDto - BodyContent - struktura JSON tożsama z pojedynczym elementem z metody
/list
. Pole ID zostanie zastąpione podczas zapisu rekordu
Zwracane dane to obiekt odpowiedzi z polem ID/UUID nowo utworzonego typu elementów.
Aktualizacja zasobu/produktu
-
Metoda:
POST
-
Ścieżka:
/update/{uuid}
-
Generuje:
application/json
-
Wymaga:
application/json, text/plain
-
Autoryzacja: podpis API (device-uuid, api-key, api-sign)
Parametry:
-
UUID
- identyfikator zasobu/produktu -
ProductDto - BodyContent - struktura JSON tożsama z pojedynczym elementem z metody
/list
. Pole ID/UUID zostają zignorowane podczas aktualizacji.
Zwracane dane to obiekt odpowiedzi z polem ID/UUID modyfikowanego typu elementów.
W przypadku tej metody próba zmiany typu elementu się nie powiedzie. Wykorzystaj metodę /update-type/{uuid}/to/{element-type-uuid} do zmiany typu elementu, która zajmie się procedurą połączenia parametrów pochodzących ze starego i nowego typu elementów. Ma to na celu uniknięcie problemu związanego z utratą danych parametrów po zmianie typu elementu.
|
W przypadku aktualizacji listy identyfikatorów, parametrów i załączników system sprawdza istnienie danego obiektu - za pomocą identyfikatora UUID w liście elementów zasobu. Jeśli już istnieje, to jest aktualizowany lub pomijany w dodawaniu. |
Aktualizacja typu elementu
-
Metoda:
POST
-
Ścieżka:
/update-type/{uuid}/to/{element-type-uuid}
-
Generuje:
application/json
-
Wymaga:
application/json, text/plain
-
Autoryzacja: podpis API (device-uuid, api-key, api-sign)
Parametry:
-
uuid
- identyfikator zasobu/produktu -
element-type-uuid
- identyfikator UUID nowego typu elementów
Operacja dedykowana specjalnie dla zmiany typu elementu dla danego zasobu. Wyciągnięta ze standardowej procedury /update ze względu na konieczność operowania na parametrach/ustawieniach parametrów w powiązanych rekordach. Aplikacja w trakcie wykonywania tej operacji przeprowadza procedurę POŁĄCZENIA parametrów istniejących w nowym typie elementów ORAZ parametrów ze starego typu elementu. Spowodowane to jest chęcią zachowania pełnej historii zmian ustawień parametrów pomiędzy zmianą typów. W przeciwnym przypadku istniałaby możliwość usunięcia historii zmiany parametrów zasobu w przypadku zmiany typu elementu.
Realizowane działania:
-
Ustawienia parametrów w oryginalnym zasobie (przed zmianą) są przepisywane do nowego zasobu (po zmianie)
-
Jeśli w nowym typie elementów ISTNIEJE parametr o takiej samej nazwie jak w oryginalnym typie elementów, to wartość ustawienia parametru z oryginalnego zasobu jest przepisywana do nowego zasobu (zamieniane jest wskazanie na parametr w nowym typie)
-
Jeśli w starym typie istniał parametr np. "długość", a w nowym typie elementów nie jest on dostępny, to procedura automatycznie DODA ten parametr do nowego typu elementów i powiąże go z ustawieniem parametru z oryginalnego zasobu
-
Nowe ustawienia parametrów są ustawiane zgodnie z definicją domyślnych wartości w nowym typie.
Taka operacja pozwala na zachowanie pełnej historii zmian parametrów zasobu w przypadku zmiany typu elementu. Użytkownik za pomocą dodatkowych operacji dotyczących określonych ustawień parametrów może zaktualizować wartości lub je usunąć, ale z pełną kontrolą nad historią zmian.
Usunięcie zasobu
-
Metoda:
DELETE
-
Ścieżka:
/delete/{uuid}
-
Generuje:
application/json
-
Wymaga:
application/json, text/plain
-
Autoryzacja: podpis API (device-uuid, api-key, api-sign)
Parametry:
-
uuid
- identyfikator UUID zasobu/produktu
Zwracane dane to obiekt odpowiedzi z polem ID/UUID usuwanego zasobu/produktu.
Usunięcie zasobu może się nie powieść ze względu na powiązanie zasobu z innymi rekordami w systemie. W takim przypadku zwrócony zostanie błąd z informacją dotyczącą problemu. |
Odczytanie wartości ustawień parametru
-
Metoda:
GET
-
Ścieżka:
/parametersetting/{uuid}
-
Generuje:
application/json
-
Wymaga:
application/json, text/plain
-
Autoryzacja: podpis API (device-uuid, api-key, api-sign)
Parametry:
-
UUID - identyfikator ustawień parametru w zasobie
Zwracane dane to obiekt JSON ze strukturą:
{
"id": 12345,
"uuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"parameter": {
"id": 34567,
"uuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"name": "parametr",
"description": "opis parametru",
"category": "kategoria parametru",
"type": "STRING"
},
"value": "Testowa wartość",
"availability": true,
"userUuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"timestamp": "2021-01-01T12:00:00"
}
Zapisanie historii do istniejącego ustawienia parametru
-
Metoda:
POST
-
Ścieżka:
/add-parametersetting-history/{uuid}
-
Generuje:
application/json
-
Wymaga:
application/json
-
Autoryzacja: podpis API (device-uuid, api-key, api-sign)
Parametry:
-
UUID - identyfikator ustawień parametru
W treści zapytania (body) należy zamieścić obiekt JSON z danymi historii parametru. Obiekt ma strukturę:
{
"date": "2021-01-01T12:00:00",
"parameterSettingUuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"userUuid": "f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"currentValue": "Testowa wartość",
"source": "FROM_WEB_SERVICE"
}
Zapytanie
/rest/amage/v1/assets/add-parametersetting-history/1c4066e6-cdd6-4903-803a-b6bffe689527
Odpowiedź
{
"id": 12345,
"uuid":"f25e62ea-0100-4f4e-aad2-853cf48df2b9",
"success":true,
"errorCode":0,
"message":""
}