Uruchomienie raportu z użyciem ogólnego api
Jeśli chcemy mieć wpływ na parametry wykonania raportu, to należy wykonać pełną sekwencję metod API systemu Kofios. Poniżej opisano wybrane metody api, a ich wywołanie przedstawiono w postaci zapytań Postman.
Pełen scenariusz uruchomienia raportu zawiera kroki:
- Zalogowanie użytkownika i uzyskanie zwrotnie token integracyjny
- Pobranie skrótów dla sesji
- Pobranie formularza uruchomieniowego danego skrótu
- Aktualizacja dat danego skrótu
- Pobranie zestawu danych dla danego skrótu - wynik raportu wraz z układem tabeli przestawnej
- Zakończenie sesji użytkownika
Domenę test-api.kofios.pl należy zastąpić domeną własnego serwera KOFIOS.
Logowanie
POST: https://test-api.kofios.pl/Api/Bso/AuthenticationService/Login
Body
{
"Name": "powerbi",
"Code": "001111",
"Method": 1
}
Response
{
"UserName": "powerbi",
"UserID": 166,
[...]
"IntegrationToken": "KFS SzZLM0hLMkzVTbQwTtY1SUtL000ySUvStbCwME0xNk0zsjQyAwA=",
"ExceptionDetails": null,
"Msg": 0,
"MsgDescription": "Ok",
"WarningMsg": null
}
Odpowiedź poprawnego zalogowania zawiera:
- Msg = 0
- MsgDesription = "Ok"
- IntegrationToken - token sesyjny
W przypadku wywołania kolejnych metod api, należy do request dodać nagłówek autoryzacyjny, który zawiera wartość tokenu sesyjnego (IntegrationToken).
- Key = Autorization
- Value = KFS SzZLM0hLMkzVTbQwTtY1SUtL000ySUvStbCwME0xNk0zsjQyAwA=
Pobranie raportów / skrótów dla sesji
GET: https://test-api.kofios.pl/Api/Xsb/RptService/DTMGetDesktop
Headers
Response
Tablica Items zawiera wszystkie skróty dostępne dla danego użytkownika, należy uzyskać ID skrótu, który chcemy uruchomić.
{
"IsCompressed": false,
"Stream": null,
"DateFilterFields": null,
"Items": [
{
"ReqFields": null,
"ReqFKeys": null,
"ShortCutName": "POWERBI01",
"StyleName": "Domyślny",
"HasStyle": true,
"Name": "Raport akceptacji kosztów",
[...]
"ID": 5548,
[...]
}
],
"ExceptionDetails": null,
"Msg": 0,
"MsgDescription": "Ok",
"WarningMsg": null
}
Pobranie formularza uruchomieniowego danego skrótu
GET: https://test-api.kofios.pl/Api/Xsb/RptService/DTMGetShortCutDates/5548
Headers
Response
Otrzymany obiekt jest formularzem dat wykonania raportu.
Każdy wiersz formularza, to pojedynczy obiekt w tablicy Controls
Nazwę możemy zidentyfikować według atrybutu Caption, którego daty są pokazane tym samym kolorem.
Obiekt ItemData pozwala przestawić wartość filtra dat:
- w zakresie: 0
- poza zakresem: 1
{
"PrefixControlEnable": true,
"SufixControlEnable": false,
"DialogMsg": null,
"DialogMsgForeColor": 0,
"ID": 0,
"SizeType": 0,
"FormHeight": 0,
"Text": "Kryteria daty",
"Controls": [
{
"PrefixEnable": true,
"Enable": true,
"SufixEnable": true,
"AllowNull": false,
"MinSize": "0, 0",
"Type": 10,
"PrefixType": 10,
"SufixType": 0,
"Values": [],
"PrefixValues": [],
"SufixValues": [],
"LinkValues": [],
"PrefixLinkValues": [],
"SufixLinkValues": [],
"Texts": [
{
"Value": "Wartość/Zakres",
"ItemData": null,
"Selected": false,
"SubValues": []
}
],
"PrefixTexts": [
{
"Value": "Porównanie",
"ItemData": null,
"Selected": false,
"SubValues": []
}
],
"SufixTexts": [],
"Caption": "",
"Requied": false,
"Info": null,
"Msg": null,
"ID": -1
},
{
"PrefixEnable": true,
"Enable": true,
"SufixEnable": true,
"AllowNull": false,
"MinSize": "0, 0",
"Type": 3,
"PrefixType": 2,
"SufixType": 0,
"Values": [
{
"Value": "01.03.2025 00:00:00",
"ItemData": null,
"Selected": false,
"SubValues": []
},
{
"Value": "19.03.2025 00:00:00",
"ItemData": null,
"Selected": false,
"SubValues": []
}
],
"PrefixValues": [
{
"Value": null,
"ItemData": "0",
"Selected": false,
"SubValues": []
}
],
"SufixValues": [],
"LinkValues": [
{
"Value": "01.03.2025 00:00:00",
"ItemData": null,
"Selected": false,
"SubValues": []
},
{
"Value": "19.03.2025 00:00:00",
"ItemData": null,
"Selected": false,
"SubValues": []
}
],
"PrefixLinkValues": [
{
"Value": null,
"ItemData": "0",
"Selected": false,
"SubValues": []
}
],
"SufixLinkValues": [],
"Texts": [],
"PrefixTexts": [
{
"Value": "w zakresie",
"ItemData": " between '[0]' and '[1]'",
"Selected": false,
"SubValues": []
},
{
"Value": "poza zakresem",
"ItemData": " not between '[0] and '[1]'",
"Selected": false,
"SubValues": []
}
],
"SufixTexts": [],
"Caption": "Data otrzymania",
"Requied": false,
"Info": "",
"Msg": null,
"ID": 7773
}
],
"ExceptionDetails": null,
"Msg": 0,
"MsgDescription": "Ok",
"WarningMsg": null
}
Aktualizacja dat danego skrótu
POST: https://test-api.kofios.pl/Api/Xsb/RptService/DTMSetShortCutDates/5548
Headers
Body
Zmodyfikowany obiekt uzyskany w poprzedniej metodzie
{
"PrefixControlEnable": true,
"SufixControlEnable": false,
"DialogMsg": null,
"DialogMsgForeColor": 0,
"ID": 0,
"SizeType": 0,
"FormHeight": 0,
"Text": "Kryteria daty",
"Controls": [
{
"PrefixEnable": true,
"Enable": true,
"SufixEnable": true,
"AllowNull": false,
"MinSize": "0, 0",
"Type": 10,
"PrefixType": 10,
"SufixType": 0,
"Values": [],
"PrefixValues": [],
"SufixValues": [],
"LinkValues": [],
"PrefixLinkValues": [],
"SufixLinkValues": [],
"Texts": [
{
"Value": "Wartość/Zakres",
"ItemData": null,
"Selected": false,
"SubValues": []
}
],
"PrefixTexts": [
{
"Value": "Porównanie",
"ItemData": null,
"Selected": false,
"SubValues": []
}
],
"SufixTexts": [],
"Caption": "",
"Requied": false,
"Info": null,
"Msg": null,
"ID": -1
},
{
"PrefixEnable": true,
"Enable": true,
"SufixEnable": true,
"AllowNull": false,
"MinSize": "0, 0",
"Type": 3,
"PrefixType": 2,
"SufixType": 0,
"Values": [
{
"Value": "01.01.2025 00:00:00",
"ItemData": null,
"Selected": false,
"SubValues": []
},
{
"Value": "31.12.2025 00:00:00",
"ItemData": null,
"Selected": false,
"SubValues": []
}
],
"PrefixValues": [
{
"Value": "w zakresie",
"ItemData": " between '[0]' and '[1]'",
"Selected": false,
"SubValues": []
}
],
"SufixValues": [],
"LinkValues": [
{
"Value": "01.03.2025 00:00:00",
"ItemData": null,
"Selected": false,
"SubValues": []
},
{
"Value": "19.03.2025 00:00:00",
"ItemData": null,
"Selected": false,
"SubValues": []
}
],
"PrefixLinkValues": [
{
"Value": null,
"ItemData": "0",
"Selected": false,
"SubValues": []
}
],
"SufixLinkValues": [],
"Texts": [],
"PrefixTexts": [
{
"Value": "w zakresie",
"ItemData": " between '[0]' and '[1]'",
"Selected": false,
"SubValues": []
},
{
"Value": "poza zakresem",
"ItemData": " not between '[0] and '[1]'",
"Selected": false,
"SubValues": []
}
],
"SufixTexts": [],
"Caption": "Data otrzymania",
"Requied": false,
"Info": "",
"Msg": null,
"ID": 7636
}
],
"ExceptionDetails": null,
"Msg": 0,
"MsgDescription": "Ok",
"WarningMsg": null
}
Response
{
"ExceptionDetails": null,
"Msg": 0,
"MsgDescription": "Ok",
"WarningMsg": null
}
Pobranie zestawu danych dla danego skrótu
GET: https://test-api.kofios.pl/Api/Xsb/RptService/DTMGetData/5548
Headers
Response
- Styles - zawiera projekt tabeli przestawnej, tj. wymiary poszczególnych obszarów oraz ich formaty
- Filters - zawiera informację, jakie filtry zostały zastosowane przy wykonaniu raportu
- ReturnTable - zawiera zestaw danych raportu
{
"RunID": 0,
"PubID": 0,
"Caption": null,
"Styles": [ ... ],
"Filters": [
{
"Value": "Data otrzymania: w zakresie",
"ItemData": null,
"Selected": false,
"SubValues": [
{
"Value": "2025/01/01",
"ItemData": "01.01.2025",
"Selected": false,
"SubValues": []
},
{
"Value": "2025/03/19",
"ItemData": "19.03.2025",
"Selected": false,
"SubValues": []
}
]
}
],
"Tools": [],
"DataSet": {
"ReturnTable": [
{
"Identyfikator": "FK/0001/01/25",
"Numer": "ZAL 1",
"Nazwa kontrahenta": " Pol-Market Schody Drewniane Dariusz Kutera",
"Status dokumentu": "ZAPŁACONE",
"Wartość netto dokumentu": 5000.0100,
"Wartość brutto dokumentu": 6150.0100,
"Data otrzymania": "2025-01-08T00:00:00",
"Kategoria": "FAKTURA ZALICZKOWA",
"Kod budżetu": "0701",
"Budżet": "KOFIOS",
"Status akceptacji": "ZAAKCEPTOWANO",
"Status zadania akceptacji": "ZAAKCEPTOWANO",
"Akceptujący": "Jakub Szostek",
"Zaakceptowana wartość": 5000.0100,
"Kod kosztów": "R",
"Kategoria kosztów": "TEST1",
"Zadanie zaakceptowane": 1,
"Termin płatności": null,
"Forma płatności": "przelew"
},
{
"Identyfikator": "FK/0005/02/25",
"Numer": "FK 0602",
"Nazwa kontrahenta": " Pol-Market Schody Drewniane Dariusz Kutera",
"Status dokumentu": "ZAAKCEPTOWANY",
"Wartość netto dokumentu": 500.0000,
"Wartość brutto dokumentu": 615.0000,
"Data otrzymania": "2025-02-06T00:00:00",
"Kategoria": "FAKTURA KOSZTOWA",
"Kod budżetu": "01",
"Budżet": "BUDOWA 1",
"Status akceptacji": "ZAAKCEPTOWANO",
"Status zadania akceptacji": "ZAAKCEPTOWANO",
"Akceptujący": "Jakub Szostek",
"Zaakceptowana wartość": 500.0000,
"Kod kosztów": "R",
"Kategoria kosztów": "TEST1",
"Zadanie zaakceptowane": 1,
"Termin płatności": null,
"Forma płatności": "przelew"
},
[...]
{
"Identyfikator": "TMP5000/638779888051393961",
"Numer": "192921",
"Nazwa kontrahenta": "\"AIFO GROUP\" SPÓŁKA Z OGRANICZONĄ ODPOWIEDZIALNOŚCIĄ",
"Status dokumentu": "W AKCEPTACJI",
"Wartość netto dokumentu": 0.0000,
"Wartość brutto dokumentu": 0.0000,
"Data otrzymania": "2025-03-19T00:00:00",
"Kategoria": "FAKTURA KOSZTOWA",
"Kod budżetu": "KOFIO 1",
"Budżet": "KOFIO 1",
"Status akceptacji": "W AKCEPTACJI",
"Status zadania akceptacji": "W AKCEPTACJI",
"Akceptujący": null,
"Zaakceptowana wartość": 0.0000,
"Kod kosztów": null,
"Kategoria kosztów": null,
"Zadanie zaakceptowane": 0,
"Termin płatności": null,
"Forma płatności": null
}
]
},
"IsCompressed": false,
"Stream": null,
"ExceptionDetails": null,
"Msg": 0,
"MsgDescription": "Ok",
"WarningMsg": null
}
Zakończenie sesji - logout
GET: https://test-api.kofios.pl/Api/Bso/AuthenticationService/Logout
Headers
Response
{
"ExceptionDetails": null,
"Msg": 0,
"MsgDescription": "Ok",
"WarningMsg": null
}