本文へ移動
runlot
リファレンスAPIプロジェクト

プロジェクト

projects カテゴリの 8 つの API オペレーションを扱います。

メソッドパス説明
GET/v1/orgs/{orgSlug}/projects—
POST/v1/orgs/{orgSlug}/projectsプロジェクトを作成する
GET/v1/orgs/{orgSlug}/projects/{projectName}—
PATCH/v1/orgs/{orgSlug}/projects/{projectName}プロジェクトの名前を変更します(runlot project rename)
DELETE/v1/orgs/{orgSlug}/projects/{projectName}project の削除(runlot project delete)
GET/v1/orgs/{orgSlug}/projects/{projectName}/overviewプロジェクト概要(ダッシュボードホーム)
POST/v1/orgs/{orgSlug}/projects/{projectName}/disableプロジェクトを無効にする (データは保持)
POST/v1/orgs/{orgSlug}/projects/{projectName}/enable無効にしたプロジェクトを有効にする

GET /v1/orgs/{orgSlug}/projects

operationId listProjects

ステータスコード説明レスポンスボディ
200組織のプロジェクトobject
403——
404——

POST /v1/orgs/{orgSlug}/projects

プロジェクトを作成すると、デフォルトのホスト名も発行されます。この時点ではまだ何も稼働していません——プロジェクトは最初のデプロイでサービスの提供を開始します。

ここでプランのプロジェクト上限が適用され、同時作成であってもこの上限を超えることはできません。

operationId createProject

リクエストボディ: application/json ・ object

ステータスコード説明レスポンスボディ
201作成されたプロジェクトProject
403——
409その名前はすでに使用されています(project_name_taken、hostname_taken)。または、プランのプロジェクト上限に達しています(project_limit)。project_limit の details は {limit, count, plan} です——メッセージを解析するのではなく、ここから数値を読み取ってください。再試行しても結果が変わらないため、409 になります。Error

GET /v1/orgs/{orgSlug}/projects/{projectName}

operationId getProject

ステータスコード説明レスポンスボディ
200プロジェクトProjectDetail
403——
404——

PATCH /v1/orgs/{orgSlug}/projects/{projectName}

admin 以上の権限が必要です。project.rename として監査され、旧名は detail.from に記録されます。

org スラッグとは異なり、プロジェクト名は変更できます。 これは *.<slug>.runlot.app ワイルドカード内のラベルであるため、既存の証明書はすでに新しい名前をカバーしており、変わるのはプロジェクトのデフォルトホスト名だけです。カスタムドメインは影響を受けません。

保存されているデータは一切移動しません。 データベース・オブジェクトストレージ・生成チェーン・使用量・シークレット・git リポジトリはすべて、そのままの場所に残ります。

壊れるのは外部のコピーです:各自の runlot.json の name、登録済みの git リモート、すでに設定に貼り付けられた Postgres 接続文字列です。古いアドレスはエイリアスとして保持されません。レスポンスには新しいアドレスが含まれます。

プロジェクトのメールアドレスは追従しません。 外部からすでにそこへメールが送信されているため、付与時に固定されます。移動するには取り消して再度付与してください。

operationId updateProject

リクエストボディ: application/json ・ object

ステータスコード説明レスポンスボディ
200名前変更後のプロジェクトと、その新しいアドレスProject
400——
403——
404——
409この org 内の別のプロジェクトがすでにその名前を使用している(project_name_taken)か、使用するはずのホスト名がすでに使用中です(hostname_taken)。削除中のプロジェクトは project_deleting を返します。Error

DELETE /v1/orgs/{orgSlug}/projects/{projectName}

admin 以上が必要です。これは取り消せず、後で復元できるリカバリー世代もありません。 必要なものは先に runlot pg export でエクスポートしてください。

confirm フィールドには正確なプロジェクト名を指定する必要があります。

この呼び出しが返る時点で、プロジェクトはすでに消えています。 プロジェクト一覧、GET、git、メールのいずれからも消え、その名前はすぐにまた使用できるようになります。ポーリングする必要も、待つ必要もありません。

その裏側では、削除は 2 つのステップで実行されます。最初のステップはルーティングを遮断し、処理中のリクエストをドレインするため、アドレスは数秒以内に応答を停止します。2 番目のステップはデータ — データベースファイル、オブジェクトストレージ、リポジトリ、バンドル、レコード — を破棄しますが、これはデフォルトで 1 か月後の purgeAfter まで実行されません。この期間中は誰もそこにアクセスできず、元に戻す方法もありません。

202 には operation id が含まれており、GET /v1/orgs/{orgSlug}/operations/{opId} で読み取ることができ、最初のステップを報告します。クライアントはこれをブロッキングで待つべきではありません。

operationId deleteProject

リクエストボディ: application/json ・ object

ステータスコード説明レスポンスボディ
202削除を開始しましたOperationStarted
400——
403——
404——
409別のオペレーションが進行中(op_in_flight)Error

GET /v1/orgs/{orgSlug}/projects/{projectName}/overview

プロジェクトのホーム画面に必要なすべてを 1 回の呼び出しで取得します — 現在配信中のデプロイメントとそのアップロード者、直近のデプロイメントの一部、データベースの最後のバックアップ、宣言されたリソースがプロビジョニングされているか、そしてこのプロジェクトの最近の通知です。これが答えるのは「今どうなっているか」であり、履歴ではありません — それはタブが担います。

使用状況は含まれません。合わせて getUsage を呼び出してください。viewer 以上が必要です。

operationId getProjectOverview

ステータスコード説明レスポンスボディ
200プロジェクトの概要ProjectOverview
403——
404——

POST /v1/orgs/{orgSlug}/projects/{projectName}/disable

admin 以上のロールが必要です。プロジェクトは配信を停止し、新しいバックアップも取得しなくなります。何も削除されません。 データベース・ファイル・リポジトリ・取得済みのバックアップはすべて残り、enableProject で元に戻せます。無効なプロジェクトはプランのプロジェクト数の上限に含まれないため、プランの上限を超えるプロジェクトを持つ org は、この操作でデプロイを再開できます。

1 年間無効のままにしたプロジェクトは、deleteAfter に完全に削除されます。すでに無効なプロジェクトに対して呼び出しても、何も変わりません。project.disable として監査ログに記録されます。

operationId disableProject

ステータスコード説明レスポンスボディ
200プロジェクトの無効状態ProjectDisabled
403——
404——

POST /v1/orgs/{orgSlug}/projects/{projectName}/enable

admin 以上のロールが必要です。プロジェクトは再び配信を行い、バックアップも再開します。project.enable として監査ログに記録されます。

operationId enableProject

ステータスコード説明レスポンスボディ
200プロジェクトの無効状態ProjectDisabled
403——
404——
409project_limit — org がすでにプランの上限までアクティブなプロジェクトを持っています。先に別のプロジェクトを無効にするか削除するか、プランをアップグレードしてください。Error

このページの目次