repos
repos カテゴリの 24 個の API オペレーションを対象としています。
| メソッド | パス | 説明 |
|---|---|---|
| GET | /v1/orgs/{orgSlug}/projects/{projectName}/repos | プロジェクトのリポジトリ一覧(runlot repo list) |
| POST | /v1/orgs/{orgSlug}/projects/{projectName}/repos | リポジトリを作成します(runlot repo create) |
| GET | /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName} | 単一のリポジトリ |
| PATCH | /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName} | 名前、可視性、またはデフォルトブランチを変更します(runlot repo rename|visibility) |
| DELETE | /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName} | リポジトリを削除します(runlot repo delete) |
| GET | /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName}/ref-updates | Ref 履歴(runlot repo history) |
| GET | /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName}/deploy-hook | プッシュデプロイの設定(runlot repo hook status) |
| PUT | /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName}/deploy-hook | プッシュデプロイをオンにする、または設定を変更する(runlot repo hook set) |
| DELETE | /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName}/deploy-hook | プッシュデプロイを完全にオフにする(runlot repo hook unset) |
| POST | /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName}/deploy | プッシュせずにコミットをビルドしてデプロイする |
| GET | /v1/orgs/{orgSlug}/projects/{projectName}/builds | ビルド履歴(runlot builds list) |
| GET | /v1/orgs/{orgSlug}/projects/{projectName}/builds/{buildId} | 個々のビルド(runlot builds show) |
| GET | /v1/orgs/{orgSlug}/projects/{projectName}/builds/{buildId}/log | ビルドの出力(runlot builds log) |
| POST | /v1/orgs/{orgSlug}/projects/{projectName}/builds/{buildId}/cancel | キュー内のビルドをキャンセルする(runlot builds cancel) |
| GET | /v1/me/ssh-keys | 自分の SSH 公開鍵(runlot key list) |
| POST | /v1/me/ssh-keys | SSH 公開鍵を登録します(runlot key add) |
| DELETE | /v1/me/ssh-keys/{keyId} | SSH 公開鍵を削除します(runlot key rm) |
| GET | /v1/me/tokens | 自分のアクセストークン(runlot token list) |
| POST | /v1/me/tokens | アクセストークンを発行します(runlot token create) |
| DELETE | /v1/me/tokens/{tokenId} | アクセストークンを失効させます(runlot token revoke) |
| GET | /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName}/refs | ブランチとタグを一覧表示する |
| GET | /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName}/tree | 1 つのディレクトリを一覧表示する |
| GET | /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName}/blob | 1 つのファイルを読み取る |
| GET | /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName}/commits | コミットログ |
GET /v1/orgs/{orgSlug}/projects/{projectName}/repos
viewer 以上が必要です。
リポジトリはプロジェクトに属します。 アクセス権は org 内のロールによって管理され、リポジトリ名はプロジェクト内で一意です。1 つのプロジェクトに複数のリポジトリ(アプリ・API・インフラ)を持たせることができます。
operationId listRepos
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | リポジトリ一覧 | object |
| 403 | — | — |
| 404 | — | — |
POST /v1/orgs/{orgSlug}/projects/{projectName}/repos
member 以上が必要です。repo.create として監査記録されます。
リポジトリは直ちに登録されます。ストレージは初回アクセス時に作成されるため、リポジトリサーバーが一時的に利用できない場合でもこの呼び出しは成功します。
operationId createRepo
リクエストボディ: application/json ・ object
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 201 | 作成されたリポジトリ | Repo |
| 400 | — | — |
| 403 | — | — |
| 404 | — | — |
| 409 | このプロジェクトには同じ名前のリポジトリが既に存在します(repo_exists) | Error |
GET /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName}
単一のリポジトリ
operationId getRepo
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | リポジトリ | Repo |
| 403 | — | — |
| 404 | — | — |
PATCH /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName}
管理者権限が必要です。repo.updateとして監査されます。
名前の変更はメタデータの変更のみです。名前を変更しても、進行中のプッシュが中断されることはありません。
operationId updateRepo
リクエストボディ: application/json ・ object
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 204 | 変更済み | — |
| 400 | — | — |
| 403 | — | — |
| 404 | — | — |
| 409 | その名前のリポジトリは既に存在します(repo_exists) | Error |
DELETE /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName}
管理者権限が必要です。repo.deleteとして監査されます。
これはソフトデリートです。 リポジトリは URL への応答を直ちに停止しますが、保存されているコピーは保持期間の経過後に削除されるため、削除を取り消せる猶予期間があります。
operationId deleteRepo
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 204 | 削除済み | — |
| 403 | — | — |
| 404 | — | — |
GET /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName}/ref-updates
閲覧者以上の権限が必要です。直近200件のエントリです。
これは監査ログではなく、リポジトリ自体の ref 履歴です。old は、force-push で失われたコミットを復元する際に必要になります。
operationId listRefUpdates
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | Ref履歴 | object |
| 403 | — | — |
| 404 | — | — |
GET /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName}/deploy-hook
viewer 以上が必要です。
configured は、一度もフックが設定されたことがない場合に false になります。これは、フックが存在していてオフになっている状態(enabled)とは異なります。フックが存在しない場合、branch にはリポジトリのデフォルトブランチが提案値として設定されます。
operationId getDeployHook
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | フック | DeployHook |
| 403 | — | — |
| 404 | — | — |
PUT /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName}/deploy-hook
admin 権限が必要です。一方、デプロイ自体には member 権限が必要です。
フックをオンにすると、書き込み権限を持つ誰かが今後 branch にプッシュするたびに、それは本番デプロイとなり、フックをオンにした本人として実行されます。これは恒常的な権限付与であるため、deploy スコープのトークンではフックを作成できません。
省略されたフィールドは現在の値を保持するため、スイッチとブランチを別々に送信しても、一方がもう一方をリセットすることはありません。
operationId setDeployHook
リクエストボディ: application/json ・ object
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | 現在のフックの状態 | DeployHook |
| 400 | — | — |
| 403 | — | — |
| 404 | — | — |
DELETE /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName}/deploy-hook
admin 権限が必要です。プッシュデプロイを完全にオフにします。過去のビルドは、現在も稼働しているデプロイを生成したものであるため保持されます。
operationId deleteDeployHook
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 204 | 削除済み | — |
| 403 | — | — |
| 404 | — | — |
POST /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName}/deploy
member 権限が必要です。commitSha のビルドをキューに追加します。commitSha が省略された場合は、フック対象ブランチの先端のビルドをキューに追加します。
これはプッシュによるデプロイと同じ設定を使用するため、プッシュデプロイフックがオフまたは未設定のリポジトリでは、ビルドの代わりに 409 deploy_hook_off が返されます。フックがなければ、ルートディレクトリも、デプロイを実行する主体も存在しないためです。
operationId deployRepoNow
リクエストボディ: application/json ・ object
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 202 | キューに追加されました | object |
| 400 | — | — |
| 403 | — | — |
| 404 | — | — |
| 409 | deploy_hook_off — このリポジトリではプッシュデプロイがオンになっていません | Error |
GET /v1/orgs/{orgSlug}/projects/{projectName}/builds
viewer 以上の権限が必要です。新しい順に表示され、キュー内のビルドが先頭に表示されます。
当月のビルド時間(分)が一覧と一緒に返されるため、1 回のリクエストでビルド画面の表示に必要な情報がすべて揃います。
ログはこの一覧には含まれません。 ログは最大 1 MiB になることがあるため、/builds/{buildId}/log から個別に取得します。
operationId listBuilds
| パラメーター | 場所 | 必須 | 型 | 説明 |
|---|---|---|---|---|
limit | query | 不可 | integer | — |
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | ビルド | object |
| 400 | — | — |
| 403 | — | — |
GET /v1/orgs/{orgSlug}/projects/{projectName}/builds/{buildId}
個々のビルド(runlot builds show)
operationId getBuild
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | ビルド | Build |
| 403 | — | — |
| 404 | — | — |
GET /v1/orgs/{orgSlug}/projects/{projectName}/builds/{buildId}/log
viewer 以上の権限が必要です。JSON ではなく text/plain として返されます。これは生のビルド出力であり、クライアント側でそのまま表示できます。
上限は 1 MiB で、末尾が保持されます。失敗したビルドではエラーが末尾に現れるためです。上限が適用された場合、その旨が 1 行目に記載されます。
operationId getBuildLog
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | ログ | string |
| 403 | — | — |
| 404 | — | — |
POST /v1/orgs/{orgSlug}/projects/{projectName}/builds/{buildId}/cancel
member 権限が必要です。キャンセルできるのはキュー内のビルドのみです。 すでに開始されたビルドは停止できず、20 分後に自動的に終了します。
operationId cancelBuild
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 204 | キャンセルされました | — |
| 403 | — | — |
| 404 | — | — |
| 409 | build_not_queued — すでにビルド中か、すでに終了しています | Error |
GET /v1/me/ssh-keys
自分の SSH 公開鍵(runlot key list)
operationId listSSHKeys
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | キー一覧 | object |
POST /v1/me/ssh-keys
公開鍵のフィンガープリントはグローバルに一意です。 鍵そのものが識別子であるため、同じ鍵を 2 回登録することはできません。既に存在する鍵は 409 ssh_key_exists を返します。
許可される鍵種別: ed25519、ecdsa-sha2-nistp256/384/521、rsa(2048ビット以上)。DSAは拒否されます。
operationId addSSHKey
リクエストボディ: application/json ・ object
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 201 | 登録された鍵 | SSHKey |
| 400 | — | — |
| 409 | 公開鍵は既に登録済みです(ssh_key_exists) | Error |
DELETE /v1/me/ssh-keys/{keyId}
即座に反映されます。 このキーは、この呼び出しが返ると同時に Git アクセスで使用できなくなります。キャッシュによる遅延はありません。
operationId deleteSSHKey
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 204 | 削除済み | — |
| 404 | — | — |
GET /v1/me/tokens
トークンの平文は保存されないため、ここで返されることはありません。
operationId listAccessTokens
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | トークン一覧 | object |
POST /v1/me/tokens
平文のトークンはこのレスポンスでのみ返されます。 再度取得することはできません。
Git は HTTPS 経由で Basic 認証を送信します。ユーザー名は無視され、パスワードフィールドのトークンのみが読み取られます。プレフィックス runlot_pat_ は固定されており、リポジトリ・ログ・ペーストの中で漏洩したトークンを機械的に検出できるようになっています。
トークンは、scopes の集合・org または project の制限・有効期限という 3 つの独立した軸で絞り込めます。デフォルトの有効期限は90 日で、最大は 365 日です。noExpiry は期限のないクレデンシャルを作成する唯一の方法であり、明示的に設定する必要があります。
org または project の制限は、あなた自身のメンバーシップと照合されるため、所属していない org にトークンを固定することはできません。
operationId createAccessToken
リクエストボディ: application/json ・ object
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 201 | 発行されたトークン(平文を含む) | AccessTokenCreated |
| 400 | — | — |
DELETE /v1/me/tokens/{tokenId}
トークンを削除する代わりに revokedAt を設定するため、その存続期間はトークン一覧に表示され続けます。即座に反映されます — キャッシュによる遅延はありません。
operationId revokeAccessToken
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 204 | 破棄済み | — |
| 404 | — | — |
GET /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName}/refs
viewer 以上が必要です。
リポジトリ内のすべてのブランチとタグを、デフォルトブランチとともに一覧表示します。これはダッシュボードが使用する閲覧用 API です。クローン・フェッチ・プッシュは代わりに Git トランスポート経由で行われます。
operationId getRepoRefs
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | Refの一覧 | RepoRefs |
| 403 | — | — |
| 404 | — | — |
| 503 | Git ホスティングが一時的に利用できません(git_unavailable、git_unreachable) | Error |
GET /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName}/tree
viewer 以上が必要です。path が空の場合はリポジトリのルートになります。
ディレクトリは 1000 件のエントリで切り詰められます。 その場合、レスポンスの truncated が true になります。
リポジトリの外に出るパス(a/../..)は 404 を返します。
operationId getRepoTree
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | ディレクトリ | RepoTree |
| 403 | — | — |
| 404 | リポジトリ、ref、またはパスが存在しません(no_ref・no_path) | Error |
GET /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName}/blob
viewer 以上が必要です。
1 MiB を超えるファイルは content を伴って返されません — tooLarge が true になり、content は空になります。バイナリファイルも content を持ちません(binary が true)。
operationId getRepoBlob
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | ファイル | RepoBlob |
| 403 | — | — |
| 404 | リポジトリ、ref、またはパスが存在しません(no_ref・no_path) | Error |
GET /v1/orgs/{orgSlug}/projects/{projectName}/repos/{repoName}/commits
viewer 以上が必要です。最大 200 件のコミットを返します。デフォルトも 200 件です。
operationId getRepoCommits
| パラメーター | 場所 | 必須 | 型 | 説明 |
|---|---|---|---|---|
limit | query | 不可 | integer | — |
| ステータスコード | 説明 | レスポンスボディ |
|---|---|---|
| 200 | コミット一覧 | object |
| 403 | — | — |
| 404 | — | — |