Overgang APIv1 naar APIv2

Actie vereist - APIv1 en APIv2 zullen per 1 februari 2019 niet meer beschikbaar zijn.

Gripp heeft een nieuwe versie van de API gelanceerd. Hierin zijn een aantal veranderingen doorgevoerd, welke van invloed kunnen zijn op jouw API-script. Lees deze pagina goed door en maak, waar nodig, aanpassingen in je oude APIv1 scripts.

Extra velden voor paginering toegevoegd

Naast het count-veld, zijn de volgende velden toegevoegd:
  • start: int, bijvoorbeeld: 0
  • limit: int, bijvoorbeeld: 10
  • next_start: int, bijvoorbeeld 10
  • more_items_in_collection: boolean, bijvoorbeeld: true

Paging optie verplicht bij get-call

Vanaf APIv2 is het verplicht om de paging-optie altijd mee te geven bij het uitvoeren van een get-call. De limiet is gesteld op 250. In de response van de API kan het nieuwe veld more_items_in_collection worden gebruikt om een eventueel vervolg request uit te voeren.
function getProjects($gripp_api){

    //We maken een filter om alleen de niet-gearchiveerde projecten op te halen
    $filters = array(
        array(
            "field" => "project.archived",
            "operator" => "equals",
            "value" => false
        )
    );

    //De verplichte paging optie
    $options = array(
        "paging" => array(
            "firstresult" => 0,
            "maxresults" => 250
        )
    );

    //uitvoeren van het request
    $responses = $gripp_api->project_get($filters, $options);
    $rows = $responses[0]['result']['rows'];

    //het aantal rijen in het resultaat van bovenstaande request is gelimiteerd.
    //de boolean more_items_in_collection geeft aan of er mee zijn.
    //zoja, het restant ophalen en de rijen mergen met het vorige resultaat
    while($responses[0]['result']['more_items_in_collection']){
        $options = array(
            "paging" => array(
                "firstresult" => $responses[0]['result']['next_start'],
                "maxresults" => 250
            )
        );
        $responses = $gripp_api->project_get($filters, $options);
        $rows = array_merge($rows, $responses[0]['result']['rows']);
    }

    return $rows;
}

Nieuwe API-methode: getone()

Wanneer je slechts 1 resultaat wilt met een bepaalde API-call, dan kun je de methode getone gebruiken. De werking is identiek aan de normale get methode, maar zal impliciet worden voorzien van de verplichte paging optie. Deze hoeft dus niet expliciet meegegeven te worden.

Sommige subdata niet meer meegeleverd

In de nieuwe API, is er voor gekozen om de verwerkingstijd en hoeveelheid data dat per request gemoeid gaat, te verlagen. Dit is gedaan door o.a. timelineberichten niet meer toe te voegen bij het opvragen van bijvoorbeeld een relatie, offerte of factuur.
De betreffende gegevens zijn uiteraard nog beschikbaar, maar zullen middels een extra request opgevraagd moeten worden. Wanneer subdata zoals timelineberichten nodig zijn in het API-script, dan kunnen deze middels een aparte call opgehaald worden. Wanneer timelineberichten van bijvoorbeeld meerdere facturen opgehaald moeten worden, dan kan het zinvol zijn deze gebundeld op te vragen.