Automatiseer je eSeGeCe-downloads met de nieuwe account-API

· Toepassingen

Tot nu toe betekende het ophalen van een geregistreerde build dat je moest inloggen op je account, Downloads openen, een product kiezen en klikken. Dat is prima voor één keer, maar het is onhandig wanneer je de nieuwste installer wilt ophalen vanuit een buildscript, een CI-pipeline of een provisioningtool.

Daarom hebben we een kleine REST API aan je account toegevoegd, beschreven met OpenAPI 3.0 en ondergebracht onder /api/v1. Je authenticeert eenmalig met je gebruikelijke accountgegevens, ontvangt een token en geeft daarna precies de bestanden weer en downloadt ze waar je abonnement recht op geeft. Het hergebruikt dezelfde rechten- en ondertekeningslogica als de Downloads-pagina op het web, zodat je altijd dezelfde bestanden ziet als in de browser. En omdat het hele geheel wordt geserveerd door de sgcWebSockets OpenAPI-server, konden we ook een kant-en-klare Delphi-client meeleveren die is gebouwd op sgcOpenAPI.

1. Authenticeren

Stuur je accountgebruikersnaam en wachtwoord naar POST /api/v1/login. Je krijgt een kortlevend Bearer-access_token terug (plus een refresh_token). Geef het access_token mee in de Authorization-header bij elke andere aanroep.

curl -X POST https://www.esegece.com/api/v1/login \
  -H "Content-Type: application/json" \
  -d '{"username":"YOUR_USERNAME","password":"YOUR_PASSWORD"}'

Het antwoord bevat de tokens en een klein profiel:

{
  "token_type": "Bearer",
  "access_token": "…",
  "refresh_token": "…",
  "expires_in": 3600,
  "user": { "username": "…", "name": "…", "email": "…" }
}

Wanneer het access_token verloopt, roep je POST /api/v1/refresh aan met je refresh_token om een nieuw paar te krijgen, of log je simpelweg opnieuw in. POST /api/v1/logout trekt een token in dat je niet meer nodig hebt.

2. De bestanden die je kunt downloaden weergeven

GET /api/v1/downloads retourneert de bestanden die je account mag downloaden. Laat de version weg voor de nieuwste release, geef ?version=2026.5.0 mee voor een specifieke, of ?version=beta voor de huidige beta. Gebruik GET /api/v1/products/versions om de beschikbare versies en hun releasedatums te ontdekken.

curl "https://www.esegece.com/api/v1/downloads" \
  -H "Authorization: Bearer YOUR_ACCESS_TOKEN"

Elk item beschrijft één bestand en bevat een kortlevende, ondertekende url die de bytes streamt:

{
  "files": [
    {
      "product": "sgcWebSockets",
      "version": "2026.5.0",
      "kind": "release",
      "filename": "sgcWebSockets_2026.5.0.exe",
      "date": "2026-05-15",
      "url": "https://www.esegece.com/api/v1/dl?t=…"
    }
  ],
  "version": "2026.5.0"
}

3. Elk bestand downloaden

Elk item bevat een kant-en-klare url. Voer er gewoon een GET op uit en sla de bytes op — de link is ondertekend en kortlevend, dus vraag de lijst kort voor het downloaden op.

curl -L -o setup.exe "URL_FROM_THE_LIST"

Een Delphi-client met sgcOpenAPI

Omdat de API met OpenAPI is beschreven, kun je hem vanuit Delphi aansturen met de sgcOpenAPI-client in slechts een paar regels: inloggen, het Bearer-token instellen en daarna je bestanden weergeven (en downloaden). Je kunt de sgcOpenAPI-codegenerator ook op de specificatie richten om een volledig getypeerde client te genereren.

uses
  sgcHTTP_OpenAPI_Client;

var
  oClient: TsgcOpenAPI_Client;
  oReq: TsgcOpenAPIRequest;
  oResp: TsgcOpenAPIResponse;
  vToken: string;
begin
  oClient := TsgcOpenAPI_Client.Create(nil);
  oReq := TsgcOpenAPIRequest.Create;
  oResp := TsgcOpenAPIResponse.Create;
  try
    oClient.SetBaseURL('https://www.esegece.com');

    // 1) Log in -> Bearer token
    oReq.Method := oapiHttpPOST;
    oReq.Endpoint := '/api/v1/login';
    oReq.ContentType := 'application/json';
    oReq.Body := '{"username":"YOUR_USERNAME","password":"YOUR_PASSWORD"}';
    oClient.HTTP_REQUEST(oReq, oResp);
    vToken := GetJSONValueFromNode('access_token', oResp.ResponseText);
    oClient.Authentication.Token.BearerToken := vToken;

    // 2) List the files for the latest release
    oReq.Method := oapiHttpGET;
    oReq.Endpoint := '/api/v1/downloads';
    oReq.Body := '';
    oReq.Security := oapiSecurityToken;
    oClient.HTTP_REQUEST(oReq, oResp);
    Writeln(oResp.ResponseText);
  finally
    oResp.Free;
    oReq.Free;
    oClient.Free;
  end;
end;

We leveren een complete versie van dit programma mee — eentje die inlogt, elk bestand waar je recht op hebt weergeeft en ze allemaal downloadt — als een downloadbare .dpr vanuit je account.

Interactieve documentatie en waar je het vindt

Log in op je account en open het API-item in de zijbalk (/my-account/api). Daar vind je een Quickstart met Delphi- en curl-voorbeelden naast elkaar, een interactieve Swagger UI op /api/v1/docs, de ruwe OpenAPI-specificatie op /api/v1/openapi.json en de downloadbare Delphi-client. De pagina is beschikbaar in elke taal die het accountportaal ondersteunt.

Een opmerking over beveiliging: tokens zijn kortlevend en intrekbaar, inloggen is aan een snelheidslimiet gebonden, en elke aanvraag wordt gecontroleerd op de rechten van je account — precies zoals de Downloads-pagina op het web. Subaccounts erven de downloads van hun bovenliggende account, net zoals in de browser.

Vragen, feedback of hulp nodig om dit in je build te verwerken? Neem contact op — je krijgt antwoord van de mensen die de code hebben geschreven.