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

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 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

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.