Er der begrænsninger på antal kald/tid/elementer?
Volumen
Der er p.t. ikke nogen begrænsning på antal kald en KITOS API klient kan foretage pr. dag.
Begrænsninger i de enkelte kald
Påkrævet pagination med øvre accepteret page size
Nå https://os2web.atlassian.net/browse/KITOSUDV-2137 er released, så vil endpoints som returnerer lister af data på API V1, kræve at man anvender “pagination” med en maksimal “page size” på 100. Som integrator skal altså skrive sin data-import/eksport kode på en sådan form at den henter data ud i “flere klumper” i stedet for en enkelt. Algoritmen til fuld data eksport er kort beskrevet i følgende pseudokode:
/*
"myItemIntegrationService" er en antaget integrationsservice, som udstiller en GetPage funktion
der kalder KITOS API over HTTP og returnerer data på POCO form dvs. en liste af MyItem objekter.
OBS: For ODATA og V1 KITOS REST API'er benyttes terminologien "skip" og
"take(traditionel REST)/top(ODATA) parametre i stedet for pageNumber og pageSize, men denne
kompleksitet forventes håndteret i "myItemIntegrationService"
*/
var exportedItems = new List<MyItem>()
var pageNumber = 0
const maxPageSize = 100
let currentPageItems = new List<MyItem>()
REPEAT
//Indlæs datasæt
currentPageItems = myItemIntegrationService.GetPage(pageNumber, maxPageSize)
pageNumber = pageNumber + 1;
exportedItems.AddRange(exportedItems);
//Hvis mindre data returneres end maxPageSize, så er der ikke mere data
UNTIL currentPageItems.Count < maxPageSize
Årsagen hertil er at KITOS kører på en begrænset infrastruktur, og at enkelte API kald ikke må optage for meget tid/plads på webserveren ift. de andre klienter herunder UI brugere.
Begrænsningerne slår igennem på alle kald til OData APIet såvel som de fleste traditionelle REST API endpoints hvor datamængder af - potentielt - større karakter kan hentes ned (det fremgår af Swagger dokumentation hvis endpointet understøtter/kræver paginering)
Eksempler på URLer der anvender paginering:
API V1
OData: https://staging.kitos.dk/odata/Organizations(1)/ItSystemUsages?format=json&top=100&skip=100&orderby=ItSystem.Name&count=true
Alm. REST: https://staging.kitos.dk/api/ItSystemUsage?skip=100&take=100
API V2
https://kitos.dk/api/v2/it-systems?page=1&pageSize=100
Bemærk: I API V2 skelnes der mellem begrænset paginering (max page size på 100) og ubegrænset. For endpoints med ubegrænset paginering vil hele resultatsættet kunne hentes i et enkelt request ved at undlade pagineringsparametre. Hvilke regler der gælder for det enkelte endpoint, fremgår af Swagger dokumentation
Særligt for OData queries
OData protokollen tillader som udgangspunkt at man undlader “top” (page size). Fra efteråret 2020 vil manglende “top” fejle for API brugere, og de vil skulle anvende paginering med maks “top” på 100.