One Server

ドキュメント

組織: チーム、通知、請求、監査ログ

メンバーの招待とロール、通知チャンネル、請求書、監査ログ、そして同じことを HTTP(/api/v1)で行うパス。

組織: チーム、通知、請求、監査ログ

プロジェクトは組織に属します。以下のツールは組織全体にかかわりますが、他のツールと同じように、その組織のどれかのプロジェクトの ref で呼び出します。 ロールごとにできることが決まっていて、トークンは持ち主のロールをそのまま持ちます。 組織が複数あるときは、create_project の org(list_projects の organisation_id か組織名)でどの組織に作るかを選びます。その組織のオーナー、管理者、開発者だけが、プランのプロジェクト数の範囲で作れます。

チーム

list_team           メンバー、ロール、2段階認証の有無、承諾前の招待
invite_member       メールアドレスで招待 (admin | developer | billing | viewer)
cancel_invitation   送った招待を取り消す
set_member_role     メンバーのロールを変更
remove_member       メンバーを外す (オーナーは外せない)
set_mfa_required    すべてのメンバーに2段階認証を求める

人を直接追加する方法はありません。招待メールのリンクを本人が開くと参加します(7日間)。 変更はすべて、オーナーと管理者だけが行えます。

アクセスグループとプロジェクトへのアクセス

list_access_groups    グループ、メンバー、プロジェクトごとの役割
create_access_group   空のグループを作る
update_access_group   名前、メンバー(メールアドレス)、プロジェクトごとの役割 (developer | billing | viewer)
remove_access_group   グループを削除 (confirm に名前)
get_member_access     メンバー1人が開くプロジェクト
set_member_access     すべてのプロジェクト(scoped false)か選んだものだけ(scoped true)

共有環境変数

list_shared_env_vars    組織が複数のプロジェクトに渡す変数 (開発者以上)
create_shared_env_var   作成 (key、value、targets、projects)
update_shared_env_var   値、対象、つないだプロジェクトを変更
remove_shared_env_var   削除 (confirm に名前)

監査ログの送信先、組織の Webhook

list_audit_drains             監査ログを送る先 (https | datadog | splunk | syslog)
create_audit_drain            送り先を追加 (プランに含まれている必要あり)
set_audit_drain_enabled       止める・また送る
test_audit_drain              テストの記録を1件送る
remove_audit_drain            削除
list_org_webhooks             組織の通知を送る Webhook と署名キー
create_org_webhook            作成 (events、projects: 空ならすべて)
set_org_webhook_enabled       止める・また送る
test_org_webhook              テストイベントを送る
list_org_webhook_deliveries   送信記録
retry_org_webhook_delivery    送信を1件再送
remove_org_webhook            削除

外部コミッター、SSO、デプロイポリシー

get_committer_settings     外部コミッターのポリシー、信頼するコミッター、待機中のプレビュー
set_committer_policy       auto | require
trust_committer            このメールアドレスのプレビューは承認なしでビルド
remove_trusted_committer   また承認を待たせる
answer_preview_approval    待機中のプレビューに答える (approve | trust | decline)
get_org_sso                組織の OpenID Connect によるサインインとドメイン
set_org_sso                作成・変更 (渡した値だけ、プランに含まれている必要あり)
remove_org_sso             削除 (confirm に issuer)
add_org_sso_domain         ドメインを追加 (TXT レコードを返す)
verify_org_sso_domain      DNS で TXT レコードを確認
remove_org_sso_domain      ドメインを削除
get_org_policies           新しいプロジェクトの既定の保護、デプロイの経路、プレビュードメイン
set_org_policies           変更 (渡した値だけ)
set_preview_suffix         プレビュードメインを設定 (TXT レコードを返す)
verify_preview_suffix      DNS で TXT レコードを確認
remove_preview_suffix      プレビュードメインを削除

どれも組織全体にかかわるので、1つのプロジェクトに限った接続(project_ref)では表示されません。変更できるのはオーナーと管理者だけです(監査ログの送信先は監査ログを読める人、共有変数を読むのは開発者以上、待機中のプレビューはそのプロジェクトに書き込める人)。 組織の OAuth アプリ(/org/apps)は組織の名前で動く資格情報なので、ツールでは作りません。コンソールで人が作ります。

通知チャンネル

list_channels         Slack、KakaoWork、Webhook のチャンネルと最後の送信結果
create_channel        追加 (notices: deployments, domains, usage, billing)
test_channel          テストメッセージを1通送る
set_channel_enabled   一時停止・受信再開
remove_channel        削除

請求と記録

get_billing      1か月分の請求書と日別の使用量 (オーナー、管理者、請求担当)
get_audit_log    誰が何を変更したか(activity)、誰が個人情報にアクセスしたか(access) (オーナー、管理者)
rename_project   プロジェクト名、組織名を変更 (オーナー、管理者)
list_transfer_targets   プロジェクトを移管できる別の組織 (オーナー、管理者)
transfer_project        プロジェクトを別の組織へ移管 (現在の組織のオーナー、confirm にプロジェクト名)
get_plan             今のプランと選べるプラン (オーナー、管理者、請求担当)
get_spend_controls   支出キャップ、月の上限、今月の使用量 (オーナー、管理者、請求担当)
set_spend_cap        支出キャップのオンとオフ (オーナー、管理者、請求担当)
set_spend_limit      月の超過料金の上限と通知 Webhook (オーナー、管理者、請求担当)

カードの登録、プランの変更、アカウントのパスワードとトークン、サポートへのお問い合わせはツールでは行いません。コンソールで人が行います。

同じことを HTTP で

https://<zone>/api/v1 の下で、同じトークンを Authorization: Bearer で送ります。プロジェクト配下のパスは /projects/<ref> の下です。

GET    /regions                          POST /regions/requests {region, note}
GET    /server-sizes?region=&currency=   サーバーサイズとリージョン別の月額 (list_server_sizes)
PATCH  /projects/<ref>                   {name, organisation}
GET    /projects/<ref>/transfer          POST /projects/<ref>/transfer {organisation, confirm}
GET    /git                              POST /git/repos {provider, repo, branch}
PUT    /git/tokens/<github|gitlab>       {token, gitlab_base}     DELETE 同じパス
DELETE /git/github-app
GET    /log-drains                       POST /log-drains {name, kind, url, secret, sources}
PATCH  /log-drains/<id> {enabled}        DELETE /log-drains/<id>
DELETE /users/<id>                       PUT /auth/anonymous {enabled}
GET    /auth/sms                         PUT /auth/sms {provider, key, secret, account, sender, allowed_countries}
DELETE /auth/sms                         GET /auth/sso
GET    /auth/smtp                        PUT /auth/smtp {sender_email, sender_name, host, port, username, password}
DELETE /auth/smtp                        POST /auth/smtp/test {to}
GET    /auth/templates                   GET /auth/templates/<type>   PUT /auth/templates/<type> {subject, body}
DELETE /auth/templates/<type>            POST /auth/templates/<type>/preview {subject, body}
POST   /auth/sso {metadata_url, domains} PUT /auth/sso/<id> {domains}   DELETE /auth/sso/<id>
GET    /config/auth                      PATCH /config/auth {<キー>: <値>}
GET    /config/auth/custom-providers     POST /config/auth/custom-providers {identifier, name, provider_type, issuer, client_id, client_secret, claim_map, token_auth, pkce, jwks_uri, email_optional}
PUT    /config/auth/custom-providers/<identifier>   PATCH 同じパス {enabled}   DELETE 同じパス
GET    /config/auth/third-party-auth     POST /config/auth/third-party-auth {type, value, region, audiences}   DELETE /config/auth/third-party-auth/<id>
PUT    /function-egress {enabled}
GET    /server-memory
PUT    /server-memory {memory_mb}
GET    /concurrent-builds                PUT /concurrent-builds {concurrent_builds}
GET    /network                          POST /network/static-outbound-ip   DELETE 同じパス
GET    /team                             POST /team/invitations {email, role}
DELETE /team/invitations/<id>            PUT /team/mfa {required}
PATCH  /team/members/<email> {role}      DELETE /team/members/<email>
GET    /channels                         POST /channels {kind, name, url, notices}
POST   /channels/<id>/test               PATCH /channels/<id> {enabled}   DELETE /channels/<id>
GET    /realtime                         PUT /realtime/<テーブル> {enabled}
GET    /extensions                       PUT /extensions/<名前>   DELETE /extensions/<名前>
GET    /branches                         POST /branches {name, git_branch, with_seed}   PUT /branching {automatic, seed_sql, lifetime_days}
POST   /branches/<名前>/merge             POST /branches/<名前>/reset   DELETE /branches/<名前>
GET    /queues                           POST /queues {name, unlogged}   PUT /queues/api {exposed}   DELETE /queues/<名前>
POST   /queues/<名前>/messages {message, delay}   GET /queues/<名前>/messages?limit=   POST /queues/<名前>/purge
GET    /vault                            POST /vault {name, value, description}   PATCH·DELETE /vault/<名前>
GET    /network-restrictions             PUT /network-restrictions {allowed_cidrs, allow_all, enforce_ssl, confirm}
GET    /metrics?range=24h                GET /billing?period=YYYY-MM
GET    /billing/plan                     GET /billing/spend
PUT    /billing/spend-cap {enabled}      PUT /billing/spend-limit {spend_limit_minor, webhook_url}
POST   /deployments/sources (本文: アーカイブ)     POST /deployments {source | files, target, prebuilt}
GET    /buckets/<バケット>/objects?prefix=     POST /buckets/<バケット>/objects {name, content, encoding, upsert}
GET    /buckets/<バケット>/object?name=        DELETE /buckets/<バケット>/object?name=
POST   /buckets/<バケット>/signed-urls {name, expires_in}
PATCH  /buckets/<バケット> {public, file_size_limit, allowed_mime_types}   POST /buckets/<バケット>/empty   DELETE /buckets/<バケット> {confirm}
PATCH  /users/<id> {email, password, email_confirm, ban_duration, user_metadata, app_metadata}
POST   /users/import {users, dry_run}
POST   /users/<メール>/links {type, password, data, redirect_to}
GET    /tables/<テーブル>/csv?column=&op=&value=&sort=&desc=   POST /tables/<テーブル>/csv {csv, columns}
POST   /deployments/sources/upload-urls  その url に PUT (本文: アーカイブ、トークンなし)
POST   /projects {name, region, org}
GET    /audit?tab=activity|access&from=&to=&actor=&action=&limit=&offset=
GET    /signing                          PUT /signing {alg}
POST   /signing/rotate {grace_hours}     DELETE /signing/keys/<kid>
PUT    /domains/<ドメイン>/certificate {certificate, key}   DELETE 同じパス
PUT    /domains/<ドメイン>/redirect {to, status}       to: ドメインまたはドメイン/パス、空ならオフ