新しいアカウント API で eSeGeCe のダウンロードを自動化する

· アプリケーション

これまで、登録済みのビルドを入手するには、アカウントにサインインして Downloads を開き、製品を選んでクリックする必要がありました。一度だけならそれで構いませんが、ビルドスクリプトや CI パイプライン、プロビジョニングツールから最新のインストーラーを取得したい場合には扱いにくいものです。

そこで私たちは、OpenAPI 3.0 で記述された小さな REST API をアカウントに追加し、/api/v1 の下に配置しました。いつものアカウント資格情報で一度認証してトークンを取得すれば、サブスクリプションで利用できるファイルを正確に一覧表示してダウンロードできます。Web の Downloads ページと同じ権限付与ロジックと署名ロジックを再利用しているため、ブラウザーで表示されるのと常に同じファイルが表示されます。そして、これらすべてが sgcWebSockets の OpenAPI サーバーによって提供されているため、sgcOpenAPI 上に構築された、すぐに実行できる Delphi クライアントも提供できました。

1. 認証する

アカウントのユーザー名とパスワードを POST /api/v1/login に送信します。短命の Bearer アクセストークン(およびリフレッシュトークン)が返されます。その他のすべての呼び出しでは、アクセストークンを Authorization ヘッダーに渡します。

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

レスポンスにはトークンと小さなプロフィールが含まれます:

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

アクセストークンの有効期限が切れたら、リフレッシュトークンを使って POST /api/v1/refresh を呼び出して新しいペアを取得するか、単純に再度ログインします。POST /api/v1/logout は、不要になったトークンを失効させます。

2. ダウンロードできるファイルを一覧表示する

GET /api/v1/downloads は、アカウントがダウンロードできるファイルを返します。最新リリースの場合はバージョンを省略し、特定のバージョンの場合は ?version=2026.5.0 を、現在のベータの場合は ?version=beta を渡します。GET /api/v1/products/versions を使うと、利用可能なバージョンとそのリリース日を確認できます。

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

各項目は 1 つのファイルを表し、バイトをストリーミングする短命の署名付き url を含みます:

{
  "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. 各ファイルをダウンロードする

各項目には、すぐに使える url が含まれています。GET してバイトを保存するだけです — リンクは署名付きで短命なので、ダウンロードの直前に一覧をリクエストしてください。

curl -L -o setup.exe "URL_FROM_THE_LIST"

sgcOpenAPI を使った Delphi クライアント

API は OpenAPI で記述されているため、sgcOpenAPI クライアントを使えば、わずか数行で Delphi から操作できます。ログインして、Bearer トークンを設定し、ファイルを一覧表示(およびダウンロード)します。また、sgcOpenAPI のコードジェネレーターを仕様に向けることで、完全に型付けされたクライアントを生成することもできます。

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;

このプログラムの完全版 — ログインし、権限のあるすべてのファイルを一覧表示し、それらをすべてダウンロードするもの — を、アカウントからダウンロードできる .dpr として提供しています。

インタラクティブなドキュメントと入手場所

アカウントにサインインして、サイドバーの API 項目(/my-account/api)を開いてください。そこには、Delphi と curl の例を並べて示した Quickstart/api/v1/docs にあるインタラクティブな Swagger UI/api/v1/openapi.json にある生の OpenAPI 仕様、そしてダウンロード可能な Delphi クライアントがあります。このページは、アカウントポータルがサポートするすべての言語で利用できます。

セキュリティについての注記: トークンは短命で失効可能であり、ログインにはレート制限がかかっており、すべてのリクエストはアカウントの権限と照合されます — これは Web の Downloads ページとまったく同じです。サブアカウントは、ブラウザーでの場合と同様に、親アカウントのダウンロードを継承します。

ご質問やフィードバック、これをビルドに組み込む際のサポートが必要ですか? お問い合わせください — コードを書いた本人から返信が届きます。