OpenAPI codegen

Genereer een PSB API-client in elke taal met OpenAPI Generator of NSwag. Download swagger.json en richt OAuth2-tokenmanagement in.

De PSB API is volledig beschreven als OpenAPI 3.0-specificatie. Werk je in een taal zonder officiële SDK (Python, Java, TypeScript, Go, Ruby, enz.), dan genereer je een typed client uit swagger.json.

Specificatie ophalen

De actuele specificatie is beschikbaar via:

  • Swagger UI: psb.econnect.eu — download swagger.json via de knop bovenaan
  • Directe URL: https://psb.econnect.eu/swagger/v1/swagger.json

In sommige omgevingen is een subscription key als queryparameter nodig:

https://psb.econnect.eu/v1/swagger.json?subscriptionKey={jouw-subscription-key}

De PSB-documentatie op psb.econnect.eu beschrijft dit patroon in de SDK-voorbeelden.

Client genereren met OpenAPI Generator

Installeer OpenAPI Generator CLI en kies een generator (-g) voor je taal:

openapi-generator-cli generate \
  -i https://psb.econnect.eu/swagger/v1/swagger.json \
  -g java \
  -o ./psb-client-java

Andere gangbare generators:

Generator (-g)Taal / frameworkpythonPythontypescript-axiosTypeScript (Axios)goGorubyRubyphpPHP (alternatief voor everbinding/econnect-psb-php)csharpC# (alternatief voor EConnect.Psb)

OpenAPI Generator ondersteunt meer dan 50 talen. Raadpleeg de generatorlijst voor opties per taal.

PHP-voorbeeld uit de SDK-documentatie

De PHP-SDK-repository toont codegen met aangepast package:

openapi-generator-cli generate \
  -g php \
  -i "https://psb.econnect.eu/v1/swagger.json?subscriptionKey={jouw-subscription}" \
  -o ./psb-client-php \
  --additional-properties=invokerPackage=EConnect\\Psb
NSwag (.NET)

Voor .NET-projecten is NSwag een alternatief naast het officiële EConnect.Psb-package:

nswag openapi2csclient /input:https://psb.econnect.eu/swagger/v1/swagger.json /output:PsbClient.cs

EConnect.Psb biedt daarnaast DI-registratie, tokenmanagement en webhook-validatie die een pure codegen-client niet heeft.

Authenticatie in gegenereerde clients

Gegenereerde clients bevatten standaard geen OAuth2-tokenmanagement. Je implementeert zelf:

  1. Token ophalen via POST /connect/token op de Identity Server
  2. Bearer token meesturen in de Authorization-header
  3. Token vernieuwen vóór expiratie (tokens zijn circa een uur geldig)
OmgevingIdentity ServerAcceptatiehttps://accp-identity.econnect.eu/connect/tokenProductiehttps://identity.econnect.eu/connect/token

Zie Authenticatie voor de Client Credentials- en Resource Owner-flows.

Voorbeeld met curl (basis voor je eigen token-logica):

TOKEN=$(curl -s -X POST https://accp-identity.econnect.eu/connect/token \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "grant_type=client_credentials" \
  -d "client_id=jouw-client-id" \
  -d "client_secret=jouw-client-secret" \
  -d "scope=ap" | jq -r '.access_token')

In productie cache je het token en vernieuw je het pas kort vóór expiratie — niet bij elk API-verzoek.

Swagger UI als referentie

Tijdens ontwikkeling is de Swagger UI handig om:

  • Endpoints per functiegebied te verkennen (SalesInvoice, Hook, Peppol, enz.)
  • Request- en responseschema's te bekijken
  • Testcalls uit te voeren met je Bearer token
Veelgestelde vragen
Moet ik codegen gebruiken of de officiële SDK?

Voor PHP en .NET zijn officiële SDK's beschikbaar met tokenmanagement en voorbeelden. Codegen is de standaardroute voor andere talen, of wanneer je volledige controle over de gegenereerde code wilt.

Hoe houd ik de client actueel bij API-wijzigingen?

Regenerate de client wanneer eConnect een nieuwe API-versie uitrolt. Vergelijk de swagger.json periodiek met je huidige versie. Breaking changes worden doorgaans gecommuniceerd via release notes en de PSB-documentatie.