Appset

De export via de API

Met de API vraag je een export aan, volg je de voortgang en download je de zip, zonder het dashboard. Terug naar het overzicht.


Toegang

De API gebruikt OAuth 2.0 met client credentials. Je krijgt van ons een client_id en een client_secret voor één of meer businesses.

  1. Mail naar support@appset.nl met de naam van de business en wie de koppeling gebruikt. Is de aanvrager niet de business zelf, dan vragen we de business om akkoord.

  2. Je krijgt een client_id en een client_secret. Bewaar het secret veilig: het geeft toegang tot alle gegevens van de business.

  3. Haal een token op:

    curl --request POST https://id.trinitisolutions.nl/oauth/token \
      --header 'content-type: application/json' \
      --data '{"grant_type":"client_credentials","client_id":"<client_id>","client_secret":"<client_secret>","audience":"https://api.appset.nl/"}'
    

    Het antwoord bevat access_token en expires_in (in seconden). Stuur het token mee in elke aanroep: Authorization: Bearer <access_token>. Haal een nieuw token op als het verlopen is.

Een koppeling intrekken? Mail naar support@appset.nl.

Endpoints

Basisadres: https://api.appset.nl/v1/Businesses/{business_name}/DataExports. {business_name} is de technische naam van de business, precies zoals wij hem geven (hoofdlettergevoelig).

AanroepWat
POST /v1/Businesses/{business_name}/DataExportsVraagt een export aan
GET /v1/Businesses/{business_name}/DataExportsDe exports van de laatste 7 dagen
GET /v1/Businesses/{business_name}/DataExports/{id}Eén export
GET /v1/Businesses/{business_name}/DataExports/{id}/DownloadEen downloadlink voor een export die klaar is

Een export

{
  "id": "6f1c2a7e-3b0d-4e8a-9f43-1d2c3b4a5e6f",
  "status": "Running",
  "requestedBy": "AbC123@clients",
  "requestedByName": null,
  "requestedAt": "2026-10-01T08:00:00Z",
  "startedAt": "2026-10-01T08:00:07Z",
  "finishedAt": null,
  "progress": "bestanden 1240/3100",
  "sizeBytes": null,
  "error": null,
  "expiresAt": null
}
VeldBetekenis
idKenmerk van de export
statusQueued, Running, Ready, Failed of Expired (zie hieronder)
requestedBy, requestedByNameWie de export aanvroeg. Bij een koppeling is dat de client, zonder naam.
requestedAt, startedAt, finishedAtTijdstippen in UTC
progressVoortgang als tekst, bedoeld om te tonen. Bouw er niet op: de tekst kan veranderen.
sizeBytesGrootte van de zip in bytes, als hij klaar is
errorReden als de export mislukt is
expiresAtTot wanneer de zip te downloaden is (7 dagen na het maken)
StatusBetekenis
QueuedAangevraagd, nog niet begonnen
RunningWordt gemaakt. Dat duurt van enkele minuten tot langer, afhankelijk van het aantal bestanden.
ReadyKlaar om te downloaden
FailedMislukt, zie error. Vraag een nieuwe export aan.
ExpiredNiet meer te downloaden. Vraag een nieuwe export aan.

Aanvragen

POST zonder body.

AntwoordBetekenis
202 AcceptedAangevraagd. Het antwoord is de nieuwe export.
200 OKEr liep al een export voor deze business. Het antwoord is die export.
429 Too Many RequestsMeer dan 5 aanvragen in 24 uur. De header Retry-After en het veld retryAt zeggen wanneer het weer kan.

Downloaden

Als de status Ready is, geeft GET .../{id}/Download:

{
  "url": "https://...blob.core.windows.net/...",
  "expiresAt": "2026-10-01T08:30:00Z"
}

Download het bestand van url met een gewone GET, zonder Authorization-header. Het heet appset-export-<business>-<jjjj-mm-dd>.zip. De link is 15 minuten geldig; vraag daarna een nieuwe. Elke download wordt bij ons vastgelegd. Is de export niet Ready, dan komt er 409 Conflict met de huidige status.

Fouten

CodeBetekenis
401Geen token, of een verlopen token
403Het token hoort niet bij deze business
404Business of export niet gevonden
409De export is niet klaar om te downloaden
429Limiet bereikt, zie Retry-After

Limieten

  • Eén export tegelijk per business.
  • Maximaal 5 aanvragen per business per 24 uur.
  • Een zip blijft 7 dagen beschikbaar.
  • Vraag de status niet vaker op dan eens per 30 seconden.

Compleet voorbeeld

Met curl en jq:

TOKEN=$(curl -s --request POST https://id.trinitisolutions.nl/oauth/token \
  --header 'content-type: application/json' \
  --data '{"grant_type":"client_credentials","client_id":"<client_id>","client_secret":"<client_secret>","audience":"https://api.appset.nl/"}' \
  | jq -r .access_token)

API=https://api.appset.nl/v1/Businesses/<business_name>/DataExports

ID=$(curl -s -X POST -H "Authorization: Bearer $TOKEN" $API | jq -r .id)

until [ "$(curl -s -H "Authorization: Bearer $TOKEN" $API/$ID | jq -r .status)" = "Ready" ]; do sleep 60; done

URL=$(curl -s -H "Authorization: Bearer $TOKEN" $API/$ID/Download | jq -r .url)
curl -s -o export.zip "$URL"

Gaat de status naar Failed, dan blijft deze lus wachten. Controleer in een echte koppeling ook op Failed en Expired. Controleer de zip daarna met het script op Het formaat van de export.