HTTP API
スクリプトは個人用アクセストークンを付けて /api/v1 を呼び出します。トークンは plainmote login と同じくデバイス認可で取得します。
トークンの取得
コードを発行します。scope は read または write、device は承認時と「認可済みアプリ」に表示される名前です。
$ curl -X POST -H 'Content-Type: application/json' \ -d '{"scope": "read", "device": "my-script"}' https://plainmote.link/api/v1/device/codeサインイン済みのブラウザで https://plainmote.link/cli/device を開き、レスポンスの user_code を入力して許可します。
interval 秒ごとに device_code でポーリングします。許可されるまでは 400 authorization_pending が返り、許可されると access_token が返ります。
$ curl -X POST -H 'Content-Type: application/json' \ -d '{"device_code": "…"}' https://plainmote.link/api/v1/device/tokenトークンは Authorization ヘッダーで送ります。アドレスや Cookie に入れたトークンは受け付けません。
$ curl -H "Authorization: Bearer $PLAINMOTE_TOKEN" https://plainmote.link/api/v1/resources
エンドポイント
| リクエスト | 権限 | 用途 |
|---|---|---|
| POST /api/v1/device/code | トークン不要 | コードを発行 |
| POST /api/v1/device/token | トークン不要 | コードをトークンと交換 |
| GET /api/v1/me | read | 使用中のアカウントとトークン |
| GET /api/v1/keyring | read | 暗号化リソース用の、アカウントのキーリング |
| GET /api/v1/resources | read | リソースを一覧表示(q で名前、tag でタグを絞り込み) |
| GET /api/v1/resources/{id} | read | リソースの詳細 |
| GET /api/v1/resources/{id}/content | read | 内容をそのままのバイト列で読み取り |
| PUT /api/v1/resources/{id}/content | write | 新しいバージョンとして保存(If-Match に編集元のバージョンを指定) |
| POST /api/v1/resources | write | multipart の content ファイルからリソースを作成(tag フィールドでタグ付け) |
| PATCH /api/v1/resources/{id}/tags | write | リソースのタグを追加・削除 |
| GET /api/v1/tags | read | アカウントのタグと件数を一覧表示 |
| POST /api/v1/quick-shares | write | クイック共有を作成してリンクを返す |
| DELETE /api/v1/token | read | 使用中のトークンを取り消す |
規約
形式JSON。ただし内容の読み取りと保存はそのままのバイト列です。時刻は UTC の RFC 3339 形式です。
エラー
{"error": "<code>", "message": "…"}トークンサインインから 90 日間有効です。読み取り専用のトークンで書き込み系を呼ぶと 403 が返ります。
レート制限トークンごとに毎分 300 回まで。超えると 429 rate_limited が返ります。
暗号化された内容暗号文のまま返され、クライアントがマスターパスワードで復号します。
対象外リソースの削除、共有リンクの管理、アクセス履歴の閲覧。
リクエストとレスポンスの形式を含む完全なリファレンスはソースコードにあります: docs/api.md