Search

Home

Wywołanie i odpowiedź REST API

Wywołanie i odpowiedź REST API

Wywołanie

Przykład body wysyłanego jako wywołanie serwisu w systemie GRAVITY w formacie JSON

{
    "call_alias": "article",
    "cache_time": 30,
    "process_id": 0,
    "get_data": [
        {
            "description": "OutputData1",            
            "records_count": "500",
            "offset": "0",
            "filter": [
                [["id","=",56],
                "or",
                ["id","==",4],
                "or",
                [["id","==",51], "and", ["name","!=","item"]]]
                ],
            "sort": [
                {"selector":"Employee","desc":false}, 
                {"selector":"Age","desc":false}
                ],                          
        }             
    ],
    "parameters": {
        "id": 23,
        "InputData1": {
            "name": "item",
            "quantity": 34
        }    
    }
}

Opis obiektu request:

atrybut
wymagany
typ
opis
call_alias
Tak. W przypadku wywołania na metodę zbiorczą callandgetdata
string
wskazanie triggera jaki ma zostać uruchomiony (pole Alias w definicji triggera) cache_time
Nie. W przypadku braku dane zwrócone z triggera nie będą zapisane do cache
int
informacja ile czasu (sekundy) zwrot danych z triggera ma być przechowywany w cache. Każde odwołanie do danych z cache wydłuża czas życia cache o wartość parametru. Przydatne dla pobierania danych porcjami. Z cache można skorzystać używając parametru process_id
process_id
Wymagany dla pobierania danych z cache
int
identyfikator procesu przetwarzania uzyskany z odpowiedzi danego triggera i używany aby odwołać się do cache. Jeśli identyfikator procesu istnieje w cache trigger nie zostanie uruchomiony, dane zostaną zwrócone z cache. Jeśli w cache nie zostanie znaleziony taki identyfikator procesu wykona się trigger i zwróci nowe dane oraz nową wartość process_id
get_data
Nie jeśli projekt uruchamiany triggerem posiada tylko jeden operator OUTPUT DATAOUTPUT DATA i nie zamierzamy porcjować danych, filtrować lub sortować
Array[output_data]
Tablica obiektów output_data. Zapewnia sterowanie zwrotem danych z operatorów OUTPUT DATAOUTPUT DATA na projekcie
parameters
Tak jeśli projek korzysta z parametrów
object
Zapewnia przekazanie zarówno parametrów prostych do projektu jak i obiektu do operatora INPUT DATAINPUT DATA.

object output_data

atrybut
wymagany
typ
opis
description
Tak
string
Nazwa operatora OUTPUT DATAOUTPUT DATA w definicji projektu.
records_count
Nie. wymagany jeśli zamierzamy pobierać dane w paczkach
int
określa ilość zwróconych rekordów. Może być użyty w połączeniu z process_id=[process_id zwrócony z pierwszej odpowiedzi serwisu] wówczas kolejne porcje danych pochodzić będą z cache i nie nastąpi ponowne wywołanie triggera
offset
Nie. wymagany jeśli zamierzamy pobierać dane w paczkach
int
kolejna strona danych
filter
Nie. wymagany jeśli chcemy filtrować dane
Array[“field”, “condition”, “value”]
Parametr zbudowany jako trójelementowa tablica zawierająca odpowiednio: pole w danych po którym filtrujemy (field), warunek (condition), wartość (value). Przy czym “field” oraz “value” może zostać rozbudowane do tablicy według powyższych zasad. Może być używany z parametrem process_id Możliwe wartości parametru condition w zestawieniu poniżej
sort
Nie. wymagany jeśli zamierzamy sortować wyniki
Array[sort]
Tablica obiektów sort po których będą sortowane zwracane dane z wskazanego operatora OUTPUT DATAOUTPUT DATA. Może być używany z parametrem process_id

Atrybut condition tablicy filter:

atrybut
rodzaj
opis
‘and’
logiczny
Używany w przypadku łączenia warunków wymaga spełnienia wszystkich warunków połączonych tym operatorem
‘or’
logiczny
Używany w przypadku łączenia warunków wymaga spełnienia przynajmniej jednego warunku z połączonych tym operatorem
‘==’ lub ‘=’
porównawczy
równy
‘!=’
porównawczy
różny
‘>’
porównawczy
większy
‘>=’
porównawczy
większy równy
‘<’
porównawczy
mniejszy
‘<=’
porównawczy
mniejszy równy
‘contains’
porównawczy
zawiera ciąg znaków bez uwzględnienia wielkości znaków
‘containscasesensitive’
porównawczy
zawiera ciąg znaków z uwzględnieniem wielkości znaków
‘startswith’
porównawczy
zaczyna się od ciągu znaków
‘endswith’
porównawczy
kończy się ciągiem znaków

object parameters

atrybut
wymagany
typ
opis
[nazwa_parametru]
w zależności od definicji parametru w projekcie
w zależności od definicji parametru w projekcie
nazwa_parametru jest zależna od parametrów zdefiniowanych w projekcie podobnie jak ich typ. Każdy parametr utworzony w projekcie może być przekazany jako kolejna właściwość obiektu parameters  
[nazwa operatora DATA INPUT]
w zależności od definicji parametru w projekcie
object zależny od definicji projektu
Jeśli w projekcie używamy operatora INPUT DATAINPUT DATA to nazwa obiektu będzie nazwą tego operatora. wartością będzie natomiast obiekt o strukturze zdefiniowanej w operatorze w polu JSON template

object sort

atrybut
wymagany
typ
opis
selector
tak
string
Nazwa pola w zwracanych danych podlegają sortowaniu
desc
tak
bool
Kierunek sortowania

Odpowiedzi

  • Poprawna odpowiedź:
{
    "process_id": 364,
    "state": "Success",
    "output_data": [
        {
            "output_description": "OutputData1",
            "records": 215,
     "filtered_records": 2,
            "input_parameters": {
                "description": "OutputData1",
                "records_count": "500",
                "offset": "0",
            	  "filter": [
                [["id","=",1],
                "or",
                ["id","==",2],
                "or",
                [["id","==",51], "and", ["name","!=","item"]]]
                ],
               "sort": [
                {"selector":"id","desc":false}, 
                {"selector":"name","desc":false}
                ],  
            },
            "data": [
                {
                    "id": 1,
                    "name": "Item1",
                    "code": "123456789"
                },
                {
                    "id": 2,
                    "name": "Item2",
                    "code": "987654321"
                }
            ]
        }
    ]
}

Opis obiektu response:

atrybut
typ
opis
process_id
string
identyfikator procesu uruchomienia triggera. jeśli w wywołaniu użyty był parametr cache_time możliwe jest użycie wartości parametru w celu pobrania danych z cache
state
string
Status wykonania. możliwe wartości “Success” lub “Fault
output_data
Array[output_data]
Tablica operatorów OUTPUT DATAOUTPUT DATA jakie były zdefiniowane w wywołaniu serwisu. Zawiera parametry operatora oraz dane

object output_data

atrybut
typ
opis
output_description
string
Nazwa operatora OUTPUT DATAOUTPUT DATA z którego są zwracane dane
records
int
Całkowita ilość rekordów zwrócona z obiektu OUTPUT DATAOUTPUT DATA
filtered_records
int
Ilość rekordów zwrócona po zastosowaniu filtrów. Nie występuje gdy brak filtrów
input_parameters
object
obiekt zawiera przepisane dane wywołania dla danego obiektu OUTPUT DATAOUTPUT DATA
data - nazwa zależna od konfiguracji zwracanego schematu na operatorze OUTPUT DATAOUTPUT DATA
object
Dane zwracane przez operator OUTPUT DATAOUTPUT DATA. Struktura zależna od konfiguracji schematu JSON na operatorze
  • Błędna odpowiedź:
{
    "process_id": 0,
    "state": "Fault",
    "error": "There is no such a call_alias: article1”
}

Opis obiektu error:

atrybut
typ
opis
process_id
string
identyfikator procesu uruchomienia triggera. 
state
string
Status wykonania. możliwe wartości “Success” lub “Fault
error
string
opis błędu