ユーザーの利用しているバージョンを保持するパッケージ管理APIの案


クライアント側のアップデート確認や利用規約・プライバシーポリシーなどの規約類の管理に使うAPIの案。

最新のバージョンを取得する

GET /packages/{package:name}/releases/latest?current_version={version}

200 { version, notes, publish_date }

current_version を渡したらそれより上のバージョンで絞り込むイメージ。バージョンで並べると面倒なので publish_date (公開日) で並べるのがいいと思う。
内部的には期限がきたら廃止するexpire_dateとかあってもいい。

特定のバージョンを取得する

GET /packages/{package:name}/releases/{release:version}

200 { version, notes, publish_date } (有効なバージョン)
204 (無効なバージョン)

有効性の確認に使う。自分の使っているバージョンが無効なバージョンなら強制アップデートや警告とか。無効な場合の処理はクライアントに任せる。

ユーザーの利用しているバージョンを取得する

GET /packages/{package:name}/current

200 { version }
204 (現在のバージョンを登録していない)

規約類とか同意したり、クライアントの使用バージョンを登録したりするときにuser:package間で紐付ける。
対応するversionがない場合はバリデーションエラーにするのがいいか。

ユーザーの利用しているバージョンを登録する

POST /packages/{package:name}/current
(version: {version})

200

version渡さずに、latestにアップデートするだけでもいいかも。

ユーザーの利用しているバージョン情報を破棄する

DELETE /packages/{package:name}/current

204

使わなかったらなくてもいいと思う。