Nee, “server-side filtering” zoals de Invantive UniversalSQL-variant van “query folding” tussen de Invantive UniversalSQL-engine en de platform API-server heet is momenteel bewust niet geïmplementeerd voor SnelStart.
Voor meer uitleg en geadviseerde vervolgstappen zie onderstaande tekst.
Uitdaging
SnelStart is gebaseerd op een Swagger / OpenAPI-specificatie die SnelStart bijhoudt.
SnelStart ondersteunt filters, zoals beschreven in https://b2bapi-developer.snelstart.nl/odata (vereist mogelijk aanmelden als ontwikkelaar).
Voor server-side filtering is het nodig om een filter-specificatie door te kunnen geven. Het onhandige is dat de filter-specificatie van SnelStart gebruik maakt van properties die case-sensitive zijn en in “UpperCamelCase”. De properties die SnelStart echter in de specificatie heeft staan zijn in een andere schrijfwijze. Deze andere schrijfwijze komt ook terug in de JSON.
Een voorbeeld aan de hand van artikelen:
{
"isHoofdartikel": false,
"subartikelen": [],
"artikelcode": "VOORBEELD",
"omschrijving": "Diversen diensten hoog",
"artikelOmzetgroep": {
"id": "11a35e1b-dce0-48ef-bf25-7480fb0563ff",
"uri": "/artikelomzetgroepen/11a35e1b-dce0-48ef-bf25-7480fb0563ff"
},
"verkoopprijs": 0,
"inkoopprijs": 0,
"eenheid": null,
"modifiedOn": "2023-06-29T21:44:48.51",
"relatie": null,
"isNonActief": false,
"voorraadControle": false,
"technischeVoorraad": 0,
"vrijeVoorraad": 0,
"extraVelden": [],
"id": "d691991a-9c3c-45d0-b6d0-aae11727e981",
"uri": "/artikelen/d691991a-9c3c-45d0-b6d0-aae11727e981"
}
Het gefilterd ophalen van een artikel kan met (native call):
https://b2bapi.snelstart.nl/v2/artikelen?$filter=Artikelcode ge ''VANAF''
Een alternatief is om de schrijfwijze artikelcode
zoals in de JSON hierboven te gebruiken:
https://b2bapi.snelstart.nl/v2/artikelen?$filter=artikelcode ge ''VANAF''
Deze geeft een HTTP 400 Bad request:
itgenoda137
The SnelStart server cannot or will not process the request due to an apparent client error (e.g., malformed request syntax, size too large, invalid request message framing, or deceptive request routing).
itgenclr217
The remote server returned an error:
(400) Bad Request.
Aanpak
Zoals boven beschreven zouden daarom alle filters met de hand uitgezocht moeten worden en waar mogelijk geïmplementeerd. De meeste SnelStart-administraties hebben een vrij beperkte omvang omdat SnelStart overwegend voorkomt bij wat kleinere organisaties. Daarnaast is de API op zich vrij vlot, met meerdere honderden per seconde.
Tot op zijn worden daarom geen filters geïmplementeerd.
Mocht er behoefte zijn aan specifieke filters, gelieve dan een antwoord toe te voegen met daarin per tabel de gewenste velden en de relationele operator, bijvoorbeeld in het formaat:
Tabel |
Veld |
Operator |
Artikelen |
artikelcode |
>= |
GrootboekMutaties |
Mutatiedatum |
between |
… |
|
|
Het is handig als per tabel ook opgemerkt wordt hoeveel rijen deze grofweg in totaal bevat (10.000, 100.000, 1 miljoen, etc.).