One Server

문서 · 레퍼런스

MCP 서버

AI 도구가 이 플랫폼을 직접 다루게 해요. 도구 494개를 MCP 서버(mcp.ts)에서 읽어 이 페이지를 만들어요. 이 목록은 서버 코드에서 만들어져요. 새 기능이 생기면 여기에도 바로 나타나요.

연결하기

MCP 주소

https://end.blackall.ai/mcp?lang=ko

한 주소로 JSON-RPC를 POST로 주고받아요. ?lang=ko, ?lang=en, ?lang=ja로 도구 설명과 오류의 언어를 골라요. 아무것도 없으면 Accept-Language를 따르고, 그것도 없으면 영어예요.

주소 옵션

주소 뒤에 붙여 이 연결이 보고 할 수 있는 것을 줄여요. 목록에서 빠진 도구는 이름으로 불러도 거절돼요. 도구가 적을수록 AI가 덜 헤매요. 지금 켜진 옵션은 whoami로 봐요.

옵션설명
project_ref프로젝트 하나로 묶어요. ref를 비우면 이 프로젝트로 하고, 다른 ref는 거절해요. list_projects도 이 프로젝트만 보여 주고, 조직 전체를 다루는 도구(새 프로젝트, 팀, 알림 채널, 감사 로그, 결제)는 빠져요.
read_onlytrue면 읽기 도구만 보이고, 연결 전체가 읽기 토큰처럼 동작해요.
features쉼표로 고른 도구 그룹만 보여요. whoami와 list_projects는 늘 있어요. 모르는 그룹을 넣으면 쓸 수 있는 그룹을 알려 줘요.
langko, en, ja. 도구 설명, 안내, 오류의 언어예요.
https://end.blackall.ai/mcp?lang=ko&project_ref=<ref>&read_only=true&features=database,deploy

Claude나 ChatGPT 커넥터에는 옵션을 붙인 주소를 그대로 넣어요. 동의 화면에서도 프로젝트 하나를 고르고 쓰기를 끌 수 있고, 그 선택은 연결에 저장돼요.

도구 그룹

그룹도구 수이름
account106whoami list_projects list_regions list_server_sizes request_region create_project rename_project list_transfer_targets transfer_project pause_project resume_project delete_project retry_provisioning get_project_archive restore_project_archive create_archive_download_url get_project_keys list_api_keys create_api_key revoke_api_key list_team invite_member cancel_invitation set_member_role remove_member set_mfa_required list_channels create_channel test_channel set_channel_enabled remove_channel get_audit_log import_sources start_import get_import list_shared_env_vars create_shared_env_var update_shared_env_var remove_shared_env_var list_access_groups create_access_group update_access_group remove_access_group get_member_access set_member_access list_audit_drains create_audit_drain set_audit_drain_enabled test_audit_drain remove_audit_drain list_org_webhooks create_org_webhook set_org_webhook_enabled test_org_webhook list_org_webhook_deliveries retry_org_webhook_delivery remove_org_webhook get_committer_settings set_committer_policy trust_committer remove_trusted_committer answer_preview_approval get_org_sso set_org_sso remove_org_sso add_org_sso_domain verify_org_sso_domain remove_org_sso_domain get_org_policies set_org_policies set_preview_suffix verify_preview_suffix remove_preview_suffix list_platform_settings set_platform_setting clear_platform_setting list_platform_servers get_platform_cpu_history request_platform_server_change get_platform_server_request cancel_platform_server_request list_github_variables set_github_variable delete_github_variable list_platform_operators add_platform_operator remove_platform_operator list_platform_runs cancel_platform_run rerun_platform_run list_platform_checks set_merge_when_green get_ci_machines restart_ci_machine renew_ci_registration set_up_build_cache_bucket get_platform_overview find_customer list_parking_hosts list_project_placements get_platform_server_pricing set_platform_server_pricing set_platform_server_size start_support_session end_support_session list_support_sessions
database59list_tables list_policies query_sql run_sql read_rows export_table_csv import_table_csv get_database_connection reset_database_password list_backups create_backup restore_backup list_db_webhooks create_db_webhook set_db_webhook_enabled list_db_webhook_deliveries remove_db_webhook list_schemas set_exposed_schemas get_data_api_settings set_data_api_settings get_database_settings set_database_settings list_extensions enable_extension disable_extension list_vault_secrets create_vault_secret copy_vault_secrets_from_project set_vault_project_keys update_vault_secret delete_vault_secret get_network_restrictions update_network_restrictions list_migrations apply_migrations remove_migration_record dump_schema generate_typescript_types get_database_move move_to_dedicated_database get_dedicated_disk request_dedicated_disk shrink_dedicated_disk get_server request_server resize_server set_standby move_server release_server set_restore_days list_mysql_databases create_mysql_database bind_mysql_database delete_mysql_database get_mysql_connection create_mysql_backup list_mysql_backups restore_mysql_backup
auth57list_users add_user import_users update_user generate_link remove_user list_auth_providers set_auth_provider set_auth_provider_enabled remove_auth_provider get_smtp_settings set_smtp_settings test_smtp_settings remove_smtp_settings get_email_templates set_email_template preview_email_template remove_email_template get_sms_settings set_sms_settings remove_sms_settings list_sso_providers add_sso_provider update_sso_provider remove_sso_provider get_auth_config update_auth_config list_custom_providers create_custom_provider update_custom_provider set_custom_provider_enabled remove_custom_provider list_third_party_auth add_third_party_auth remove_third_party_auth list_redirect_urls add_redirect_url remove_redirect_url set_anonymous_sign_in copy_auth_from_import copy_auth_from_project copy_users_from_project copy_schema_from_project copy_data_from_project get_jwt_signing set_jwt_signing rotate_signing_key retire_signing_key get_passkey_settings set_passkey_settings list_user_factors remove_user_factors remove_user_passkey list_oauth_apps create_oauth_app reset_oauth_app_secret remove_oauth_app
storage41list_s3_keys create_s3_key revoke_s3_key list_buckets create_bucket update_bucket empty_bucket delete_bucket list_objects upload_object download_object delete_object create_upload_url create_signed_url copy_storage_from_import copy_storage_from_project list_kv_keys get_kv set_kv delete_kv get_edge_config set_edge_config get_edge_config_history list_edge_config_tokens create_edge_config_token connect_edge_config_token disconnect_edge_config_token revoke_edge_config_token get_storage_settings set_storage_settings set_s3_enabled set_bucket_versioning list_object_versions restore_object_version remove_object_version list_bucket_connections connect_bucket disconnect_bucket list_storage_policies create_storage_policy remove_storage_policy
functions25list_functions get_function deploy_function set_function_public set_function_limits remove_function list_function_secrets set_function_secrets copy_function_secrets copy_functions_from_project get_project_forward set_project_forward get_project_write_lock set_project_write_lock compare_projects_data delete_function_secret set_function_egress list_jobs save_job copy_jobs_from_project set_job_enabled run_job list_job_runs remove_job set_job_retention
deploy106list_deployments get_deployment redeploy promote_deployment rollback_deployment deploy_commit deploy_files deploy_source create_source_upload_url list_deploy_hooks create_deploy_hook remove_deploy_hook list_apps update_app delete_app get_preview_protection set_preview_protection get_branch_previews set_branch_previews list_env_vars set_env_vars remove_env_var list_git_access set_repo_token remove_repo_token add_repository list_importable_repositories import_repository disconnect_repository set_checks_on_server link_github_app unlink_github_app get_server_memory set_server_memory get_concurrent_builds set_concurrent_builds get_rolling_releases set_rolling_releases advance_rolling_release promote_rolling_release abort_rolling_release get_middleware set_middleware list_flags evaluate_flag set_flag_enabled get_remote_cache clear_remote_cache list_volumes create_volume resize_volume delete_volume create_volume_backup restore_volume_backup get_deployment_retention set_deployment_retention list_deleted_deployments delete_deployment restore_deployment set_protection_scope create_bypass_secret revoke_bypass_secret create_share_link revoke_share_link list_environments create_environment update_environment remove_environment set_domain_environment get_flag create_flag update_flag set_flag_environment add_flag_rule move_flag_rule remove_flag_rule set_flag_archived list_flag_segments create_flag_segment update_flag_segment remove_flag_segment list_flag_sdk_keys create_flag_sdk_key revoke_flag_sdk_key list_project_webhooks create_project_webhook set_project_webhook_enabled test_project_webhook list_project_webhook_deliveries retry_project_webhook_delivery remove_project_webhook list_remote_cache_tokens create_remote_cache_token revoke_remote_cache_token get_build_settings set_build_dev_settings set_ignored_build_step set_production_first set_git_checks set_expose_system_env set_directory_listing get_deployment_security set_deployment_security get_routing_rules save_routing_rules activate_routing_rules
domains28list_domains add_domain remove_domain set_domain_redirect move_domain get_edge set_edge purge_edge_cache get_network set_static_outbound_ip upload_certificate remove_certificate get_firewall save_firewall_rule move_firewall_rule set_firewall_rule_enabled remove_firewall_rule set_firewall_managed publish_firewall reset_firewall_draft restore_firewall_version set_attack_mode get_bulk_redirects upload_bulk_redirects activate_bulk_redirects get_skew_protection set_skew_protection purge_edge_cache_item
branching6list_branches create_branch merge_branch reset_branch delete_branch set_branching
logs21get_logs get_advisors list_log_drains create_log_drain set_log_drain_enabled remove_log_drain get_metrics get_analytics get_speed_insights set_insights get_analytics_breakdown set_analytics_previews export_analytics list_analytics_reports get_analytics_report save_analytics_report remove_analytics_report list_alert_rules create_alert_rule set_alert_rule_enabled remove_alert_rule
billing6usage get_billing get_plan get_spend_controls set_spend_cap set_spend_limit
ai15get_ai_gateway set_ai_gateway add_ai_provider set_ai_provider_enabled remove_ai_provider get_ai_gateway_logs set_ai_budgets list_ai_gateway_keys create_ai_gateway_key set_ai_gateway_key_budgets set_ai_gateway_key_limits set_ai_model_aliases set_ai_gateway_hooks revoke_ai_gateway_key get_ai_spend
realtime7list_realtime_tables set_realtime get_realtime_settings set_realtime_settings list_realtime_policies create_realtime_messages_table add_realtime_policy
queues8list_queues create_queue delete_queue purge_queue send_queue_message peek_queue set_queues_api get_queue_metrics
gpu9list_gpu create_gpu_job get_gpu_job cancel_gpu_job create_gpu_server stop_gpu_server delete_gpu_server create_gpu_volume delete_gpu_volume

Claude와 ChatGPT

claude.ai, Claude Desktop, ChatGPT에서는 커스텀 커넥터에 MCP 주소를 넣어요. 로그인하고 허용하면 바로 연결돼요(토큰 필요 없음). 동의 화면에서 쓰기 권한을 빼면 읽기 전용이 돼요.

Claude Code

아래 명령으로 추가하면 처음 쓸 때 브라우저가 열려 로그인해요.

claude mcp add --transport http oneend "https://end.blackall.ai/mcp?lang=ko"

토큰으로 연결하기

브라우저를 열 수 없는 곳(CI, 서버)에서는 계정 → API · MCP 토큰에서 만든 bwk_… 토큰을 헤더로 넣어요. 다른 MCP 클라이언트도 같은 모양의 설정을 받아요.

claude mcp add --transport http oneend "https://end.blackall.ai/mcp?lang=ko" \
  --header "Authorization: Bearer bwk_…"
{
  "mcpServers": {
    "oneend": {
      "type": "http",
      "url": "https://end.blackall.ai/mcp?lang=ko",
      "headers": {
        "Authorization": "Bearer bwk_…"
      }
    }
  }
}

OAuth (ADR 0016)

콘솔이 권한 서버예요. 토큰 없이 initialize나 tools/call을 보내면 401과 WWW-Authenticate 헤더가 돌아오고, 클라이언트는 이를 따라 아래 주소를 찾아요. 동적 클라이언트 등록(RFC 7591)과 클라이언트 메타데이터 문서를 모두 받고, 모든 인가에 PKCE S256이 필요해요. 액세스 토큰은 1시간 유효하고, 리프레시 토큰은 한 번만 쓸 수 있어요.

주소쓰임
https://end.blackall.ai/.well-known/oauth-protected-resource보호된 리소스 메타데이터
https://end.blackall.ai/.well-known/oauth-authorization-server권한 서버 메타데이터
https://end.blackall.ai/oauth/register클라이언트 등록 (RFC 7591)
https://end.blackall.ai/oauth/authorize로그인과 동의 화면
https://end.blackall.ai/oauth/token코드와 리프레시 토큰을 액세스 토큰으로 교환
https://end.blackall.ai/oauth/revoke토큰 폐기

프로토콜

MCP 2025-06-18, 상태 없는 HTTP예요. 요청 하나에 응답 하나이고 스트림은 없어요(GET은 405). tools/list, resources/*, prompts/*는 토큰 없이 읽을 수 있고, initialize와 tools/call은 토큰이 필요해요. 도구의 실패는 프로토콜 오류가 아니라 isError: true인 결과로 돌아와요.

지원하는 메서드

  • tools/call
  • initialize
  • ping
  • tools/list
  • resources/list
  • resources/read
  • prompts/list
  • prompts/get
curl -X POST "https://end.blackall.ai/mcp?lang=ko" \
  -H "content-type: application/json" \
  -H "Authorization: Bearer bwk_…" \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/call","params":{"name":"list_projects","arguments":{}}}'

문서와 절차

서버는 이 사이트의 문서를 MCP 리소스로, 단계별 안내를 프롬프트로 함께 줘요.

리소스이름설명
blackwall://start처음부터 끝까지도구를 쓰는 순서. 무엇부터 부를지 모를 때 이것부터 읽으세요.
blackwall://switchSupabase·Vercel에서 옮기기Supabase나 Vercel로 만든 앱을 옮기는 순서: 데이터베이스, supabase-js, 로그인, 함수, 배포. 그대로 도는 것과 확인할 것.
blackwall://access-rules접근 규칙새 표가 왜 비어 보이는지. 이 플랫폼에서 가장 자주 틀리는 곳이라 먼저 읽으세요.
blackwall://keys키 세 종류공개 키·비밀 키·접근 토큰의 쓰임과, 어느 것을 브라우저에 두면 안 되는지.
blackwall://data-api데이터 읽고 쓰기질의 문법, 연산자, 한글 부분 검색.
blackwall://extensionsDB 확장pgvector(임베딩 검색)와 PostGIS(지도) 같은 확장을 켜고 끄는 법, 켤 수 있는 목록, 공유 데이터베이스에서의 동작.
blackwall://branchesDB 브랜치git 브랜치마다 미리보기 데이터베이스: 만들기, 미리보기 배포에 연결, 병합, 초기화, 삭제, 요금.
blackwall://database-features대기열 · Vault · GraphQL · 접속 제한pgmq와 같은 대기열, 데이터베이스 안의 암호화된 비밀(Vault), /graphql/v1, 직접 연결의 주소 제한과 TLS.
blackwall://auth로그인 붙이기이메일·비밀번호와 소셜 로그인. 토큰이 어디로 돌아오는지.
blackwall://realtime실시간 구독표마다 켜야 한다는 것과, 접근 규칙이 실시간에도 걸린다는 것.
blackwall://storage파일버킷과 업로드, 공개와 비공개의 차이, S3로 쓰기, Supabase에서 파일 옮기기, 이어 올리기(TUS).
blackwall://env환경 변수배포한 앱에 API 키 같은 값을 넣는 법, 언제 반영되는지, 쓸 수 없는 이름.
blackwall://logs로그앱이 오류를 낼 때 무엇이 일어났는지 보는 법. 출처별로 무엇이 남는지.
blackwall://deploy배포저장소 연결, 프로덕션 브랜치, 모노레포의 빌드 폴더.
blackwall://functions함수, 예약 작업, 데이터베이스 웹훅함수 코드의 모양, 할 수 있는 것과 없는 것(외부 요청은 켜야 가능), 호출하는 법, cron 일정(UTC), 표 변경을 외부로 알리는 웹훅.
blackwall://domains도메인과 엣지도메인 연결·확인·리디렉트, API용 도메인, 방화벽과 요청 한도, 엣지 캐시.
blackwall://edge엣지: 분석, 엣지 설정, KV, AI 게이트웨이, 점진적 배포, 미들웨어사이트 앞에서 도는 것: 개인정보 없는 웹 분석과 속도 측정, 배포 없이 바꾸는 값과 기능 플래그, 키-값 저장소, OpenAI 호환 AI 게이트웨이, 새 배포를 일부 방문자에게 먼저 보내기, middleware.ts.
blackwall://previews프리뷰 보호프리뷰 주소를 누가 열 수 있는지, 자동화에서 통과하는 법.
blackwall://limits한도와 요금무료는 한 사람의 GitHub 사이트 하나만, 넘으면 거부. 유료는 쓴 만큼 계산.
blackwall://organisation조직: 팀, 알림, 요금, 감사 기록구성원 초대와 역할, 알림 채널, 청구서, 감사 기록, 그리고 같은 일을 HTTP(/api/v1)로 하는 경로.
blackwall://migrations마이그레이션과 타입스키마 변경을 버전 붙은 SQL로 적용하고 기록하기, 스키마를 SQL로 내려받기, supabase-js용 TypeScript 타입 만들기.
blackwall://cli명령줄 도구 (oneend)터미널과 CI에서 쓰는 oneend 명령: 로그인, 프로젝트 연결, 환경 변수, 배포, 함수, 마이그레이션, 타입.
프롬프트이름설명
new-table표 만들고 실제로 보이게 하기표를 만들고 접근 규칙까지 세워, 공개 키로 읽히는 것을 확인해요.
add-login로그인 붙이기이메일 로그인을 붙이고, 사용자별로 자기 데이터만 보이게 해요.
add-social-login소셜 로그인 붙이기구글·카카오 같은 계정으로 로그인하게 해요. 콜백 주소와 돌아갈 주소를 함께 맞춰요.
add-uploads파일 올리기 붙이기버킷을 만들고 업로드·다운로드를 붙여요.
cli명령줄 도구로 스키마와 배포 다루기oneend CLI로 로그인하고 폴더를 프로젝트에 연결한 뒤, 마이그레이션과 타입과 배포를 다뤄요.
check-costs이번 달 얼마 나오는지 보기사용량을 읽고, 무료 한도에 가까운 것이 있는지 확인해요.

도구

주석은 클라이언트가 실행 전에 물을지 정할 때 써요. 읽기 전용이 아닌 도구는 추가만 하는 몇 개를 빼고 모두 파괴적(destructive)으로 표시해요. 콘솔 AI 도우미도 같은 기준으로 확인을 받아요.

계정과 리전

이름설명
whoami내 계정
list_regions리전 목록
list_server_sizes서버 크기와 가격
request_region리전 요청
import_sources가져올 곳
start_import가져오기 시작
get_import가져오기 진행 상황

whoami 내 계정

읽기 전용

이 토큰이 누구의 것이고 어떤 권한을 가졌는지 알려줘요. operator는 운영자 도구를 쓸 수 있는지(active)와, 못 쓰면 이 계정의 이유(refused: not_listed, token_bound, no_second_factor)예요. 무엇부터 할지 모를 때 먼저 부르세요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /me

입력

입력이 없어요.

JSON 스키마
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

list_regions 리전 목록

읽기 전용

리전 목록이에요. can_create가 true인 곳만 지금 만들 수 있어요. 리전은 나중에 못 바꾸니 create_project 전에 확인하세요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /regions

입력

입력이 없어요.

JSON 스키마
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

list_server_sizes 서버 크기와 가격

읽기 전용

서버 크기(메모리)마다 구글 서버, CPU, 지역별 월 금액(monthly_minor)이에요. 통화를 비우면 조직의 결제 통화예요. KRW는 원(부가세 포함), USD는 센트(결제할 때 세금 추가)예요. included_in이 pro인 크기는 Pro 요금제에 포함돼요. region_status가 planned인 지역은 준비 중이라 고를 수 없어요. listed가 false면 아직 팔지 않는 것이라 sizes가 비어 있어요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /server-sizes

입력

이름형식필수설명
regionstring아니요한 지역만 볼 때 그 코드(list_regions의 code). 비우면 모든 지역.
currencystring, KRW | USD아니요KRW 또는 USD. 비우면 조직의 결제 통화.
JSON 스키마
{
  "type": "object",
  "properties": {
    "region": {
      "type": "string",
      "description": "한 지역만 볼 때 그 코드(list_regions의 code). 비우면 모든 지역."
    },
    "currency": {
      "type": "string",
      "enum": [
        "KRW",
        "USD"
      ],
      "description": "KRW 또는 USD. 비우면 조직의 결제 통화."
    }
  },
  "additionalProperties": false
}

request_region 리전 요청

추가만 함

아직 열리지 않은 리전(can_create가 false인 곳)이 필요하다고 남겨요. 담당자가 직접 연락해요. 날짜를 약속하지는 않아요. 이미 열린 리전은 요청하지 말고 create_project로 바로 만드세요.

이름설명
토큰 범위write
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTPOST /regions/requests

입력

이름형식필수설명
regionstring예list_regions가 can_create=false로 알려준 코드.
notestring아니요거기에 무엇을 두려는지, 왜 그 리전이어야 하는지. 선택 사항이지만 담당자가 연락할 때 이것부터 읽어요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "region": {
      "type": "string",
      "description": "list_regions가 can_create=false로 알려준 코드."
    },
    "note": {
      "type": "string",
      "description": "거기에 무엇을 두려는지, 왜 그 리전이어야 하는지. 선택 사항이지만 담당자가 연락할 때 이것부터 읽어요."
    }
  },
  "required": [
    "region"
  ],
  "additionalProperties": false
}

import_sources 가져올 곳

읽기 전용 외부로 나감

이 조직에 연결한 원본 계정(Supabase, Vercel, PostgreSQL)마다 프로젝트 목록과 지금까지의 가져오기를 봐요. 계정 연결은 토큰이 대화에 남지 않게 콘솔(connect_url)에서 해요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /imports/sources

입력

이름형식필수설명
orgstring아니요조직의 id나 이름. 비우면 이 토큰이 닿는 첫 조직.
JSON 스키마
{
  "type": "object",
  "properties": {
    "org": {
      "type": "string",
      "description": "조직의 id나 이름. 비우면 이 토큰이 닿는 첫 조직."
    }
  },
  "additionalProperties": false
}

start_import 가져오기 시작

추가만 함 외부로 나감

콘솔에서 만든 가져오기(import)나 import_sources의 connection·project로 가져오기를 시작해요(묶음마다 새 프로젝트, 원본은 그대로). Supabase는 address에 세션 풀러 연결 문자열이 필요해요(쓰고 지워요). 다시 시작하면 바뀐 것만 옮겨요. 소유자·관리자·개발자만 돼요.

이름설명
토큰 범위write
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTPOST /imports

입력

이름형식필수설명
orgstring아니요조직의 id나 이름. 비우면 이 토큰이 닿는 첫 조직.
importstring아니요가져오기 id(import_sources의 imports, 콘솔 주소의 id).
connectionstring아니요원본 계정(import_sources의 connection). import가 없을 때 project와 함께.
projectstring아니요원본 프로젝트(import_sources의 projects[].id).
addressstring아니요Supabase 원본의 세션 풀러 연결 문자열(postgres.<ref>, 포트 5432). 다른 원본은 비워요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "org": {
      "type": "string",
      "description": "조직의 id나 이름. 비우면 이 토큰이 닿는 첫 조직."
    },
    "import": {
      "type": "string",
      "description": "가져오기 id(import_sources의 imports, 콘솔 주소의 id)."
    },
    "connection": {
      "type": "string",
      "description": "원본 계정(import_sources의 connection). import가 없을 때 project와 함께."
    },
    "project": {
      "type": "string",
      "description": "원본 프로젝트(import_sources의 projects[].id)."
    },
    "address": {
      "type": "string",
      "description": "Supabase 원본의 세션 풀러 연결 문자열(postgres.<ref>, 포트 5432). 다른 원본은 비워요."
    }
  },
  "additionalProperties": false
}

get_import 가져오기 진행 상황

읽기 전용 외부로 나감

콘솔의 가져오기 진행 화면과 같아요. 옮길 곳마다 단계(스키마, 로그인 사용자, 데이터, 파일, 예약 작업…)의 상태와 수, 옮기지 않는 것과 이유, 확인할 것을 보여줘요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /imports/{id}

입력

이름형식필수설명
idstring예가져오기 id.
orgstring아니요조직의 id나 이름. 비우면 이 토큰이 닿는 첫 조직.
JSON 스키마
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "description": "가져오기 id."
    },
    "org": {
      "type": "string",
      "description": "조직의 id나 이름. 비우면 이 토큰이 닿는 첫 조직."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}

프로젝트

이름설명
list_projects프로젝트 목록
create_project프로젝트 만들기
pause_project프로젝트 일시정지
resume_project프로젝트 다시 시작
delete_project프로젝트 삭제
retry_provisioning준비 실패한 프로젝트 다시 시도
rename_project이름 바꾸기
get_project_archive데이터베이스 보관 상태
restore_project_archive보관한 데이터베이스 복원
create_archive_download_url보관 파일 내려받기 주소

list_projects 프로젝트 목록

읽기 전용

이 계정의 프로젝트와 각각의 API 주소를 돌려줘요. status는 ready(쓸 수 있음), provisioning(데이터베이스를 만드는 중, 몇 초), failed(retry_provisioning), paused예요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects, GET /projects/{ref}

입력

입력이 없어요.

JSON 스키마
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

create_project 프로젝트 만들기

추가만 함

데이터베이스·인증·파일 저장소가 딸린 프로젝트를 만들어요. 리전은 비우면 기본 리전이고 나중에 못 바꿔요. 조직이 여럿이면 org로 골라요(요금제의 프로젝트 수 안에서). status가 provisioning이면 wait(초)를 주거나 ready가 된 뒤 표·키를 쓰세요.

이름설명
토큰 범위write
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요
RESTPOST /projects

입력

이름형식필수설명
namestring예사람이 읽는 이름.
regionstring아니요어디에 둘지. list_regions가 쓸 수 있는 값을 알려줘요. 비우면 기본 리전.
orgstring아니요만들 조직의 id나 이름(list_projects의 organisation_id·organisation). 비우면 프로젝트를 만들 수 있는 첫 조직.
tierstring아니요이 프로젝트만의 서버 크기. list_server_sizes가 알려준 값(예: 4gb)이나 default(요금제의 기본 크기)를 주면 만든 직후 서버를 요청해요. 비우면 공용 서버에서 시작해요.
repostring아니요만들면서 바로 연결하고 배포할 GitHub 저장소(owner/name). list_importable_repositories의 repo. 비우면 저장소 없이 만들어요. 아래 branch·root_directory·app·installation·framework·build_command·output_directory·install_command·dotenv·sensitive는 import_repository와 같고 repo가 있을 때만 읽어요.
branchstring아니요repo가 있을 때: 프로덕션 브랜치. 비우면 저장소의 기본 브랜치.
root_directorystring아니요repo가 있을 때: 모노레포의 앱 폴더(예: apps/web).
appstring아니요repo가 있을 때: 앱 이름. 비우면 폴더 이름, 없으면 저장소 이름.
installationinteger아니요repo가 있을 때: 어느 GitHub 계정의 설치로 받을지.
frameworkstring아니요repo가 있을 때: 프레임워크 프리셋. 비우거나 auto면 자동 감지.
build_commandstring아니요repo가 있을 때: 빌드 명령 덮어쓰기.
output_directorystring아니요repo가 있을 때: 출력 디렉터리 덮어쓰기.
install_commandstring아니요repo가 있을 때: 설치 명령 덮어쓰기.
dotenvstring아니요repo가 있을 때: .env 내용. 프로덕션과 프리뷰에 저장해요.
sensitiveboolean아니요repo가 있을 때: dotenv의 값을 저장한 뒤 다시 보여주지 않아요.
waitinteger, min 0, max 120아니요데이터베이스가 준비될(status: ready) 때까지 기다릴 초. 기본 0은 바로 답해요. 보통 몇 초면 돼요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "description": "사람이 읽는 이름."
    },
    "region": {
      "type": "string",
      "description": "어디에 둘지. list_regions가 쓸 수 있는 값을 알려줘요. 비우면 기본 리전."
    },
    "org": {
      "type": "string",
      "description": "만들 조직의 id나 이름(list_projects의 organisation_id·organisation). 비우면 프로젝트를 만들 수 있는 첫 조직."
    },
    "tier": {
      "type": "string",
      "description": "이 프로젝트만의 서버 크기. list_server_sizes가 알려준 값(예: 4gb)이나 default(요금제의 기본 크기)를 주면 만든 직후 서버를 요청해요. 비우면 공용 서버에서 시작해요."
    },
    "repo": {
      "type": "string",
      "description": "만들면서 바로 연결하고 배포할 GitHub 저장소(owner/name). list_importable_repositories의 repo. 비우면 저장소 없이 만들어요. 아래 branch·root_directory·app·installation·framework·build_command·output_directory·install_command·dotenv·sensitive는 import_repository와 같고 repo가 있을 때만 읽어요."
    },
    "branch": {
      "type": "string",
      "description": "repo가 있을 때: 프로덕션 브랜치. 비우면 저장소의 기본 브랜치."
    },
    "root_directory": {
      "type": "string",
      "description": "repo가 있을 때: 모노레포의 앱 폴더(예: apps/web)."
    },
    "app": {
      "type": "string",
      "description": "repo가 있을 때: 앱 이름. 비우면 폴더 이름, 없으면 저장소 이름."
    },
    "installation": {
      "type": "integer",
      "description": "repo가 있을 때: 어느 GitHub 계정의 설치로 받을지."
    },
    "framework": {
      "type": "string",
      "description": "repo가 있을 때: 프레임워크 프리셋. 비우거나 auto면 자동 감지."
    },
    "build_command": {
      "type": [
        "string",
        "null"
      ],
      "description": "repo가 있을 때: 빌드 명령 덮어쓰기."
    },
    "output_directory": {
      "type": [
        "string",
        "null"
      ],
      "description": "repo가 있을 때: 출력 디렉터리 덮어쓰기."
    },
    "install_command": {
      "type": [
        "string",
        "null"
      ],
      "description": "repo가 있을 때: 설치 명령 덮어쓰기."
    },
    "dotenv": {
      "type": "string",
      "description": "repo가 있을 때: .env 내용. 프로덕션과 프리뷰에 저장해요."
    },
    "sensitive": {
      "type": "boolean",
      "description": "repo가 있을 때: dotenv의 값을 저장한 뒤 다시 보여주지 않아요."
    },
    "wait": {
      "type": "integer",
      "minimum": 0,
      "maximum": 120,
      "description": "데이터베이스가 준비될(status: ready) 때까지 기다릴 초. 기본 0은 바로 답해요. 보통 몇 초면 돼요."
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}

pause_project 프로젝트 일시정지

파괴적

프로젝트를 멈춰요: 사이트·API·함수는 503, 실시간·예약 작업·새 배포도 멈춰요. 데이터는 남고 resume_project로 바로 돌아와요. 90일 넘게 멈추면 데이터베이스를 보관 저장소로 옮겨요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/pause

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

resume_project 프로젝트 다시 시작

파괴적

일시정지한 프로젝트를 다시 시작해요. 무료 요금제에서 3일 동안 쓰지 않아 멈춘 프로젝트도 이걸로(또는 새 배포로) 다시 켜요. 예약 작업은 놓친 실행을 몰아서 하지 않고 다음 일정부터 돌아요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/resume

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

delete_project 프로젝트 삭제

파괴적

프로젝트의 표·가입자·파일·함수·예약 작업·환경 변수·도메인을 영구히 지워요. 되돌릴 수 없어요. 사용자가 요청할 때만 쓰고 confirm에 프로젝트 이름을 넣으세요. 마지막 프로젝트는 못 지워요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
confirmstring예프로젝트 이름. list_projects의 name과 정확히 같아야 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "confirm": {
      "type": "string",
      "description": "프로젝트 이름. list_projects의 name과 정확히 같아야 해요."
    }
  },
  "required": [
    "ref",
    "confirm"
  ],
  "additionalProperties": false
}

retry_provisioning 준비 실패한 프로젝트 다시 시도

추가만 함

데이터베이스를 만들지 못한 프로젝트를 다시 준비해요. 다른 도구가 "만들지 못했어요"로 거절할 때 쓰세요. 프로젝트를 새로 만들지 마세요. 요금만 두 배가 돼요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/retry-provisioning

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

rename_project 이름 바꾸기

파괴적

프로젝트 이름이나 조직 이름, 또는 둘 다 바꿔요. ID(ref)와 주소는 바뀌지 않아요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPATCH /projects/{ref}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring아니요새 프로젝트 이름.
organisationstring아니요새 조직 이름.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "새 프로젝트 이름."
    },
    "organisation": {
      "type": "string",
      "description": "새 조직 이름."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

get_project_archive 데이터베이스 보관 상태

읽기 전용

데이터베이스를 못 쓰는 상태(결제 실패, 무료 요금제, 일시정지)가 90일 이어지면 보관 저장소로 옮겨요. 이 프로젝트의 state(none, scheduled, archiving, archived, restoring, purged), reason, archive_at, purge_at(옮긴 뒤 1년, 보관 파일과 파일을 지우는 때), restore_blocked_by를 돌려줘요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/archive

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

restore_project_archive 보관한 데이터베이스 복원

파괴적

보관한 데이터베이스를 다시 만들어요(보통 몇 분). 결제가 안 끝났거나 무료 요금제면 거절해요(restore_blocked_by). 보관 파일이 지워졌으면 빈 데이터베이스를 만들어요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/archive/restore

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_archive_download_url 보관 파일 내려받기 주소

추가만 함

보관한 데이터베이스(pg_dump 형식, pg_restore로 복원)를 1시간 동안 내려받을 수 있는 서명 주소를 만들어요. 이유를 함께 적어야 하고, 개인정보 접속기록에 남아요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/archive/download

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
reasonstring, min length 4, max length 300예내려받는 이유. 접속기록에 남아요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "reason": {
      "type": "string",
      "minLength": 4,
      "maxLength": 300,
      "description": "내려받는 이유. 접속기록에 남아요."
    }
  },
  "required": [
    "ref",
    "reason"
  ],
  "additionalProperties": false
}

키와 서명

이름설명
get_project_keysAPI 키 가져오기
list_api_keys이름 붙은 API 키 목록
create_api_keyAPI 키 만들기
revoke_api_keyAPI 키 폐기
get_jwt_signing토큰 서명 방식
set_jwt_signing토큰 서명 방식 바꾸기
rotate_signing_key키 교체
retire_signing_key예전 키 폐기

get_project_keys API 키 가져오기

읽기 전용

프로젝트 주소와 두 키예요. 비밀 키는 접근 규칙을 무시하니 서버에서만 쓰세요(쓰기 권한 토큰 필요). 프론트엔드용이면 only: "publishable"로 부르세요: 주소와 공개 키만 오고 읽기 권한 토큰으로도 돼요.

이름설명
토큰 범위write
역할secrets.read 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/keys

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
onlystring, publishable아니요publishable이면 주소와 공개 키만 돌려줘요. 비우면 두 키 모두.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "only": {
      "type": "string",
      "enum": [
        "publishable"
      ],
      "description": "publishable이면 주소와 공개 키만 돌려줘요. 비우면 두 키 모두."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

list_api_keys 이름 붙은 API 키 목록

읽기 전용

용도별로 만든 bw_publishable_·bw_secret_ 키의 이름, 종류, 앞부분, 마지막 사용 시각, 폐기 여부예요. 비밀 키의 값은 돌려주지 않아요. 공개 키는 값도 줘요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/api-keys

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_api_key API 키 만들기

추가만 함

이름 붙은 키를 하나 만들어요. publishable은 브라우저용(접근 규칙을 따름), secret은 서버용(접근 규칙을 무시)이에요. 비밀 키 값은 이 응답에만 있고 다시 볼 수 없어요. 소유자·관리자만 만들 수 있고, 프로젝트마다 20개까지예요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/api-keys

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
kindstring, publishable | secret예
namestring, min length 1, max length 60예어디에 쓰는 키인지. 예: 결제 서버
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "kind": {
      "type": "string",
      "enum": [
        "publishable",
        "secret"
      ]
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "description": "어디에 쓰는 키인지. 예: 결제 서버"
    }
  },
  "required": [
    "ref",
    "kind",
    "name"
  ],
  "additionalProperties": false
}

revoke_api_key API 키 폐기

파괴적

이름 붙은 키 하나를 폐기해요. 30초 안에 그 키로 오는 요청이 거부돼요. 다른 키는 그대로예요. 되돌릴 수 없어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/api-keys/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_api_keys의 id
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_api_keys의 id"
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

get_jwt_signing 토큰 서명 방식

읽기 전용

로그인 토큰을 HS256과 ES256 중 무엇으로 서명하는지와, 지금 받아 주는 예전 키(유예 중인 키)를 보여줘요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/signing

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_jwt_signing 토큰 서명 방식 바꾸기

파괴적

ES256으로 바꾸면 새 로그인부터 비대칭 키로 서명하고, 다른 서버가 공개 키(JWKS)로 토큰을 확인할 수 있어요. 이미 받은 토큰은 만료될 때까지 그대로 통해요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTPUT /projects/{ref}/signing

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
algstring, HS256 | ES256예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "alg": {
      "type": "string",
      "enum": [
        "HS256",
        "ES256"
      ]
    }
  },
  "required": [
    "ref",
    "alg"
  ],
  "additionalProperties": false
}

rotate_signing_key 키 교체

파괴적

공개 키·비밀 키를 서명하는 키를 새로 만들어요. 예전 키는 grace_hours(0, 1, 24, 168) 동안 더 받아요. 0(기본)이면 지금 앱이 30초 안에 모두 멈추니 confirm에 프로젝트 이름이 필요해요. 사용자가 요청할 때만, 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/signing/rotate

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
grace_hoursinteger, 0 | 1 | 24 | 168아니요
confirmstring아니요grace_hours가 0(또는 비움)일 때만: 프로젝트 이름. list_projects의 name과 정확히 같아야 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "grace_hours": {
      "type": "integer",
      "enum": [
        0,
        1,
        24,
        168
      ]
    },
    "confirm": {
      "type": "string",
      "description": "grace_hours가 0(또는 비움)일 때만: 프로젝트 이름. list_projects의 name과 정확히 같아야 해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

retire_signing_key 예전 키 폐기

파괴적

유예 중인 예전 키를 지금 끝내요. kid는 get_jwt_signing의 keys에서 state가 rotating인 것이에요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/signing/keys/{kid}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
kidstring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "kid": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "kid"
  ],
  "additionalProperties": false
}

데이터베이스

이름설명
get_advisors보안·성능 점검
list_tables표 목록
list_policies접근 규칙 목록
query_sqlSQL 조회 (읽기 전용)
run_sqlSQL 실행 (변경)
read_rows표 내용 보기
export_table_csv표를 CSV로 내보내기
import_table_csvCSV를 표로 가져오기
get_database_connection데이터베이스 연결 정보
reset_database_password데이터베이스 비밀번호 새로 만들기
list_extensionsDB 확장 목록
enable_extensionDB 확장 켜기
disable_extensionDB 확장 끄기
get_database_move전용 데이터베이스로 옮기기 상태
move_to_dedicated_database전용 데이터베이스로 옮기기
get_dedicated_disk전용 디스크
request_dedicated_disk전용 디스크로 옮기기
shrink_dedicated_disk디스크 줄이기
list_realtime_tables실시간 켠 표
set_realtime표의 실시간 켜기·끄기
list_migrations마이그레이션 기록
apply_migrations마이그레이션 적용
remove_migration_record마이그레이션 기록 지우기
dump_schema스키마를 SQL로
generate_typescript_typesTypeScript 타입 만들기
list_mysql_databasesMySQL 데이터베이스 목록
create_mysql_databaseMySQL 데이터베이스 만들기
bind_mysql_databaseMySQL 데이터베이스를 앱에 연결
delete_mysql_databaseMySQL 데이터베이스 지우기
get_mysql_connectionMySQL 연결 정보
create_mysql_backupMySQL 지금 백업
list_mysql_backupsMySQL 백업 목록
restore_mysql_backupMySQL 백업으로 복원

get_advisors 보안·성능 점검

읽기 전용

데이터베이스 구조의 보안·성능 문제를 찾아요: RLS가 꺼진 표, 누구나 쓰는 규칙, 규칙을 무시하는 뷰, search_path 없는 security definer 함수, 사용자 표를 내보내는 뷰, 인덱스 없는 외래 키, 기본 키 없는 표, 중복 인덱스, 행마다 uid()를 부르는 규칙. 고칠 SQL(remedy)도 줘요. 표나 규칙을 바꾼 뒤 부르세요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/advisors

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

list_tables 표 목록

읽기 전용

프로젝트의 표와 각 표의 칸, 대략의 줄 수, 접근 규칙 상태를 돌려줘요. 규칙이 켜져 있고 규칙 수가 0이면 공개 키로는 아무것도 보이지 않아요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/tables

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

list_policies 접근 규칙 목록

읽기 전용

어떤 표의 어떤 동작이 누구에게 열려 있는지 돌려줘요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/policies

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

query_sql SQL 조회 (읽기 전용)

읽기 전용

조회 한 문장(SELECT 등)을 읽기 전용으로 실행해요(읽기 권한 토큰도 돼요). 바꾸는 문장은 run_sql을 쓰세요. Vault 비밀 값은 비어 있어요. 문법: https://www.postgresql.org/docs/16/sql-commands.html

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/sql/query

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
sqlstring예실행할 조회 한 문장.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "sql": {
      "type": "string",
      "description": "실행할 조회 한 문장."
    }
  },
  "required": [
    "ref",
    "sql"
  ],
  "additionalProperties": false
}

run_sql SQL 실행 (변경)

파괴적

데이터나 구조를 바꾸는 SQL(CREATE, INSERT, UPDATE, DELETE 등)을 실행해요. 조회만이면 query_sql을 쓰세요. 문법은 PostgreSQL 16(https://www.postgresql.org/docs/16/sql-commands.html)이에요. 새 표는 접근 규칙이 켜진 채라 규칙을 만들기 전엔 공개 키로 안 보여요. 규칙의 권한 이름은 <ref>_anon, <ref>_authenticated, <ref>_service_role이에요. Supabase SQL(public., auth.uid(), storage., to authenticated)은 이 프로젝트 이름으로 바꿔 실행하고 translated로 알려 줘요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인입력에 따라 물어요 (읽기 SQL이나 dry_run이면 안 물음)
RESTPOST /projects/{ref}/sql

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
sqlstring예실행할 SQL 한 문장.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "sql": {
      "type": "string",
      "description": "실행할 SQL 한 문장."
    }
  },
  "required": [
    "ref",
    "sql"
  ],
  "additionalProperties": false
}

read_rows 표 내용 보기

읽기 전용

표의 앞부분을 그대로 읽어요. 확인용이며, 조건이 필요하면 run_sql을 쓰세요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/rows/{table}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
tablestring예표 이름.
limitinteger, min 1, max 200아니요기본 50줄.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "table": {
      "type": "string",
      "description": "표 이름."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200,
      "description": "기본 50줄."
    }
  },
  "required": [
    "ref",
    "table"
  ],
  "additionalProperties": false
}

export_table_csv 표를 CSV로 내보내기

읽기 전용

표를 CSV로 돌려줘요(첫 줄은 열 이름). 1MB를 넘으면 잘리고 truncated가 true예요: filters로 나눠 받으세요. 빈 칸은 NULL, ""는 빈 문자열이에요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/tables/{table}/csv

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
tablestring예표 이름 (list_tables).
filtersarray<object>, max items 10아니요모두 맞는 줄만. 예: [{"column": "created_at", "op": "gte", "value": "2026-01-01"}]
sortstring아니요이 열 순서로. 비우면 표의 기본 순서.
descboolean아니요true면 큰 것부터.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "table": {
      "type": "string",
      "description": "표 이름 (list_tables)."
    },
    "filters": {
      "type": "array",
      "maxItems": 10,
      "description": "모두 맞는 줄만. 예: [{\"column\": \"created_at\", \"op\": \"gte\", \"value\": \"2026-01-01\"}]",
      "items": {
        "type": "object",
        "properties": {
          "column": {
            "type": "string",
            "description": "열 이름."
          },
          "op": {
            "type": "string",
            "enum": [
              "eq",
              "neq",
              "gt",
              "lt",
              "gte",
              "lte",
              "like",
              "ilike",
              "in",
              "is",
              "isnot"
            ],
            "description": "비교. in은 쉼표로 나눈 값, is·isnot은 NULL 검사."
          },
          "value": {
            "type": "string",
            "description": "비교할 값."
          }
        },
        "required": [
          "column",
          "op"
        ],
        "additionalProperties": false
      }
    },
    "sort": {
      "type": "string",
      "description": "이 열 순서로. 비우면 표의 기본 순서."
    },
    "desc": {
      "type": "boolean",
      "description": "true면 큰 것부터."
    }
  },
  "required": [
    "ref",
    "table"
  ],
  "additionalProperties": false
}

import_table_csv CSV를 표로 가져오기

추가만 함

CSV를 표에 넣어요. 첫 줄의 열 이름대로 들어가요(columns로 바꿔요). 한 줄이라도 실패하면 아무것도 넣지 않고 줄 번호와 이유를 알려 줘요. 2MB, 10,000줄까지예요. 따옴표 없는 빈 칸은 NULL이나 기본값이에요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/tables/{table}/csv

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
tablestring예표 이름 (list_tables).
csvstring예CSV 내용. 첫 줄은 열 이름.
columnsarray<string>아니요CSV의 열마다 넣을 표의 열 이름, 건너뛸 열은 "". 첫 줄과 길이가 같아야 해요. 비우면 같은 이름끼리.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "table": {
      "type": "string",
      "description": "표 이름 (list_tables)."
    },
    "csv": {
      "type": "string",
      "description": "CSV 내용. 첫 줄은 열 이름."
    },
    "columns": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "CSV의 열마다 넣을 표의 열 이름, 건너뛸 열은 \"\". 첫 줄과 길이가 같아야 해요. 비우면 같은 이름끼리."
    }
  },
  "required": [
    "ref",
    "table",
    "csv"
  ],
  "additionalProperties": false
}

get_database_connection 데이터베이스 연결 정보

읽기 전용

이 프로젝트 PostgreSQL에 직접 연결할 주소를 봐요: direct(5432, 세션: 마이그레이션 도구·DB 클라이언트)와 pooler(6543, 트랜잭션: 서버리스). 비밀번호는 저장하지 않아 [YOUR-PASSWORD]로 나와요.

이름설명
토큰 범위read
역할secrets.read 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/database

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

reset_database_password 데이터베이스 비밀번호 새로 만들기

파괴적

직접 연결 비밀번호를 새로 만들어 한 번만 보여 줘요. 이전 비밀번호의 연결은 다음부터 거부되니 confirm에 프로젝트 이름(list_projects의 name)이 필요해요. 이 사용자는 RLS를 거치지 않으니 서버에만 두세요. keep_for_deploys: true면 암호화해 저장하고 서버·미들웨어·함수가 실행될 때 DATABASE_URL·POSTGRES_URL·DIRECT_URL로 받아요(빌드 제외). 배포한 코드가 모든 행을 읽게 되니 사용자가 원할 때만 켜요. 빼면 넘기던 것도 멈춰요. 사용자가 요청할 때만 쓰고, 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/database/password

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
keep_for_deploysboolean아니요true: 운영 배포에 DATABASE_URL로 넘겨요(암호화해 저장). 없거나 false: 보관하지 않고, 넘기던 것도 멈춰요.
confirmstring예프로젝트 이름. list_projects의 name과 정확히 같아야 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "keep_for_deploys": {
      "type": "boolean",
      "description": "true: 운영 배포에 DATABASE_URL로 넘겨요(암호화해 저장). 없거나 false: 보관하지 않고, 넘기던 것도 멈춰요."
    },
    "confirm": {
      "type": "string",
      "description": "프로젝트 이름. list_projects의 name과 정확히 같아야 해요."
    }
  },
  "required": [
    "ref",
    "confirm"
  ],
  "additionalProperties": false
}

list_extensions DB 확장 목록

읽기 전용

켤 수 있는 PostgreSQL 확장(vector, postgis, citext 등)과 available·enabled·버전이에요. extensions 스키마에 설치되고 SQL에서 vector(1536)처럼 바로 써요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/extensions

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

enable_extension DB 확장 켜기

파괴적

확장 하나를 켜요(create extension ... with schema extensions). 임베딩 검색은 vector, 지도·거리 계산은 postgis. 목록 밖의 확장은 거절돼요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/extensions/{name}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예확장 이름: vector, postgis, citext, hstore, uuid-ossp, pgcrypto, ltree, fuzzystrmatch, btree_gin, btree_gist, intarray, tablefunc
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "확장 이름: vector, postgis, citext, hstore, uuid-ossp, pgcrypto, ltree, fuzzystrmatch, btree_gin, btree_gist, intarray, tablefunc"
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

disable_extension DB 확장 끄기

파괴적

확장을 꺼요. 쓰는 열·인덱스·함수가 남아 있으면 거절돼요. 다른 프로젝트가 쓰면 설치는 남고 이 프로젝트 기록만 지워요(note). pg_trgm·unaccent는 못 꺼요. confirm에 확장 이름이 필요해요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTDELETE /projects/{ref}/extensions/{name}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예
confirmstring예확장 이름. name과 정확히 같아야 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string"
    },
    "confirm": {
      "type": "string",
      "description": "확장 이름. name과 정확히 같아야 해요."
    }
  },
  "required": [
    "ref",
    "name",
    "confirm"
  ],
  "additionalProperties": false
}

get_database_move 전용 데이터베이스로 옮기기 상태

읽기 전용

전용 데이터베이스에 있는지(dedicated), 요금제 포함 여부(plan_allows), 옮기는 상태(stopped, last_error)를 봐요. size_bytes가 auto_move_max_bytes보다 크면 move_to_dedicated_database로 요청하세요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/database/move

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

move_to_dedicated_database 전용 데이터베이스로 옮기기

파괴적

프로젝트를 전용 데이터베이스로 옮기도록 요청해요(콘솔 "지금 옮기기"). 옮기는 동안 쓰기는 멈추고 읽기는 돼요. 직전 상태를 백업하고, 실패하면 그대로예요. Pro부터, 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/database/move

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

get_dedicated_disk 전용 디스크

읽기 전용

전용 디스크와 Postgres를 봐요: size_gb, 쓴 공간, 한 달 비용, 30일 기록, 하고 있는 요청, 줄이기 제안(shrink). 공용 디스크면 옮기는 기준(threshold_gb)과 지금 크기를 보여 줘요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/database/dedicated-disk

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

request_dedicated_disk 전용 디스크로 옮기기

파괴적

데이터베이스를 전용 디스크(max(1.2 × 데이터베이스, 20GB))로 옮기도록 요청해요. GB당 월 ₩1,200(75¢)이고, 옮기는 동안 쓰기는 실패해요. Enterprise는 언제든, 다른 유료 요금제는 기준을 넘으면 돼요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/database/dedicated-disk

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

shrink_dedicated_disk 디스크 줄이기

파괴적

전용 디스크를 줄여요: 작은 디스크(1.2 × 데이터베이스, 최소 20GB)로 옮기고 원래 것을 지워요. 7일 동안 25% 아래로 쓴 디스크만 돼요(shrink.suggested). 옮기는 동안 쓰기는 실패하고 읽기는 돼요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/database/dedicated-disk/shrink

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

list_realtime_tables 실시간 켠 표

읽기 전용

변경을 실시간으로 알리는 표 목록. 여기 없는 표를 구독하면 아무것도 오지 않아요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/realtime

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_realtime 표의 실시간 켜기·끄기

파괴적

표 하나의 변경 알림을 켜거나 꺼요. 알림도 접근 규칙을 통과한 줄만 가요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/realtime/{table}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
tablestring예
enabledboolean예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "table": {
      "type": "string"
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "required": [
    "ref",
    "table",
    "enabled"
  ],
  "additionalProperties": false
}

list_migrations 마이그레이션 기록

읽기 전용

apply_migrations로 적용한 마이그레이션의 버전·이름·적용 시각을 오래된 순으로 돌려줘요. 기록은 프로젝트 스키마의 oneend_migrations 표에 있어요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/migrations

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

apply_migrations 마이그레이션 적용

파괴적

적용하지 않은 마이그레이션을 버전 순으로 하나씩 트랜잭션으로 실행하고 기록해요(적용된 건 건너뛰어요). 실패하면 그것만 되돌리고 멈추며 앞의 것은 남아요. run_sql 대신 쓰면 같은 변경을 다른 프로젝트에도 적용할 수 있어요. supabase/migrations 파일도 그대로 돼요: Supabase 이름(public., auth.uid(), storage., to authenticated)은 이 프로젝트 이름으로 바꿔 실행하고 translated로 알려 줘요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인입력에 따라 물어요 (읽기 SQL이나 dry_run이면 안 물음)
RESTPOST /projects/{ref}/migrations

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
migrationsarray<object>, max items 500예
include_allboolean아니요이미 적용된 마지막 버전보다 앞선 버전도 적용해요. 기본 false.
record_onlyboolean아니요실행하지 않고 적용한 것으로 기록만 해요. 기본 false.
dry_runboolean아니요무엇이 적용될지만 알려줘요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "migrations": {
      "type": "array",
      "maxItems": 500,
      "items": {
        "type": "object",
        "properties": {
          "version": {
            "type": "string",
            "pattern": "^[0-9]{1,32}$",
            "description": "숫자 버전. 보통 YYYYMMDDHHMMSS."
          },
          "name": {
            "type": "string",
            "description": "영문·숫자·_·-로 된 짧은 이름. 예: create_notes"
          },
          "sql": {
            "type": "string",
            "description": "실행할 SQL. 여러 문장도 돼요."
          }
        },
        "required": [
          "version",
          "sql"
        ],
        "additionalProperties": false
      }
    },
    "include_all": {
      "type": "boolean",
      "description": "이미 적용된 마지막 버전보다 앞선 버전도 적용해요. 기본 false."
    },
    "record_only": {
      "type": "boolean",
      "description": "실행하지 않고 적용한 것으로 기록만 해요. 기본 false."
    },
    "dry_run": {
      "type": "boolean",
      "description": "무엇이 적용될지만 알려줘요."
    }
  },
  "required": [
    "ref",
    "migrations"
  ],
  "additionalProperties": false
}

remove_migration_record 마이그레이션 기록 지우기

파괴적

마이그레이션 하나를 적용하지 않은 것으로 되돌려요. 기록만 지우고 그 마이그레이션이 만든 것은 그대로 둬요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/migrations/{version}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
versionstring, pattern ^[0-9]{1,32}$예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "version": {
      "type": "string",
      "pattern": "^[0-9]{1,32}$"
    }
  },
  "required": [
    "ref",
    "version"
  ],
  "additionalProperties": false
}

dump_schema 스키마를 SQL로

읽기 전용

프로젝트의 스키마(타입, 시퀀스, 표와 제약, 외래 키, 인덱스, 함수, 뷰, 트리거, RLS와 규칙)를 다시 만들 수 있는 SQL로 돌려줘요. 행 데이터와 권한은 들어 있지 않아요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/schema

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

generate_typescript_types TypeScript 타입 만들기

읽기 전용

프로젝트의 표·뷰·함수·열거형으로 supabase-js의 createClient<Database>()에 넣는 Database 타입을 만들어요. 스키마를 바꾼 뒤 다시 부르세요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/types/typescript

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
schemastring아니요기본 public. 프로젝트가 만든 스키마(list_schemas의 name)도 돼요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "schema": {
      "type": "string",
      "description": "기본 public. 프로젝트가 만든 스키마(list_schemas의 name)도 돼요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

list_mysql_databases MySQL 데이터베이스 목록

읽기 전용

MySQL 데이터베이스(MariaDB 11.4)마다 받는 앱(app, null은 프로젝트 전체), 상태, 크기와 요금제 최대 개수(max)예요. available이 false면 이 서버에 아직 MySQL이 없어요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/mysql

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_mysql_database MySQL 데이터베이스 만들기

추가만 함

WordPress 같은 MySQL 앱용 데이터베이스와 전용 로그인을 만들어요(보통 1분). app을 주면 그 앱만, 없으면 프로젝트의 앱 모두가 받아요. 서버는 시작할 때 MYSQL_URL·MYSQL_HOST·MYSQL_PORT·MYSQL_USER·MYSQL_PASSWORD·MYSQL_DATABASE와 WORDPRESS_DB_HOST·WORDPRESS_DB_USER·WORDPRESS_DB_PASSWORD·WORDPRESS_DB_NAME을 받아요(빌드 제외). 매일 밤 백업돼요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/mysql

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring, pattern ^[a-z][a-z0-9_]{0,31}$예영문 소문자로 시작하고 영문 소문자, 숫자, 밑줄(_)로 32자까지. 예: wordpress
appstring아니요이 데이터베이스를 받을 앱 이름. 비우면 프로젝트 전체용
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "pattern": "^[a-z][a-z0-9_]{0,31}$",
      "description": "영문 소문자로 시작하고 영문 소문자, 숫자, 밑줄(_)로 32자까지. 예: wordpress"
    },
    "app": {
      "type": "string",
      "description": "이 데이터베이스를 받을 앱 이름. 비우면 프로젝트 전체용"
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

bind_mysql_database MySQL 데이터베이스를 앱에 연결

파괴적

MySQL 데이터베이스를 받을 앱을 바꿔요. app이 null이면 프로젝트 전체용이 돼요. 앱 하나에는 데이터베이스 하나만 연결돼요. 실행 중인 서버는 다시 시작하거나 다시 배포하면 바뀐 값을 받아요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPATCH /projects/{ref}/mysql/{name}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예
appstring예앱 이름, 또는 프로젝트 전체용이면 null
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string"
    },
    "app": {
      "type": [
        "string",
        "null"
      ],
      "description": "앱 이름, 또는 프로젝트 전체용이면 null"
    }
  },
  "required": [
    "ref",
    "name",
    "app"
  ],
  "additionalProperties": false
}

delete_mysql_database MySQL 데이터베이스 지우기

파괴적

MySQL 데이터베이스와 로그인, 백업을 모두 지워요. 되돌릴 수 없으니 사용자가 요청할 때만 쓰고 confirm에 데이터베이스 이름을 넣으세요. 받던 앱은 다음 시작부터 MYSQL_*를 받지 않아요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/mysql/{name}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예
confirmstring예MySQL 데이터베이스 이름. name과 정확히 같아야 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string"
    },
    "confirm": {
      "type": "string",
      "description": "MySQL 데이터베이스 이름. name과 정확히 같아야 해요."
    }
  },
  "required": [
    "ref",
    "name",
    "confirm"
  ],
  "additionalProperties": false
}

get_mysql_connection MySQL 연결 정보

읽기 전용

MySQL 데이터베이스의 주소, 포트, 데이터베이스 이름, 로그인, 비밀번호와 앱이 받는 변수(variables)를 돌려줘요. 주소는 이 서버 안의 앱에서만 닿아요. 비밀번호는 쓰기 권한 토큰에만 보여요.

이름설명
토큰 범위read
역할secrets.read 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/mysql/{name}/connection

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

create_mysql_backup MySQL 지금 백업

추가만 함

MySQL 데이터베이스를 지금 백업해요. 플러그인 업데이트나 대량 변경 전에 만드세요. 7일 보관돼요. 매일 밤 백업은 따로 자동으로 돼요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/mysql/{name}/backups

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

list_mysql_backups MySQL 백업 목록

읽기 전용

MySQL 데이터베이스의 백업(매일 밤 자동, 직접 만든 것, 복원 직전 것)과 복원 기록을 돌려줘요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/mysql/{name}/backups

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

restore_mysql_backup MySQL 백업으로 복원

파괴적

MySQL 데이터베이스를 백업 시점으로 되돌려요. 그 뒤 변경은 사라지니 사용자가 요청할 때만 쓰고 confirm에 데이터베이스 이름을 넣으세요. 직전 상태를 백업하니 undo_backup_id로 되돌릴 수 있어요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/mysql/{name}/restore

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예
backup_idstring예list_mysql_backups의 백업 id
confirmstring예MySQL 데이터베이스 이름. name과 정확히 같아야 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string"
    },
    "backup_id": {
      "type": "string",
      "description": "list_mysql_backups의 백업 id"
    },
    "confirm": {
      "type": "string",
      "description": "MySQL 데이터베이스 이름. name과 정확히 같아야 해요."
    }
  },
  "required": [
    "ref",
    "name",
    "backup_id",
    "confirm"
  ],
  "additionalProperties": false
}

인증과 사용자

이름설명
list_users서비스 가입자 목록
add_user서비스 가입자 추가
import_users서비스 가입자 한꺼번에 가져오기
update_user서비스 가입자 바꾸기
generate_link로그인 링크 만들기
list_auth_providers소셜 로그인 설정 보기
set_auth_provider소셜 로그인 켜기
set_auth_provider_enabled소셜 로그인 껐다 켜기
remove_auth_provider소셜 로그인 지우기
get_smtp_settingsSMTP 설정 보기
set_smtp_settingsSMTP 설정
test_smtp_settingsSMTP 시험 메일 보내기
remove_smtp_settingsSMTP 설정 지우기
get_email_templates이메일 템플릿 보기
set_email_template이메일 템플릿 저장
preview_email_template이메일 템플릿 미리보기
remove_email_template이메일 템플릿 되돌리기
get_sms_settings문자 로그인 설정 보기
set_sms_settings문자 로그인 설정
remove_sms_settings문자 로그인 지우기
list_sso_providersSAML SSO 보기
remove_sso_providerSAML SSO 지우기
list_redirect_urls로그인 후 돌아갈 주소 목록
add_redirect_url돌아갈 주소 추가
remove_redirect_url돌아갈 주소 제거
remove_user가입자 삭제
set_anonymous_sign_in익명 로그인 켜기·끄기

list_users 서비스 가입자 목록

읽기 전용

이 프로젝트 서비스의 가입자예요(플랫폼 계정과 별개). 한 번에 200명까지 오고 total이 전체 인원이에요. has_more가 true면 offset을 올려 다시 부르세요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/users

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
limitinteger, min 1, max 200아니요한 번에 받을 인원. 기본값 50, 최대 200.
offsetinteger, min 0아니요건너뛸 인원. 기본값 0.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200,
      "description": "한 번에 받을 인원. 기본값 50, 최대 200."
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "description": "건너뛸 인원. 기본값 0."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

add_user 서비스 가입자 추가

추가만 함

이 프로젝트의 서비스에 가입자를 하나 만들어요. 비밀번호는 10자 이상이어야 해요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/users

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
emailstring예
passwordstring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "email": {
      "type": "string"
    },
    "password": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "email",
    "password"
  ],
  "additionalProperties": false
}

import_users 서비스 가입자 한꺼번에 가져오기

추가만 함

다른 서비스(Supabase auth.users 내보내기 등)의 가입자를 한 번에 500명까지 가져와요. id와 bcrypt 비밀번호 해시를 그대로 지켜서 비밀번호를 다시 정하지 않아도 로그인돼요. 목록 전체를 먼저 검사해 틀린 줄 번호를 알려 주고 하나도 가져오지 않아요. 이미 있는 계정은 건너뛰어서 다시 불러도 안전해요. dry_run=true면 검사만 해요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/users/import

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
usersarray<object>예
dry_runboolean아니요
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "users": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "email": {
            "type": "string"
          },
          "id": {
            "type": "string"
          },
          "encrypted_password": {
            "type": "string"
          },
          "email_confirmed": {
            "type": "boolean"
          },
          "user_metadata": {
            "type": "object"
          },
          "app_metadata": {
            "type": "object"
          }
        },
        "required": [
          "email"
        ],
        "additionalProperties": false
      }
    },
    "dry_run": {
      "type": "boolean"
    }
  },
  "required": [
    "ref",
    "users"
  ],
  "additionalProperties": false
}

update_user 서비스 가입자 바꾸기

파괴적

가입자 한 명의 이메일, 비밀번호, 이메일 확인, 정지, 메타데이터(합쳐짐)를 바꿔요. 비밀번호를 바꾸거나 정지하면 로그인이 모두 끊겨요. 비밀번호는 10자 이상, 유출된 것은 거절돼요. 사용자가 요청할 때만 쓰세요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTPATCH /projects/{ref}/users/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_users의 id (UUID).
emailstring아니요새 이메일.
passwordstring아니요새 비밀번호 (10자 이상).
email_confirmboolean아니요true면 이메일을 확인된 것으로 표시해요.
ban_durationstring아니요정지 기간. 예: 24h, 30m, 876000h(사실상 영구). none이면 정지를 풀어요.
user_metadataobject아니요사용자가 바꿀 수 있는 메타데이터에 합칠 값.
app_metadataobject아니요서버만 바꾸는 메타데이터에 합칠 값(역할, 요금제 등).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_users의 id (UUID)."
    },
    "email": {
      "type": "string",
      "description": "새 이메일."
    },
    "password": {
      "type": "string",
      "description": "새 비밀번호 (10자 이상)."
    },
    "email_confirm": {
      "type": "boolean",
      "description": "true면 이메일을 확인된 것으로 표시해요."
    },
    "ban_duration": {
      "type": "string",
      "description": "정지 기간. 예: 24h, 30m, 876000h(사실상 영구). none이면 정지를 풀어요."
    },
    "user_metadata": {
      "type": "object",
      "description": "사용자가 바꿀 수 있는 메타데이터에 합칠 값."
    },
    "app_metadata": {
      "type": "object",
      "description": "서버만 바꾸는 메타데이터에 합칠 값(역할, 요금제 등)."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

list_auth_providers 소셜 로그인 설정 보기

읽기 전용

로그인할 수 있는 제공자를 모두 봐요(설정 전이면 configured: false). 직접 등록한 custom:<이름>은 custom 항목(주소, scopes, 필드 매핑)과 함께 나와요. callback_url은 제공자 콘솔에 붙여 넣을 주소예요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/auth/providers

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_auth_provider 소셜 로그인 켜기

파괴적

제공자 하나의 클라이언트 ID와 시크릿을 저장하고 켜요(시크릿은 암호화해 저장하고 뒤 네 자리만 보여요). 먼저 제공자 콘솔에 list_auth_providers의 callback_url을 등록하세요. ID만 고치려면 client_secret을 빈 문자열로 둬요. provider를 custom:<이름>으로 주면 목록에 없는 OAuth 2.0·OpenID Connect 제공자를 등록해요: issuer(OIDC) 또는 authorize_url·token_url(·userinfo_url)이 필요하고, scopes와 claims(id·email·email_verified·name·avatar·phone이 응답의 어느 필드인지, 점 경로)를 줄 수 있어요. 앱에서는 signInWithOAuth({ provider: "custom:<이름>" })로 부르고, 로그인 직후 세션에 provider_token이 한 번 와요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/auth/providers/{provider}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
providerstring, pattern ^(google|kakao|naver|apple|github|gitlab|microsoft|facebook|line|discord|x|bitbucket|figma|linkedin_oidc|notion|twitch|slack_oidc|spotify|zoom|azure|keycloak|workos|twitter|slack|custom:[a-z0-9][a-z0-9_-]{0,39})$예로그인 제공자. google(구글), kakao(카카오), naver(네이버), apple(애플), github(GitHub), gitlab(GitLab), microsoft(Microsoft), facebook(Facebook), line(LINE), discord(Discord), x(X), bitbucket(Bitbucket), figma(Figma), linkedin_oidc(LinkedIn), notion(Notion), twitch(Twitch), slack_oidc(Slack), spotify(Spotify), zoom(Zoom), azure(Microsoft Entra ID), keycloak(Keycloak), workos(WorkOS), twitter(Twitter (OAuth 1.0a)), slack(Slack (legacy)), 또는 직접 등록하는 제공자 custom:<이름>(영문 소문자·숫자·-·_, 40자까지)
client_idstring예
client_secretstring예빈 문자열이면 이미 저장된 시크릿을 그대로 둬요. 새 제공자에는 반드시 필요해요.
enabledboolean아니요기본값은 켜짐이에요.
labelstring아니요custom: 제공자만. 화면에 보일 이름.
issuerstring아니요custom: 제공자만. OpenID Connect issuer(예: https://kauth.kakao.com). 비운 주소를 discovery 문서로 채워요.
authorize_urlstring아니요custom: 제공자만. 로그인 화면 주소(https).
token_urlstring아니요custom: 제공자만. code를 토큰으로 바꾸는 주소(https).
userinfo_urlstring아니요custom: 제공자만. 사용자 정보를 읽는 주소(https). 비우면 id_token에서 읽어요.
scopesstring아니요custom: 제공자만. 늘 요청할 scopes, 공백으로 구분. 앱이 보낸 scopes가 더해져요.
claimsobject아니요custom: 제공자만. 응답 필드 매핑, 예: {"id": "sub", "email": "kakao_account.email", "phone": "phone_number"}. 빼면 OpenID 표준 이름.
claim_mapobject아니요custom: 제공자만. claims와 같아요. 다른 도구와 같은 이름이에요.
token_authstring, body | basic아니요custom: 제공자만. client_secret을 본문(body, 기본)으로 보낼지 HTTP Basic으로 보낼지.
pkceboolean아니요custom: 제공자만. 기본 켜짐. 제공자가 PKCE를 거절할 때만 꺼요.
provider_typestring, oidc | oauth2아니요custom: 제공자만. oidc면 id_token을 issuer의 키(jwks_uri)로 서명·issuer·대상·만료·nonce까지 확인한 뒤에 읽어요. oauth2(기본)면 claims 매핑으로 읽어요. 빼면 저장된 값을 그대로 둬요.
discovery_urlstring아니요custom: 제공자만. discovery 문서가 {issuer}/.well-known/openid-configuration이 아닐 때.
jwks_uristring아니요custom: 제공자만. oidc의 서명 키 주소. 비우면 discovery 문서에서 채워요.
email_optionalboolean아니요custom: 제공자만. 이메일 주소 없는 사용자도 로그인하게 해요. 빼면 저장된 값을 그대로 둬요(새 제공자는 꺼짐).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "provider": {
      "type": "string",
      "pattern": "^(google|kakao|naver|apple|github|gitlab|microsoft|facebook|line|discord|x|bitbucket|figma|linkedin_oidc|notion|twitch|slack_oidc|spotify|zoom|azure|keycloak|workos|twitter|slack|custom:[a-z0-9][a-z0-9_-]{0,39})$",
      "description": "로그인 제공자. google(구글), kakao(카카오), naver(네이버), apple(애플), github(GitHub), gitlab(GitLab), microsoft(Microsoft), facebook(Facebook), line(LINE), discord(Discord), x(X), bitbucket(Bitbucket), figma(Figma), linkedin_oidc(LinkedIn), notion(Notion), twitch(Twitch), slack_oidc(Slack), spotify(Spotify), zoom(Zoom), azure(Microsoft Entra ID), keycloak(Keycloak), workos(WorkOS), twitter(Twitter (OAuth 1.0a)), slack(Slack (legacy)), 또는 직접 등록하는 제공자 custom:<이름>(영문 소문자·숫자·-·_, 40자까지)"
    },
    "client_id": {
      "type": "string"
    },
    "client_secret": {
      "type": "string",
      "description": "빈 문자열이면 이미 저장된 시크릿을 그대로 둬요. 새 제공자에는 반드시 필요해요."
    },
    "enabled": {
      "type": "boolean",
      "description": "기본값은 켜짐이에요."
    },
    "label": {
      "type": "string",
      "description": "custom: 제공자만. 화면에 보일 이름."
    },
    "issuer": {
      "type": "string",
      "description": "custom: 제공자만. OpenID Connect issuer(예: https://kauth.kakao.com). 비운 주소를 discovery 문서로 채워요."
    },
    "authorize_url": {
      "type": "string",
      "description": "custom: 제공자만. 로그인 화면 주소(https)."
    },
    "token_url": {
      "type": "string",
      "description": "custom: 제공자만. code를 토큰으로 바꾸는 주소(https)."
    },
    "userinfo_url": {
      "type": "string",
      "description": "custom: 제공자만. 사용자 정보를 읽는 주소(https). 비우면 id_token에서 읽어요."
    },
    "scopes": {
      "type": "string",
      "description": "custom: 제공자만. 늘 요청할 scopes, 공백으로 구분. 앱이 보낸 scopes가 더해져요."
    },
    "claims": {
      "type": "object",
      "additionalProperties": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        ]
      },
      "description": "custom: 제공자만. 응답 필드 매핑, 예: {\"id\": \"sub\", \"email\": \"kakao_account.email\", \"phone\": \"phone_number\"}. 빼면 OpenID 표준 이름."
    },
    "claim_map": {
      "type": "object",
      "additionalProperties": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        ]
      },
      "description": "custom: 제공자만. claims와 같아요. 다른 도구와 같은 이름이에요."
    },
    "token_auth": {
      "type": "string",
      "enum": [
        "body",
        "basic"
      ],
      "description": "custom: 제공자만. client_secret을 본문(body, 기본)으로 보낼지 HTTP Basic으로 보낼지."
    },
    "pkce": {
      "type": "boolean",
      "description": "custom: 제공자만. 기본 켜짐. 제공자가 PKCE를 거절할 때만 꺼요."
    },
    "provider_type": {
      "type": "string",
      "enum": [
        "oidc",
        "oauth2"
      ],
      "description": "custom: 제공자만. oidc면 id_token을 issuer의 키(jwks_uri)로 서명·issuer·대상·만료·nonce까지 확인한 뒤에 읽어요. oauth2(기본)면 claims 매핑으로 읽어요. 빼면 저장된 값을 그대로 둬요."
    },
    "discovery_url": {
      "type": "string",
      "description": "custom: 제공자만. discovery 문서가 {issuer}/.well-known/openid-configuration이 아닐 때."
    },
    "jwks_uri": {
      "type": "string",
      "description": "custom: 제공자만. oidc의 서명 키 주소. 비우면 discovery 문서에서 채워요."
    },
    "email_optional": {
      "type": "boolean",
      "description": "custom: 제공자만. 이메일 주소 없는 사용자도 로그인하게 해요. 빼면 저장된 값을 그대로 둬요(새 제공자는 꺼짐)."
    }
  },
  "required": [
    "ref",
    "provider",
    "client_id",
    "client_secret"
  ],
  "additionalProperties": false
}

set_auth_provider_enabled 소셜 로그인 껐다 켜기

파괴적

저장된 자격증명은 두고 제공자만 껐다 켜요. 다시 켤 때 시크릿을 새로 넣지 않아도 돼요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPATCH /projects/{ref}/auth/providers/{provider}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
providerstring, pattern ^(google|kakao|naver|apple|github|gitlab|microsoft|facebook|line|discord|x|bitbucket|figma|linkedin_oidc|notion|twitch|slack_oidc|spotify|zoom|azure|keycloak|workos|twitter|slack|custom:[a-z0-9][a-z0-9_-]{0,39})$예로그인 제공자. google(구글), kakao(카카오), naver(네이버), apple(애플), github(GitHub), gitlab(GitLab), microsoft(Microsoft), facebook(Facebook), line(LINE), discord(Discord), x(X), bitbucket(Bitbucket), figma(Figma), linkedin_oidc(LinkedIn), notion(Notion), twitch(Twitch), slack_oidc(Slack), spotify(Spotify), zoom(Zoom), azure(Microsoft Entra ID), keycloak(Keycloak), workos(WorkOS), twitter(Twitter (OAuth 1.0a)), slack(Slack (legacy)), 또는 직접 등록하는 제공자 custom:<이름>(영문 소문자·숫자·-·_, 40자까지)
enabledboolean예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "provider": {
      "type": "string",
      "pattern": "^(google|kakao|naver|apple|github|gitlab|microsoft|facebook|line|discord|x|bitbucket|figma|linkedin_oidc|notion|twitch|slack_oidc|spotify|zoom|azure|keycloak|workos|twitter|slack|custom:[a-z0-9][a-z0-9_-]{0,39})$",
      "description": "로그인 제공자. google(구글), kakao(카카오), naver(네이버), apple(애플), github(GitHub), gitlab(GitLab), microsoft(Microsoft), facebook(Facebook), line(LINE), discord(Discord), x(X), bitbucket(Bitbucket), figma(Figma), linkedin_oidc(LinkedIn), notion(Notion), twitch(Twitch), slack_oidc(Slack), spotify(Spotify), zoom(Zoom), azure(Microsoft Entra ID), keycloak(Keycloak), workos(WorkOS), twitter(Twitter (OAuth 1.0a)), slack(Slack (legacy)), 또는 직접 등록하는 제공자 custom:<이름>(영문 소문자·숫자·-·_, 40자까지)"
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "required": [
    "ref",
    "provider",
    "enabled"
  ],
  "additionalProperties": false
}

remove_auth_provider 소셜 로그인 지우기

파괴적

제공자 설정을 자격증명째로 지워요(다시 쓰려면 시크릿을 새로 받아야 해요). 잠시 끄려면 set_auth_provider_enabled를 쓰세요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/auth/providers/{provider}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
providerstring, pattern ^(google|kakao|naver|apple|github|gitlab|microsoft|facebook|line|discord|x|bitbucket|figma|linkedin_oidc|notion|twitch|slack_oidc|spotify|zoom|azure|keycloak|workos|twitter|slack|custom:[a-z0-9][a-z0-9_-]{0,39})$예로그인 제공자. google(구글), kakao(카카오), naver(네이버), apple(애플), github(GitHub), gitlab(GitLab), microsoft(Microsoft), facebook(Facebook), line(LINE), discord(Discord), x(X), bitbucket(Bitbucket), figma(Figma), linkedin_oidc(LinkedIn), notion(Notion), twitch(Twitch), slack_oidc(Slack), spotify(Spotify), zoom(Zoom), azure(Microsoft Entra ID), keycloak(Keycloak), workos(WorkOS), twitter(Twitter (OAuth 1.0a)), slack(Slack (legacy)), 또는 직접 등록하는 제공자 custom:<이름>(영문 소문자·숫자·-·_, 40자까지)
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "provider": {
      "type": "string",
      "pattern": "^(google|kakao|naver|apple|github|gitlab|microsoft|facebook|line|discord|x|bitbucket|figma|linkedin_oidc|notion|twitch|slack_oidc|spotify|zoom|azure|keycloak|workos|twitter|slack|custom:[a-z0-9][a-z0-9_-]{0,39})$",
      "description": "로그인 제공자. google(구글), kakao(카카오), naver(네이버), apple(애플), github(GitHub), gitlab(GitLab), microsoft(Microsoft), facebook(Facebook), line(LINE), discord(Discord), x(X), bitbucket(Bitbucket), figma(Figma), linkedin_oidc(LinkedIn), notion(Notion), twitch(Twitch), slack_oidc(Slack), spotify(Spotify), zoom(Zoom), azure(Microsoft Entra ID), keycloak(Keycloak), workos(WorkOS), twitter(Twitter (OAuth 1.0a)), slack(Slack (legacy)), 또는 직접 등록하는 제공자 custom:<이름>(영문 소문자·숫자·-·_, 40자까지)"
    }
  },
  "required": [
    "ref",
    "provider"
  ],
  "additionalProperties": false
}

get_smtp_settings SMTP 설정 보기

읽기 전용

인증 메일을 보내는 SMTP 서버와 보내는 사람을 봐요. 비밀번호는 password_hint(뒤 네 자리)만 와요. configured가 false거나 last_error가 있으면(그 서버가 거부) 플랫폼 주소로 보내요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/auth/smtp

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_smtp_settings SMTP 설정

파괴적

인증 메일을 이 프로젝트의 SMTP 서버와 보내는 사람으로 보내요. 처음엔 sender_email, host, username, password가 필요하고, 그 뒤엔 바꿀 값만 줘요(password를 비우면 그대로). 공인 주소와 TLS(465 또는 STARTTLS)가 필요해요. 서버가 거부하면 플랫폼 주소로 대신 보내고 last_error에 남겨요. 저장 후 test_smtp_settings로 확인하세요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/auth/smtp

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
sender_emailstring아니요보내는 메일 주소(Sender email). 예: [email protected].
sender_namestring아니요보내는 사람 이름(Sender name). 예: 우리 가게.
hoststring아니요SMTP 서버 주소(Host). 예: smtp.sendgrid.net.
portinteger, 25 | 465 | 587 | 2465 | 2525아니요포트(Port). 기본 587.
usernamestring아니요SMTP 사용자 이름(Username).
passwordstring아니요SMTP 비밀번호(Password). 비우면 저장된 값을 써요.
minimum_interval_secondsinteger, min 0, max 3600아니요같은 주소로 다시 보내기까지의 최소 간격(초). 기본 60.
rate_limit_per_hourinteger, min 1, max 10000아니요프로젝트 전체가 한 시간에 보낼 수 있는 메일 수. 기본 100. 넘으면 over_email_send_rate_limit(429)로 거부돼요.
enabledboolean아니요false면 설정은 두고 플랫폼 발신 주소로 보내요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "sender_email": {
      "type": "string",
      "description": "보내는 메일 주소(Sender email). 예: [email protected]."
    },
    "sender_name": {
      "type": "string",
      "description": "보내는 사람 이름(Sender name). 예: 우리 가게."
    },
    "host": {
      "type": "string",
      "description": "SMTP 서버 주소(Host). 예: smtp.sendgrid.net."
    },
    "port": {
      "type": "integer",
      "enum": [
        25,
        465,
        587,
        2465,
        2525
      ],
      "description": "포트(Port). 기본 587."
    },
    "username": {
      "type": "string",
      "description": "SMTP 사용자 이름(Username)."
    },
    "password": {
      "type": "string",
      "description": "SMTP 비밀번호(Password). 비우면 저장된 값을 써요."
    },
    "minimum_interval_seconds": {
      "type": "integer",
      "minimum": 0,
      "maximum": 3600,
      "description": "같은 주소로 다시 보내기까지의 최소 간격(초). 기본 60."
    },
    "rate_limit_per_hour": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10000,
      "description": "프로젝트 전체가 한 시간에 보낼 수 있는 메일 수. 기본 100. 넘으면 over_email_send_rate_limit(429)로 거부돼요."
    },
    "enabled": {
      "type": "boolean",
      "description": "false면 설정은 두고 플랫폼 발신 주소로 보내요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

test_smtp_settings SMTP 시험 메일 보내기

추가만 함 외부로 나감

저장된 SMTP 서버로 시험 메일 한 통을 보내요. 플랫폼으로 대신 보내지 않아서, 실패하면 그 서버가 준 이유가 그대로 나와요. to를 빼면 호출한 사람의 주소로 보내요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/auth/smtp/test

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
tostring아니요받을 주소. 빼면 내 주소.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "to": {
      "type": "string",
      "description": "받을 주소. 빼면 내 주소."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

remove_smtp_settings SMTP 설정 지우기

파괴적

SMTP 설정을 비밀번호째로 지워요. 이후 인증 메일은 플랫폼 발신 주소로 나가요. 잠시 멈추려면 set_smtp_settings에 enabled: false를 주세요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/auth/smtp

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

get_email_templates 이메일 템플릿 보기

읽기 전용

인증 메일 여섯 종류(confirmation, invite, magic_link, recovery, email_change, reauthentication)의 제목과 HTML 본문이에요. custom이 false면 기본 문구(한국어·영어·일본어)를 써요. type을 주면 그 하나만 봐요. 변수는 Supabase와 같아요: {{ .ConfirmationURL }}, {{ .Token }}, {{ .TokenHash }}, {{ .SiteURL }}, {{ .Email }}, {{ .NewEmail }}, {{ .RedirectTo }}, {{ .Data.<key> }}.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/auth/templates, GET /projects/{ref}/auth/templates/{type}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
typestring, confirmation | invite | magic_link | recovery | email_change | reauthentication | password_changed | email_changed | mfa_enrolled | mfa_removed | identity_linked | identity_unlinked아니요
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "type": {
      "type": "string",
      "enum": [
        "confirmation",
        "invite",
        "magic_link",
        "recovery",
        "email_change",
        "reauthentication",
        "password_changed",
        "email_changed",
        "mfa_enrolled",
        "mfa_removed",
        "identity_linked",
        "identity_unlinked"
      ]
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_email_template 이메일 템플릿 저장

파괴적

한 종류의 제목과 HTML 본문을 정해요(Supabase 템플릿 그대로 돼요). 제목은 한 줄, {{ if }} 같은 문법은 거부돼요. reauthentication은 아직 보내지 않아요. 저장 전에 preview_email_template로 확인하세요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/auth/templates/{type}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
typestring, confirmation | invite | magic_link | recovery | email_change | reauthentication | password_changed | email_changed | mfa_enrolled | mfa_removed | identity_linked | identity_unlinked예
subjectstring, max length 200예
bodystring, max length 50000예본문 HTML. 예: <a href="{{ .ConfirmationURL }}">가입 확인</a>
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "type": {
      "type": "string",
      "enum": [
        "confirmation",
        "invite",
        "magic_link",
        "recovery",
        "email_change",
        "reauthentication",
        "password_changed",
        "email_changed",
        "mfa_enrolled",
        "mfa_removed",
        "identity_linked",
        "identity_unlinked"
      ]
    },
    "subject": {
      "type": "string",
      "maxLength": 200
    },
    "body": {
      "type": "string",
      "maxLength": 50000,
      "description": "본문 HTML. 예: <a href=\"{{ .ConfirmationURL }}\">가입 확인</a>"
    }
  },
  "required": [
    "ref",
    "type",
    "subject",
    "body"
  ],
  "additionalProperties": false
}

preview_email_template 이메일 템플릿 미리보기

추가만 함

예시 값을 넣어 메일이 어떻게 보일지 돌려줘요(제목, HTML, 텍스트). subject와 body를 주면 저장하지 않고 그 내용을, 빼면 저장된 템플릿이나 기본 문구를 보여 줘요.

이름설명
토큰 범위write
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/auth/templates/{type}/preview

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
typestring, confirmation | invite | magic_link | recovery | email_change | reauthentication | password_changed | email_changed | mfa_enrolled | mfa_removed | identity_linked | identity_unlinked예
subjectstring아니요
bodystring아니요
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "type": {
      "type": "string",
      "enum": [
        "confirmation",
        "invite",
        "magic_link",
        "recovery",
        "email_change",
        "reauthentication",
        "password_changed",
        "email_changed",
        "mfa_enrolled",
        "mfa_removed",
        "identity_linked",
        "identity_unlinked"
      ]
    },
    "subject": {
      "type": "string"
    },
    "body": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "type"
  ],
  "additionalProperties": false
}

remove_email_template 이메일 템플릿 되돌리기

파괴적

한 종류의 템플릿을 지우고 기본 문구(한국어·영어·일본어)로 돌아가요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/auth/templates/{type}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
typestring, confirmation | invite | magic_link | recovery | email_change | reauthentication | password_changed | email_changed | mfa_enrolled | mfa_removed | identity_linked | identity_unlinked예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "type": {
      "type": "string",
      "enum": [
        "confirmation",
        "invite",
        "magic_link",
        "recovery",
        "email_change",
        "reauthentication",
        "password_changed",
        "email_changed",
        "mfa_enrolled",
        "mfa_removed",
        "identity_linked",
        "identity_unlinked"
      ]
    }
  },
  "required": [
    "ref",
    "type"
  ],
  "additionalProperties": false
}

get_sms_settings 문자 로그인 설정 보기

읽기 전용

전화번호 인증번호 로그인에 쓰는 문자 계정을 봐요: 제공자, 발신 번호, 허용 국가, 인증번호 길이·유효 시간, 시간당 한도. 자격증명은 뒤 네 자리만 보여요. platform_available이면 플랫폼 계정(1건 ₩100, 국내만)도 돼요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/auth/sms

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_sms_settings 문자 로그인 설정

파괴적

문자 계정을 저장하고 켜요. 직접 계약한 제공자면 key·secret·account와 등록한 발신 번호가 필요해요(Solapi: API Key·API Secret, NHN Cloud: App Key·Secret Key, Aligo: API Key·User ID(account), Twilio·Twilio Verify: Account SID(account)·Auth Token(secret), MessageBird·Textlocal: key, Vonage: key·secret. MessageBird·Textlocal·Vonage는 11자 이하 발신자 ID, Twilio Verify는 VA로 시작하는 Verify Service SID도 돼요). 나머지 설정은 update_auth_config의 SMS_* 키로 바꿔요. 비운 자격증명은 그대로예요. allowed_countries는 기본 82(한국)만이고, 모르는 나라를 넣으면 해외 유료 번호 문자 사기에 노출돼요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/auth/sms

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
providerstring, platform | solapi | nhn | aligo | twilio | messagebird | textlocal | vonage | twilio_verify예
keystring아니요
secretstring아니요
accountstring아니요
senderstring아니요발신 번호. 예: 01012345678. Twilio는 +1… 번호나 MG로 시작하는 Messaging Service SID.
allowed_countriesarray<string>아니요국가 번호 목록. 예: ["82"].
otp_lengthinteger, min 6, max 10아니요
otp_ttl_secondsinteger, min 60, max 3600아니요
hourly_limitinteger, min 1, max 100000아니요
templatestring아니요{{code}}나 {{ .Code }}가 들어간 문구. null이면 기본 문구.
enabledboolean아니요
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "provider": {
      "type": "string",
      "enum": [
        "platform",
        "solapi",
        "nhn",
        "aligo",
        "twilio",
        "messagebird",
        "textlocal",
        "vonage",
        "twilio_verify"
      ]
    },
    "key": {
      "type": "string"
    },
    "secret": {
      "type": "string"
    },
    "account": {
      "type": "string"
    },
    "sender": {
      "type": "string",
      "description": "발신 번호. 예: 01012345678. Twilio는 +1… 번호나 MG로 시작하는 Messaging Service SID."
    },
    "allowed_countries": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "국가 번호 목록. 예: [\"82\"]."
    },
    "otp_length": {
      "type": "integer",
      "minimum": 6,
      "maximum": 10
    },
    "otp_ttl_seconds": {
      "type": "integer",
      "minimum": 60,
      "maximum": 3600
    },
    "hourly_limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100000
    },
    "template": {
      "type": [
        "string",
        "null"
      ],
      "description": "{{code}}나 {{ .Code }}가 들어간 문구. null이면 기본 문구."
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "required": [
    "ref",
    "provider"
  ],
  "additionalProperties": false
}

remove_sms_settings 문자 로그인 지우기

파괴적

문자 계정 설정을 자격증명째로 지워요. 이후 전화번호 로그인은 phone_provider_disabled로 거부돼요. 잠시 끄려면 set_sms_settings에 enabled: false를 주세요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/auth/sms

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

list_sso_providers SAML SSO 보기

읽기 전용

이 프로젝트에 등록된 SAML IdP와 이메일 도메인, 그리고 IdP에 넣어야 하는 두 주소(acs_url, entity_id)를 봐요. 앱에서는 supabase.auth.signInWithSSO({ domain })로 로그인해요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/auth/sso

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

remove_sso_provider SAML SSO 지우기

파괴적

IdP 하나를 지워요. 그 IdP로 가입한 사용자 계정은 남지만 더는 SSO로 로그인할 수 없어요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/auth/sso/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_sso_providers의 id
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_sso_providers의 id"
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

list_redirect_urls 로그인 후 돌아갈 주소 목록

읽기 전용

로그인이 끝난 사람을 돌려보낼 수 있는 주소예요. 여기 없는 주소로는 돌려보내지 않아요. 로그인은 되는데 아무 데도 안 간다면 여기부터 보세요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/auth/redirect-urls

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

add_redirect_url 돌아갈 주소 추가

추가만 함

주소 하나를 허용 목록에 넣어요. 스킴·호스트·포트가 모두 같아야 하고 경로는 보지 않아서 https://app.example.com/callback을 넣으면 https://app.example.com이 저장돼요. 모바일 앱은 자기 스킴(co.example.app://callback)을 넣으면 co.example.app://callback이 저장돼요. 점이 들어간 앱 스킴만 받아요. 응답에 실제로 저장된 목록이 와요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/auth/redirect-urls

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
urlstring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "url": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "url"
  ],
  "additionalProperties": false
}

remove_redirect_url 돌아갈 주소 제거

파괴적

허용 목록에서 주소 하나를 빼요. list_redirect_urls가 돌려준 그대로 넣으세요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/auth/redirect-urls

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
urlstring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "url": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "url"
  ],
  "additionalProperties": false
}

remove_user 가입자 삭제

파괴적

프로젝트의 가입자 한 명을 지워요. 되돌릴 수 없어요. id는 list_users가 돌려준 값이에요. 사용자가 분명히 요청했을 때만 쓰고, confirm에 그 가입자의 이메일(또는 id)을 그대로 넣어야 해요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/users/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_users의 id(UUID).
confirmstring예지울 가입자의 이메일 또는 id. list_users의 email이나 id와 같아야 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_users의 id(UUID)."
    },
    "confirm": {
      "type": "string",
      "description": "지울 가입자의 이메일 또는 id. list_users의 email이나 id와 같아야 해요."
    }
  },
  "required": [
    "ref",
    "id",
    "confirm"
  ],
  "additionalProperties": false
}

set_anonymous_sign_in 익명 로그인 켜기·끄기

파괴적

이메일 없이 바로 세션을 받는 익명 로그인을 켜거나 꺼요. 지금 상태는 list_auth_providers의 anonymous_sign_in이에요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/auth/anonymous

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
enabledboolean예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "required": [
    "ref",
    "enabled"
  ],
  "additionalProperties": false
}

파일 저장소

이름설명
list_buckets버킷 목록
create_bucket버킷 만들기
update_bucket버킷 설정 바꾸기
empty_bucket버킷 비우기
delete_bucket버킷 삭제
list_objects파일 목록
upload_object파일 올리기
download_object파일 내려받기
delete_object파일 삭제
create_upload_url파일 올리기 주소 만들기
create_signed_url서명 주소 만들기

list_buckets 버킷 목록

읽기 전용

파일 저장소의 버킷과 각각의 파일 수·용량을 돌려줘요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/buckets

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_bucket 버킷 만들기

추가만 함

공개 버킷은 누구나 읽을 수 있고, 비공개 버킷은 올린 사람만 읽어요. file_size_limit와 allowed_mime_types로 파일 하나의 크기와 받을 형식을 처음부터 정할 수 있어요(나중에는 update_bucket).

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/buckets

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring, pattern ^[a-z0-9][a-z0-9._-]{1,62}$예
publicboolean아니요기본값은 비공개예요.
file_size_limitstring아니요파일 하나의 최대 크기. 바이트 수나 "5MB" 같은 크기. null이면 제한 없음(요금제 한도까지).
allowed_mime_typesstring아니요받을 형식. 예: ["image/png", "image/*"]. null이면 모든 형식.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "pattern": "^[a-z0-9][a-z0-9._-]{1,62}$"
    },
    "public": {
      "type": "boolean",
      "description": "기본값은 비공개예요."
    },
    "file_size_limit": {
      "type": [
        "integer",
        "string",
        "null"
      ],
      "description": "파일 하나의 최대 크기. 바이트 수나 \"5MB\" 같은 크기. null이면 제한 없음(요금제 한도까지)."
    },
    "allowed_mime_types": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      },
      "description": "받을 형식. 예: [\"image/png\", \"image/*\"]. null이면 모든 형식."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

update_bucket 버킷 설정 바꾸기

파괴적

버킷의 공개 여부, 파일 하나의 최대 크기, 받을 형식을 바꿔요. 준 것만 바뀌고 나머지는 그대로예요. 공개로 바꾸면 그 안의 파일을 누구나 받을 수 있게 되니 사용자가 분명히 요청했을 때만 쓰세요. 이미 있는 파일은 그대로 둬요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTPATCH /projects/{ref}/buckets/{bucket}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
bucketstring예list_buckets의 버킷 이름.
publicboolean아니요true면 공개, false면 비공개.
file_size_limitstring아니요파일 하나의 최대 크기. 바이트 수나 "5MB" 같은 크기. null이면 제한 없음(요금제 한도까지).
allowed_mime_typesstring아니요받을 형식. 예: ["image/png", "image/*"]. null이면 모든 형식.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "bucket": {
      "type": "string",
      "description": "list_buckets의 버킷 이름."
    },
    "public": {
      "type": "boolean",
      "description": "true면 공개, false면 비공개."
    },
    "file_size_limit": {
      "type": [
        "integer",
        "string",
        "null"
      ],
      "description": "파일 하나의 최대 크기. 바이트 수나 \"5MB\" 같은 크기. null이면 제한 없음(요금제 한도까지)."
    },
    "allowed_mime_types": {
      "type": [
        "array",
        "null"
      ],
      "items": {
        "type": "string"
      },
      "description": "받을 형식. 예: [\"image/png\", \"image/*\"]. null이면 모든 형식."
    }
  },
  "required": [
    "ref",
    "bucket"
  ],
  "additionalProperties": false
}

empty_bucket 버킷 비우기

파괴적

버킷 안의 파일을 모두 지워요. 버킷은 남아요. 되돌릴 수 없으니 사용자가 분명히 요청했을 때만 쓰고, confirm에 버킷 이름을 그대로 넣어야 해요. removed가 지운 파일 수예요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/buckets/{bucket}/empty

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
bucketstring예list_buckets의 버킷 이름.
confirmstring예버킷 이름. bucket과 정확히 같아야 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "bucket": {
      "type": "string",
      "description": "list_buckets의 버킷 이름."
    },
    "confirm": {
      "type": "string",
      "description": "버킷 이름. bucket과 정확히 같아야 해요."
    }
  },
  "required": [
    "ref",
    "bucket",
    "confirm"
  ],
  "additionalProperties": false
}

delete_bucket 버킷 삭제

파괴적

빈 버킷을 지워요. 파일이 남아 있으면 거절하니 먼저 empty_bucket으로 비우세요. 되돌릴 수 없어요. 사용자가 분명히 요청했을 때만 쓰고, confirm에 버킷 이름을 그대로 넣어야 해요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/buckets/{bucket}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
bucketstring예list_buckets의 버킷 이름.
confirmstring예버킷 이름. bucket과 정확히 같아야 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "bucket": {
      "type": "string",
      "description": "list_buckets의 버킷 이름."
    },
    "confirm": {
      "type": "string",
      "description": "버킷 이름. bucket과 정확히 같아야 해요."
    }
  },
  "required": [
    "ref",
    "bucket",
    "confirm"
  ],
  "additionalProperties": false
}

list_objects 파일 목록

읽기 전용

버킷 안의 한 폴더를 봐요: 하위 폴더와 파일의 이름, 크기, 형식. prefix로 폴더를 고르고(예: avatars/2024/), search로 이름을 찾아요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/buckets/{bucket}/objects

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
bucketstring예list_buckets의 버킷 이름.
prefixstring아니요볼 폴더. 비우면 맨 위.
searchstring아니요이름에 이 말이 든 것만.
limitinteger, min 1, max 1000아니요기본 100.
offsetinteger, min 0아니요건너뛸 개수.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "bucket": {
      "type": "string",
      "description": "list_buckets의 버킷 이름."
    },
    "prefix": {
      "type": "string",
      "description": "볼 폴더. 비우면 맨 위."
    },
    "search": {
      "type": "string",
      "description": "이름에 이 말이 든 것만."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000,
      "description": "기본 100."
    },
    "offset": {
      "type": "integer",
      "minimum": 0,
      "description": "건너뛸 개수."
    }
  },
  "required": [
    "ref",
    "bucket"
  ],
  "additionalProperties": false
}

upload_object 파일 올리기

파괴적

파일 하나를 버킷에 올려요(2MB까지). 바이너리는 encoding: base64로 보내요. 같은 이름은 거절하고 upsert: true면 덮어써요. 버킷의 크기·형식 제한을 따라요. 더 크면 create_upload_url을 쓰세요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/buckets/{bucket}/objects

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
bucketstring예list_buckets의 버킷 이름.
namestring예버킷 안의 경로. 예: docs/readme.txt
contentstring예파일 내용 (encoding이 base64면 base64).
encodingstring, utf-8 | base64아니요기본 utf-8.
content_typestring아니요예: image/png. 비우면 텍스트 또는 application/octet-stream.
upsertboolean아니요true면 같은 이름의 파일을 바꿔요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "bucket": {
      "type": "string",
      "description": "list_buckets의 버킷 이름."
    },
    "name": {
      "type": "string",
      "description": "버킷 안의 경로. 예: docs/readme.txt"
    },
    "content": {
      "type": "string",
      "description": "파일 내용 (encoding이 base64면 base64)."
    },
    "encoding": {
      "type": "string",
      "enum": [
        "utf-8",
        "base64"
      ],
      "description": "기본 utf-8."
    },
    "content_type": {
      "type": "string",
      "description": "예: image/png. 비우면 텍스트 또는 application/octet-stream."
    },
    "upsert": {
      "type": "boolean",
      "description": "true면 같은 이름의 파일을 바꿔요."
    }
  },
  "required": [
    "ref",
    "bucket",
    "name",
    "content"
  ],
  "additionalProperties": false
}

download_object 파일 내려받기

읽기 전용

파일 하나의 내용을 돌려줘요(2MB까지). 텍스트는 utf-8로, 바이너리는 base64로 줘요. 더 큰 파일은 create_signed_url로 주소를 만들어 받으세요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/buckets/{bucket}/object

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
bucketstring예list_buckets의 버킷 이름.
namestring예버킷 안의 경로.
encodingstring, utf-8 | base64아니요비우면 내용에 맞게 골라요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "bucket": {
      "type": "string",
      "description": "list_buckets의 버킷 이름."
    },
    "name": {
      "type": "string",
      "description": "버킷 안의 경로."
    },
    "encoding": {
      "type": "string",
      "enum": [
        "utf-8",
        "base64"
      ],
      "description": "비우면 내용에 맞게 골라요."
    }
  },
  "required": [
    "ref",
    "bucket",
    "name"
  ],
  "additionalProperties": false
}

delete_object 파일 삭제

파괴적

버킷에서 파일 하나를 지워요. 되돌릴 수 없어요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/buckets/{bucket}/object

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
bucketstring예list_buckets의 버킷 이름.
namestring예버킷 안의 경로.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "bucket": {
      "type": "string",
      "description": "list_buckets의 버킷 이름."
    },
    "name": {
      "type": "string",
      "description": "버킷 안의 경로."
    }
  },
  "required": [
    "ref",
    "bucket",
    "name"
  ],
  "additionalProperties": false
}

create_upload_url 파일 올리기 주소 만들기

파괴적

2MB보다 큰 파일 하나를 올릴 주소를 만들어요(내용은 이 도구로 보내지 않아요). 받은 url에 파일 바이트를 그대로 PUT하고 content-type을 넣으세요(example의 curl). 주소는 2시간 동안 그 이름 하나에만 써요. max_bytes를 넘거나 allowed_mime_types에 없으면 거절돼요: 더 크면 blackwall://storage의 이어 올리기(TUS)를 쓰세요. 공개 버킷이면 public_url이 공개 주소예요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/buckets/{bucket}/upload-urls

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
bucketstring예list_buckets의 버킷 이름.
namestring예버킷 안의 경로. 예: videos/intro.mp4
upsertboolean아니요true면 같은 이름의 파일을 바꿔요. 기본은 거절해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "bucket": {
      "type": "string",
      "description": "list_buckets의 버킷 이름."
    },
    "name": {
      "type": "string",
      "description": "버킷 안의 경로. 예: videos/intro.mp4"
    },
    "upsert": {
      "type": "boolean",
      "description": "true면 같은 이름의 파일을 바꿔요. 기본은 거절해요."
    }
  },
  "required": [
    "ref",
    "bucket",
    "name"
  ],
  "additionalProperties": false
}

create_signed_url 서명 주소 만들기

파괴적

비공개 버킷의 파일 하나를 정해진 시간 동안 누구나 받을 수 있는 주소를 만들어요(기본 1시간, 최대 7일). 주소를 가진 사람은 로그인 없이 받으니 필요한 만큼만 쓰세요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/buckets/{bucket}/signed-urls

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
bucketstring예list_buckets의 버킷 이름.
namestring예버킷 안의 경로.
expires_ininteger, min 1, max 604800아니요열려 있는 초. 기본 3600.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "bucket": {
      "type": "string",
      "description": "list_buckets의 버킷 이름."
    },
    "name": {
      "type": "string",
      "description": "버킷 안의 경로."
    },
    "expires_in": {
      "type": "integer",
      "minimum": 1,
      "maximum": 604800,
      "description": "열려 있는 초. 기본 3600."
    }
  },
  "required": [
    "ref",
    "bucket",
    "name"
  ],
  "additionalProperties": false
}

배포와 저장소

이름설명
list_deployments배포 목록
get_deployment배포 하나와 빌드 로그
redeploy다시 배포
promote_deployment프리뷰를 프로덕션으로
rollback_deployment프로덕션 되돌리기
deploy_source올린 소스 배포
create_source_upload_url배포할 압축 파일 올리기 주소 만들기
list_deploy_hooks배포 훅 목록
create_deploy_hook배포 훅 만들기
remove_deploy_hook배포 훅 삭제
list_apps연결된 저장소와 빌드 설정
delete_app앱 삭제
update_app빌드 설정 바꾸기
get_preview_protection프리뷰 보호 보기
set_preview_protection프리뷰 보호 바꾸기
get_branch_previews브랜치 미리보기 보기
set_branch_previews브랜치 미리보기 바꾸기
list_env_vars환경 변수 보기
set_env_vars환경 변수 저장
remove_env_var환경 변수 삭제
list_git_accessGit 연결
set_repo_token저장소 토큰 저장
remove_repo_token저장소 토큰 삭제
add_repository저장소 추가
list_importable_repositories가져올 저장소 찾기
import_repository저장소 가져오기
disconnect_repository저장소 연결 해제
set_checks_on_server검사를 One Server에서 실행
unlink_github_appGitHub 계정 연결 해제
get_server_memory서버 메모리
set_server_memory서버 메모리 바꾸기
get_concurrent_builds동시 빌드
set_concurrent_builds동시 빌드 바꾸기
list_gpuGPU 작업과 서버
create_gpu_jobGPU 작업 만들기
get_gpu_jobGPU 작업 보기
cancel_gpu_jobGPU 작업 멈추기
create_gpu_serverGPU 서버 만들기
stop_gpu_serverGPU 서버 멈추기
delete_gpu_serverGPU 서버 지우기
create_gpu_volumeGPU 저장소 만들기
delete_gpu_volumeGPU 저장소 지우기
list_deleted_deployments최근 삭제한 배포
delete_deployment배포 삭제
restore_deployment배포 되돌리기
list_volumes볼륨 목록
create_volume볼륨 만들기
resize_volume볼륨 늘리기
delete_volume볼륨 지우기
create_volume_backup볼륨 백업
restore_volume_backup볼륨 복원

list_deployments 배포 목록

읽기 전용

최근 배포를 최신순으로 봐요: 상태(queued, building, ready, error), 환경, 주소, 브랜치, 커밋, 실패 이유. 삭제한 배포는 빠져요(list_deleted_deployments). next_before가 있으면 before에 넣어 다음 쪽을 봐요. url은 그 배포만의 dpl- 주소, production_url·preview_url은 프로덕션·브랜치 주소예요. preview_protection은 프리뷰를 누가 여는지예요(members 기본, password, off). 프로덕션 주소는 늘 공개지만, 보호가 켜지면 dpl- 주소는 보호돼요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/deployments

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
limitinteger, min 1, max 100아니요기본 20.
beforestring, pattern ^dpl-[0-9a-f]{16}$아니요이 배포 다음부터(더 오래된 쪽). 앞 쪽 답의 next_before.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "기본 20."
    },
    "before": {
      "type": "string",
      "pattern": "^dpl-[0-9a-f]{16}$",
      "description": "이 배포 다음부터(더 오래된 쪽). 앞 쪽 답의 next_before."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

get_deployment 배포 하나와 빌드 로그

읽기 전용

배포 하나의 상태, 주소, 빌드 로그 끝부분을 봐요(실패 이유는 대개 로그 끝). 환경 변수 값은 가려져요. 주소 필드는 list_deployments와 같아요. wait(초)를 주면 빌드가 끝날 때까지 기다려요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/deployments/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예dpl-로 시작하는 배포 이름.
tailinteger, min 1, max 5000아니요빌드 로그 마지막 몇 줄. 기본 200.
waitinteger, min 0, max 120아니요빌드가 끝날(ready·error) 때까지 기다릴 초. 기본 0은 바로 답해요. 시간 안에 안 끝나면 still_running: true와 retry_after_seconds가 와요. MCP 클라이언트는 보통 60초쯤에 호출을 포기하니 45 정도가 안전해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "dpl-로 시작하는 배포 이름."
    },
    "tail": {
      "type": "integer",
      "minimum": 1,
      "maximum": 5000,
      "description": "빌드 로그 마지막 몇 줄. 기본 200."
    },
    "wait": {
      "type": "integer",
      "minimum": 0,
      "maximum": 120,
      "description": "빌드가 끝날(ready·error) 때까지 기다릴 초. 기본 0은 바로 답해요. 시간 안에 안 끝나면 still_running: true와 retry_after_seconds가 와요. MCP 클라이언트는 보통 60초쯤에 호출을 포기하니 45 정도가 안전해요."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

redeploy 다시 배포

파괴적

배포와 같은 커밋을 같은 환경에 다시 빌드해요. 환경 변수를 나중에 넣었거나 패키지 저장소가 잠시 죽어 실패한 빌드에 써요. 프로덕션은 소유자·관리자만 돼요. 답에 새 주소와 보안 점검(advisors)이 와요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/deployments/{id}/redeploy

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예dpl-로 시작하는 배포 이름.
waitinteger, min 0, max 120아니요빌드가 끝날(ready·error) 때까지 기다릴 초. 기본 0은 바로 답해요. 시간 안에 안 끝나면 still_running: true와 retry_after_seconds가 와요. MCP 클라이언트는 보통 60초쯤에 호출을 포기하니 45 정도가 안전해요.
block_on_advisorsboolean아니요true면 get_advisors의 심각한 보안 문제(advisors.critical)가 하나라도 있을 때 프로덕션 배포를 하지 않고 거절해요. 기본 false: 배포하고 advisors에 개수와 상위 3개를 알려줘요. 프리뷰는 막지 않아요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "dpl-로 시작하는 배포 이름."
    },
    "wait": {
      "type": "integer",
      "minimum": 0,
      "maximum": 120,
      "description": "빌드가 끝날(ready·error) 때까지 기다릴 초. 기본 0은 바로 답해요. 시간 안에 안 끝나면 still_running: true와 retry_after_seconds가 와요. MCP 클라이언트는 보통 60초쯤에 호출을 포기하니 45 정도가 안전해요."
    },
    "block_on_advisors": {
      "type": "boolean",
      "description": "true면 get_advisors의 심각한 보안 문제(advisors.critical)가 하나라도 있을 때 프로덕션 배포를 하지 않고 거절해요. 기본 false: 배포하고 advisors에 개수와 상위 3개를 알려줘요. 프리뷰는 막지 않아요."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

promote_deployment 프리뷰를 프로덕션으로

파괴적

빌드가 끝난 프리뷰 배포를 프로덕션으로 올려요. 같은 커밋을 프로덕션 환경 변수로 다시 빌드하고, 끝나면 프로덕션 주소가 그 결과를 가리켜요. 프리뷰용 키가 프로덕션에 들어가지 않게 프리뷰 빌드를 그대로 쓰지 않아요. 빌드가 끝난 프로덕션 배포를 주면 다시 빌드하지 않고 프로덕션 주소가 바로 그 배포를 가리키고, 되돌리기로 생긴 프로덕션 보류(production_held)가 풀려요. 지금 배포를 주면 보류만 풀려요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자, project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/deployments/{id}/promote

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예올릴 배포의 dpl- 이름. 보통 프리뷰, 보류를 풀 때는 프로덕션 배포.
waitinteger, min 0, max 120아니요빌드가 끝날(ready·error) 때까지 기다릴 초. 기본 0은 바로 답해요. 시간 안에 안 끝나면 still_running: true와 retry_after_seconds가 와요. MCP 클라이언트는 보통 60초쯤에 호출을 포기하니 45 정도가 안전해요.
block_on_advisorsboolean아니요true면 get_advisors의 심각한 보안 문제(advisors.critical)가 하나라도 있을 때 프로덕션 배포를 하지 않고 거절해요. 기본 false: 배포하고 advisors에 개수와 상위 3개를 알려줘요. 프리뷰는 막지 않아요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "올릴 배포의 dpl- 이름. 보통 프리뷰, 보류를 풀 때는 프로덕션 배포."
    },
    "wait": {
      "type": "integer",
      "minimum": 0,
      "maximum": 120,
      "description": "빌드가 끝날(ready·error) 때까지 기다릴 초. 기본 0은 바로 답해요. 시간 안에 안 끝나면 still_running: true와 retry_after_seconds가 와요. MCP 클라이언트는 보통 60초쯤에 호출을 포기하니 45 정도가 안전해요."
    },
    "block_on_advisors": {
      "type": "boolean",
      "description": "true면 get_advisors의 심각한 보안 문제(advisors.critical)가 하나라도 있을 때 프로덕션 배포를 하지 않고 거절해요. 기본 false: 배포하고 advisors에 개수와 상위 3개를 알려줘요. 프리뷰는 막지 않아요."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

rollback_deployment 프로덕션 되돌리기

파괴적

프로덕션 주소를 예전에 서비스했던 프로덕션 배포로 바로 돌려놓아요. 다시 빌드하지 않고, 몇 초 안에 바뀌어요. 커스텀 도메인도 함께 따라가요. 그 뒤 프로덕션은 보류돼요(production_held): 새 프로덕션 빌드는 만들어지지만 promote_deployment로 올리기 전까지 나가지 않아요. 소유자·관리자만 할 수 있어요. 답에 그 배포의 url과 production_url이 와요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/deployments/{id}/rollback

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예되돌아갈 프로덕션 배포의 dpl- 이름.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "되돌아갈 프로덕션 배포의 dpl- 이름."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

deploy_source 올린 소스 배포

파괴적

이미 올린 압축 파일(POST /deployments/sources 또는 oneend deploy)을 source(SHA-256)로 골라 배포해요. 프리뷰로 확인한 소스를 프로덕션에 다시 낼 때 써요. 나머지 인자는 deploy_files와 같아요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/deployments

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
sourcestring, pattern ^[0-9a-f]{64}$예올릴 때 받은 source (64자리 SHA-256).
targetstring, preview | production아니요기본 preview.
prebuiltboolean아니요true면 빌드하지 않고 그대로 서비스해요.
appstring아니요배포할 앱 (list_apps의 name). 앱이 하나면 생략해요.
branchstring아니요프리뷰의 이름. 프리뷰 주소가 돼요. 기본 preview.
messagestring아니요배포 목록에 남길 메모 (선택).
waitinteger, min 0, max 120아니요빌드가 끝날(ready·error) 때까지 기다릴 초. 기본 0은 바로 답해요. 시간 안에 안 끝나면 still_running: true와 retry_after_seconds가 와요. MCP 클라이언트는 보통 60초쯤에 호출을 포기하니 45 정도가 안전해요.
block_on_advisorsboolean아니요true면 get_advisors의 심각한 보안 문제(advisors.critical)가 하나라도 있을 때 프로덕션 배포를 하지 않고 거절해요. 기본 false: 배포하고 advisors에 개수와 상위 3개를 알려줘요. 프리뷰는 막지 않아요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "source": {
      "type": "string",
      "pattern": "^[0-9a-f]{64}$",
      "description": "올릴 때 받은 source (64자리 SHA-256)."
    },
    "target": {
      "type": "string",
      "enum": [
        "preview",
        "production"
      ],
      "description": "기본 preview."
    },
    "prebuilt": {
      "type": "boolean",
      "description": "true면 빌드하지 않고 그대로 서비스해요."
    },
    "app": {
      "type": "string",
      "description": "배포할 앱 (list_apps의 name). 앱이 하나면 생략해요."
    },
    "branch": {
      "type": "string",
      "description": "프리뷰의 이름. 프리뷰 주소가 돼요. 기본 preview."
    },
    "message": {
      "type": "string",
      "description": "배포 목록에 남길 메모 (선택)."
    },
    "wait": {
      "type": "integer",
      "minimum": 0,
      "maximum": 120,
      "description": "빌드가 끝날(ready·error) 때까지 기다릴 초. 기본 0은 바로 답해요. 시간 안에 안 끝나면 still_running: true와 retry_after_seconds가 와요. MCP 클라이언트는 보통 60초쯤에 호출을 포기하니 45 정도가 안전해요."
    },
    "block_on_advisors": {
      "type": "boolean",
      "description": "true면 get_advisors의 심각한 보안 문제(advisors.critical)가 하나라도 있을 때 프로덕션 배포를 하지 않고 거절해요. 기본 false: 배포하고 advisors에 개수와 상위 3개를 알려줘요. 프리뷰는 막지 않아요."
    }
  },
  "required": [
    "ref",
    "source"
  ],
  "additionalProperties": false
}

create_source_upload_url 배포할 압축 파일 올리기 주소 만들기

추가만 함

3MB 넘는 사이트를 저장소 없이 배포할 때, 압축 파일(.zip, .tar, .tar.gz) 하나를 올릴 주소를 만들어요. url에 그대로 PUT하면(토큰 없이, example의 curl) source가 오니 deploy_source를 부르세요. 주소는 1시간, max_bytes까지예요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/deployments/sources/upload-urls

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

list_deploy_hooks 배포 훅 목록

읽기 전용

배포 훅과 그 주소를 봐요. 주소로 POST하면 그 브랜치의 최신 커밋을 빌드하니 주소 자체가 비밀이에요. 읽기 권한 토큰에는 주소의 끝 네 자리만 보여줘요(secret_hidden). 쓰기 권한 토큰이면 전부 보여요.

이름설명
토큰 범위read
역할secrets.read 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/deploy-hooks

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_deploy_hook 배포 훅 만들기

추가만 함

push 없이 다시 빌드하게 하는 주소를 만들어요. CMS에서 글을 발행하거나 예약 작업이 돌 때 부르게 해요. 프로덕션 브랜치의 훅은 소유자·관리자만 만들 수 있어요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/deploy-hooks

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
appstring예
branchstring예
namestring아니요
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "app": {
      "type": "string"
    },
    "branch": {
      "type": "string"
    },
    "name": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "app",
    "branch"
  ],
  "additionalProperties": false
}

remove_deploy_hook 배포 훅 삭제

파괴적

배포 훅을 지워요. 그 주소를 부르던 곳에서는 더 배포가 일어나지 않아요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/deploy-hooks/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

list_apps 연결된 저장소와 빌드 설정

읽기 전용

배포하는 저장소마다 프로덕션 브랜치, root_directory, framework(null이면 자동 감지), build_command·output_directory·install_command(null이면 프리셋 기본값)를 봐요. detected_framework는 최근 빌드가 쓴 것, frameworks는 고를 수 있는 프리셋이에요. 저장소는 첫 push 때 생겨요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/apps

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

delete_app 앱 삭제

파괴적

프로젝트의 앱 하나를 지워요(모노레포에서 폴더를 없앤 앱). 주소는 바로 내려가고, 진행 중인 빌드는 취소되고, 배포는 복원 없이 지워져 파일이 몇 분 안에 사라져요. 저장소에 폴더가 남아 있어도 다시 빌드하지 않아요. 되돌릴 수 없어요. 프로젝트의 기본 사이트, 도메인이 연결된 앱, 디스크가 있는 앱은 거절하고 먼저 할 일을 알려줘요. 사용자가 분명히 요청했을 때만 쓰고, confirm에 앱 이름을 그대로 넣어야 해요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/apps/{name}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예list_apps의 name.
confirmstring예앱 이름. name과 정확히 같아야 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "list_apps의 name."
    },
    "confirm": {
      "type": "string",
      "description": "앱 이름. name과 정확히 같아야 해요."
    }
  },
  "required": [
    "ref",
    "name",
    "confirm"
  ],
  "additionalProperties": false
}

update_app 빌드 설정 바꾸기

파괴적

저장소 하나의 프로덕션 브랜치, 빌드할 폴더, 프리셋, 빌드·출력·설치 명령을 바꿔요. 모노레포면 root_directory에 앱 폴더(예: apps/web)를 넣어요. 뺀 값은 그대로, null은 자동 감지, 빈 문자열 명령은 그 단계를 건너뛰어요. blackwall.json 값이 있으면 그걸 써요. 다음 배포부터 적용되고, port만 1분 안에 서버를 다시 시작해 적용해요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPATCH /projects/{ref}/apps/{name}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예list_apps의 name.
production_branchstring아니요
root_directorystring아니요저장소 안의 상대 경로. 저장소 전체는 "."
frameworkstring, auto | next | vite | astro | sveltekit | nuxt | remix | react-router | angular | create-react-app | gatsby | docusaurus | vitepress | eleventy | hugo | solidstart | qwik | node | static | docker | null아니요프레임워크 프리셋. "auto"나 null이면 빌드할 때마다 자동 감지해요. "static"은 기타(정적 파일)예요.
build_commandstring아니요빌드 명령 덮어쓰기(한 줄). null이면 프리셋 기본값, 빈 문자열이면 빌드를 건너뛰어요.
output_directorystring아니요출력 디렉터리 덮어쓰기. root_directory 안의 상대 경로(예: dist). null이면 프리셋 기본값.
install_commandstring아니요설치 명령 덮어쓰기(한 줄). null이면 잠금 파일에 맞춘 기본값, 빈 문자열이면 설치를 건너뛰어요.
run_asstring, platform | image아니요서버를 누구로 실행할지. platform(기본)은 일반 사용자(10001), image는 이미지에 적힌 사용자(root 포함)로 gVisor 격리 환경에서 실행해요. WordPress 공식 이미지처럼 root로 시작해야 하는 Dockerfile 앱에만 image를 쓰세요. 빌드 없이 1분 안에 서버가 다시 시작해요.
portstring, min 1, max 65535아니요서버가 컨테이너 안에서 듣는 포트. null이면 이미지의 EXPOSE, 없으면 3000. 바꾸면 1분 안에 서버가 다시 시작해요(다시 배포할 필요 없어요).
build_machinestring, standard | enhanced | turbo | xl | max아니요빌드 머신 크기. standard 2 CPU·6GB, enhanced 4 CPU·12GB(빌드 분 2배), turbo 8 CPU·24GB(4배), xl 16 CPU·48GB(8배), max 32 CPU·96GB(16배). xl과 max는 Enterprise 요금제에서 쓸 수 있어요. 메모리가 모자라 빌드가 죽으면 키우세요. 다음 빌드부터 적용돼요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "list_apps의 name."
    },
    "production_branch": {
      "type": "string"
    },
    "root_directory": {
      "type": "string",
      "description": "저장소 안의 상대 경로. 저장소 전체는 \".\""
    },
    "framework": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "auto",
        "next",
        "vite",
        "astro",
        "sveltekit",
        "nuxt",
        "remix",
        "react-router",
        "angular",
        "create-react-app",
        "gatsby",
        "docusaurus",
        "vitepress",
        "eleventy",
        "hugo",
        "solidstart",
        "qwik",
        "node",
        "static",
        "docker",
        null
      ],
      "description": "프레임워크 프리셋. \"auto\"나 null이면 빌드할 때마다 자동 감지해요. \"static\"은 기타(정적 파일)예요."
    },
    "build_command": {
      "type": [
        "string",
        "null"
      ],
      "description": "빌드 명령 덮어쓰기(한 줄). null이면 프리셋 기본값, 빈 문자열이면 빌드를 건너뛰어요."
    },
    "output_directory": {
      "type": [
        "string",
        "null"
      ],
      "description": "출력 디렉터리 덮어쓰기. root_directory 안의 상대 경로(예: dist). null이면 프리셋 기본값."
    },
    "install_command": {
      "type": [
        "string",
        "null"
      ],
      "description": "설치 명령 덮어쓰기(한 줄). null이면 잠금 파일에 맞춘 기본값, 빈 문자열이면 설치를 건너뛰어요."
    },
    "run_as": {
      "type": "string",
      "enum": [
        "platform",
        "image"
      ],
      "description": "서버를 누구로 실행할지. platform(기본)은 일반 사용자(10001), image는 이미지에 적힌 사용자(root 포함)로 gVisor 격리 환경에서 실행해요. WordPress 공식 이미지처럼 root로 시작해야 하는 Dockerfile 앱에만 image를 쓰세요. 빌드 없이 1분 안에 서버가 다시 시작해요."
    },
    "port": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 1,
      "maximum": 65535,
      "description": "서버가 컨테이너 안에서 듣는 포트. null이면 이미지의 EXPOSE, 없으면 3000. 바꾸면 1분 안에 서버가 다시 시작해요(다시 배포할 필요 없어요)."
    },
    "build_machine": {
      "type": "string",
      "enum": [
        "standard",
        "enhanced",
        "turbo",
        "xl",
        "max"
      ],
      "description": "빌드 머신 크기. standard 2 CPU·6GB, enhanced 4 CPU·12GB(빌드 분 2배), turbo 8 CPU·24GB(4배), xl 16 CPU·48GB(8배), max 32 CPU·96GB(16배). xl과 max는 Enterprise 요금제에서 쓸 수 있어요. 메모리가 모자라 빌드가 죽으면 키우세요. 다음 빌드부터 적용돼요."
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

get_preview_protection 프리뷰 보호 보기

읽기 전용

프로덕션이 아닌 배포(브랜치 프리뷰, 배포마다의 주소)를 누가 열 수 있는지 봐요: off, members(조직 멤버만), password. 보호하는 주소(scope), 로그인 없이 들이는 IP(trusted_ips), 그냥 통과시키는 경로(options_paths), 우회 키(bypass_secrets, 값은 끝 네 글자만), 공유 링크(share_links)도 함께 돌려줘요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/preview-protection

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_preview_protection 프리뷰 보호 바꾸기

파괴적

프리뷰를 누가 여는지 바꿔요: members(로그인한 조직 멤버), password(처음 켤 때 8자 이상 password 필요), off(누구나). 프로덕션 주소와 연결한 도메인은 늘 공개예요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTPUT /projects/{ref}/preview-protection

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
modestring, off | members | password예
passwordstring아니요mode가 password일 때. 비우면 이미 있는 비밀번호를 그대로 써요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "mode": {
      "type": "string",
      "enum": [
        "off",
        "members",
        "password"
      ]
    },
    "password": {
      "type": "string",
      "description": "mode가 password일 때. 비우면 이미 있는 비밀번호를 그대로 써요."
    }
  },
  "required": [
    "ref",
    "mode"
  ],
  "additionalProperties": false
}

get_branch_previews 브랜치 미리보기 보기

읽기 전용

이 프로젝트가 속한 조직에서 프로덕션 브랜치가 아닌 브랜치에 푸시할 때 미리보기를 빌드하는지 봐요(branch_previews). false면 프로덕션 브랜치(보통 main)에 들어온 것만 빌드해요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/branch-previews

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_branch_previews 브랜치 미리보기 바꾸기

파괴적

조직 전체에서 브랜치 푸시마다 미리보기를 빌드할지 정해요. false면 프로덕션 브랜치(보통 main)에 들어온 것만 빌드하고, 건너뛴 푸시는 배포 기록에 건너뜀으로 남아요. redeploy, 직접 올린 배포, 배포 훅은 그대로 빌드해요. 이 조직의 모든 프로젝트에 적용돼요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할team.manage 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/branch-previews

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
enabledboolean예true면 브랜치 푸시마다 미리보기를 빌드해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "enabled": {
      "type": "boolean",
      "description": "true면 브랜치 푸시마다 미리보기를 빌드해요."
    }
  },
  "required": [
    "ref",
    "enabled"
  ],
  "additionalProperties": false
}

list_env_vars 환경 변수 보기

읽기 전용

배포한 앱이 빌드·실행 때 받는 환경 변수예요. 같은 이름이 production과 preview에 따로 있을 수 있어요. 민감한 값은 value_hint(뒤 네 자리)만 줘요. readable이 false면 빌드에서 빠지니 다시 저장하세요. automatic은 저장하지 않아도 들어가는 변수예요(SUPABASE_URL, NEXT_PUBLIC_SUPABASE_URL, SUPABASE_ANON_KEY, NEXT_PUBLIC_SUPABASE_ANON_KEY, NEXT_PUBLIC_SUPABASE_PUBLISHABLE_KEY, SUPABASE_SERVICE_ROLE_KEY). available_in은 들어가는 곳으로, SUPABASE_SERVICE_ROLE_KEY는 실행(runtime)에만 들어가요. 같은 이름으로 저장한 값이 먼저이고 빌드에도 들어가요(overridden_in).

이름설명
토큰 범위read
역할secrets.read 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/env

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_env_vars 환경 변수 저장

파괴적

환경 변수를 저장해요. variables로 하나씩, 또는 dotenv에 .env 내용을 통째로 줘요. 같은 이름은 덮어쓰고, 하나라도 틀리면 아무것도 저장하지 않아요. 단, dotenv에서 플랫폼이 정하는 이름의 줄은 건너뛰고 skipped에 알려 줘요. PORT, HOST, HOSTNAME, HOME과 BLACKWALL_로 시작하는 이름은 못 써요. CI는 빌드에 기본 1이고, 직접 정하면(CI=false 등) 그 값을 써요. 다음 배포부터 적용돼요. sensitive를 빼면 비밀 같은 이름(API_KEY, STRIPE_SECRET, DATABASE_URL 등)은 민감한 값으로 저장돼 다시 못 읽어요(sensitive_keys). production 값은 소유자·관리자만 바꿔요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/env

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
variablesarray<object>아니요
dotenvstring아니요.env 파일 내용. 주석과 빈 줄은 건너뛰어요.
targetsarray<string>, production | preview | development, min items 1예preview는 프로덕션 브랜치가 아닌 모든 브랜치의 배포예요.
sensitiveboolean아니요true면 저장한 뒤 값을 다시 읽을 수 없어요. 주지 않으면 이름에 SECRET, TOKEN, PASSWORD, PRIVATE, DSN, DATABASE_URL이 들어가거나 _KEY로 끝나거나 KEY_가 든 변수만 민감한 값으로 저장해요. false면 모두 다시 읽을 수 있어요.
appstring아니요이 앱에만 넣을 때 앱 이름(list_apps의 name). 같은 이름의 프로젝트 변수보다 먼저예요. 비우면 프로젝트의 모든 앱.
branchstring, max length 200아니요이 git 브랜치의 미리보기에만 넣을 때 브랜치 이름. targets는 preview 하나여야 해요. app과 함께 쓰면 그 앱의 그 브랜치에만 들어가요. 비우면 모든 미리보기.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "variables": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "key": {
            "type": "string"
          },
          "value": {
            "type": "string"
          }
        },
        "required": [
          "key",
          "value"
        ],
        "additionalProperties": false
      }
    },
    "dotenv": {
      "type": "string",
      "description": ".env 파일 내용. 주석과 빈 줄은 건너뛰어요."
    },
    "targets": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "production",
          "preview",
          "development"
        ]
      },
      "minItems": 1,
      "description": "preview는 프로덕션 브랜치가 아닌 모든 브랜치의 배포예요."
    },
    "sensitive": {
      "type": "boolean",
      "description": "true면 저장한 뒤 값을 다시 읽을 수 없어요. 주지 않으면 이름에 SECRET, TOKEN, PASSWORD, PRIVATE, DSN, DATABASE_URL이 들어가거나 _KEY로 끝나거나 KEY_가 든 변수만 민감한 값으로 저장해요. false면 모두 다시 읽을 수 있어요."
    },
    "app": {
      "type": "string",
      "description": "이 앱에만 넣을 때 앱 이름(list_apps의 name). 같은 이름의 프로젝트 변수보다 먼저예요. 비우면 프로젝트의 모든 앱."
    },
    "branch": {
      "type": "string",
      "maxLength": 200,
      "description": "이 git 브랜치의 미리보기에만 넣을 때 브랜치 이름. targets는 preview 하나여야 해요. app과 함께 쓰면 그 앱의 그 브랜치에만 들어가요. 비우면 모든 미리보기."
    }
  },
  "required": [
    "ref",
    "targets"
  ],
  "additionalProperties": false
}

remove_env_var 환경 변수 삭제

파괴적

환경 변수 하나를 production이나 preview 중 한 곳에서 지워요. 민감한 값이었다면 되살릴 수 없어요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/env/{target}/{key}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
keystring예
targetstring, production | preview | development예
appstring아니요앱에만 넣은 변수를 지울 때 앱 이름. 비우면 프로젝트의 변수.
branchstring, max length 200아니요한 git 브랜치의 미리보기에만 넣은 변수를 지울 때 브랜치 이름(list_env_vars의 branch).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "key": {
      "type": "string"
    },
    "target": {
      "type": "string",
      "enum": [
        "production",
        "preview",
        "development"
      ]
    },
    "app": {
      "type": "string",
      "description": "앱에만 넣은 변수를 지울 때 앱 이름. 비우면 프로젝트의 변수."
    },
    "branch": {
      "type": "string",
      "maxLength": 200,
      "description": "한 git 브랜치의 미리보기에만 넣은 변수를 지울 때 브랜치 이름(list_env_vars의 branch)."
    }
  },
  "required": [
    "ref",
    "key",
    "target"
  ],
  "additionalProperties": false
}

list_git_access Git 연결

읽기 전용

배포하는 저장소(connected), 연결한 GitHub 계정(github_accounts), 비공개 저장소를 받을 방법(토큰 끝 네 글자, GitHub App 설치), GitHub 저장소마다 검사를 One Server에서 실행하는지(checks_on_server: available, enabled, state, permission_url, workflows_using)를 봐요. 비공개 저장소 빌드가 받기에서 실패하면 여기부터 보세요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/git

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_repo_token 저장소 토큰 저장

파괴적

비공개 저장소를 받을 접근 토큰을 저장해요(읽기 권한이면 충분해요). 암호화해 저장하고 다시 보여 주지 않아요. 자체 GitLab이면 gitlab_base를 넣으세요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/git/tokens/{provider}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
providerstring, github | gitlab | bitbucket예
tokenstring예
gitlab_basestring아니요자체 GitLab 주소. gitlab.com이면 비워요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "provider": {
      "type": "string",
      "enum": [
        "github",
        "gitlab",
        "bitbucket"
      ]
    },
    "token": {
      "type": "string"
    },
    "gitlab_base": {
      "type": "string",
      "description": "자체 GitLab 주소. gitlab.com이면 비워요."
    }
  },
  "required": [
    "ref",
    "provider",
    "token"
  ],
  "additionalProperties": false
}

remove_repo_token 저장소 토큰 삭제

파괴적

저장한 토큰을 지워요. 연결한 GitHub App 설치는 그대로 둬요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/git/tokens/{provider}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
providerstring, github | gitlab | bitbucket예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "provider": {
      "type": "string",
      "enum": [
        "github",
        "gitlab",
        "bitbucket"
      ]
    }
  },
  "required": [
    "ref",
    "provider"
  ],
  "additionalProperties": false
}

add_repository 저장소 추가

추가만 함 외부로 나감

첫 push 전에 저장소를 이 프로젝트에 붙여요. 그러면 push가 이 프로젝트로 오고 create_deploy_hook도 쓸 수 있어요. repo는 owner/name(GitLab은 group/name)이에요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/git/repos

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
providerstring, github | gitlab | bitbucket예
repostring예
branchstring아니요프로덕션 브랜치. 비우면 main.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "provider": {
      "type": "string",
      "enum": [
        "github",
        "gitlab",
        "bitbucket"
      ]
    },
    "repo": {
      "type": "string"
    },
    "branch": {
      "type": "string",
      "description": "프로덕션 브랜치. 비우면 main."
    }
  },
  "required": [
    "ref",
    "provider",
    "repo"
  ],
  "additionalProperties": false
}

list_importable_repositories 가져올 저장소 찾기

읽기 전용 외부로 나감

GitHub App이 볼 수 있는 저장소를 최근 푸시 순으로 50개까지 봐요. query를 주면 전체에서 찾고, 방금 추가했다면 refresh: true. 계정이 여럿이면 installation으로 골라요. 소유자·관리자만 돼요.

이름설명
토큰 범위read
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/git/importable

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
querystring아니요저장소 이름의 일부. 비우면 최근에 푸시한 순서.
installationinteger아니요어느 GitHub 계정의 설치인지. 비우면 기본 계정.
refreshboolean아니요GitHub에 다시 묻기(1분 캐시를 건너뜀).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "query": {
      "type": "string",
      "description": "저장소 이름의 일부. 비우면 최근에 푸시한 순서."
    },
    "installation": {
      "type": "integer",
      "description": "어느 GitHub 계정의 설치인지. 비우면 기본 계정."
    },
    "refresh": {
      "type": "boolean",
      "description": "GitHub에 다시 묻기(1분 캐시를 건너뜀)."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

import_repository 저장소 가져오기

파괴적 외부로 나감

콘솔의 [연결하고 배포]와 같아요. 저장소를 연결하고 프로덕션 브랜치(비우면 기본 브랜치)의 최신 커밋으로 바로 배포해요. 빌드 설정과 환경 변수(dotenv)를 첫 빌드 전에 함께 저장해요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/git/import

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
repostring예owner/name. list_importable_repositories의 repo.
branchstring아니요프로덕션 브랜치. 비우면 저장소의 기본 브랜치.
root_directorystring아니요모노레포의 앱 폴더(예: apps/web). 비우면 저장소 맨 위. 이미 연결한 저장소에서 다른 폴더를 주면 새 앱으로 추가해요.
appstring아니요앱 이름(콘솔의 "앱 이름"). 비우면 폴더 이름, 없으면 저장소 이름. 같은 이름의 앱이 있으면 그 앱의 설정을 바꿔요.
installationinteger아니요어느 GitHub 계정의 설치로 받을지. 비우면 저장소 주인의 계정.
frameworkstring, auto | next | vite | astro | sveltekit | nuxt | remix | react-router | angular | create-react-app | gatsby | docusaurus | vitepress | eleventy | hugo | solidstart | qwik | node | static | docker | null아니요프레임워크 프리셋. 비우거나 "auto"면 자동 감지.
build_commandstring아니요빌드 명령 덮어쓰기(한 줄). 빈 문자열이면 빌드를 건너뛰어요.
output_directorystring아니요출력 디렉터리 덮어쓰기(예: dist).
install_commandstring아니요설치 명령 덮어쓰기(한 줄).
dotenvstring아니요.env 파일 내용. 프로덕션과 프리뷰 모두에 저장해요.
sensitiveboolean아니요dotenv의 값을 저장한 뒤 다시 보여주지 않아요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "repo": {
      "type": "string",
      "description": "owner/name. list_importable_repositories의 repo."
    },
    "branch": {
      "type": "string",
      "description": "프로덕션 브랜치. 비우면 저장소의 기본 브랜치."
    },
    "root_directory": {
      "type": "string",
      "description": "모노레포의 앱 폴더(예: apps/web). 비우면 저장소 맨 위. 이미 연결한 저장소에서 다른 폴더를 주면 새 앱으로 추가해요."
    },
    "app": {
      "type": "string",
      "description": "앱 이름(콘솔의 \"앱 이름\"). 비우면 폴더 이름, 없으면 저장소 이름. 같은 이름의 앱이 있으면 그 앱의 설정을 바꿔요."
    },
    "installation": {
      "type": "integer",
      "description": "어느 GitHub 계정의 설치로 받을지. 비우면 저장소 주인의 계정."
    },
    "framework": {
      "type": [
        "string",
        "null"
      ],
      "enum": [
        "auto",
        "next",
        "vite",
        "astro",
        "sveltekit",
        "nuxt",
        "remix",
        "react-router",
        "angular",
        "create-react-app",
        "gatsby",
        "docusaurus",
        "vitepress",
        "eleventy",
        "hugo",
        "solidstart",
        "qwik",
        "node",
        "static",
        "docker",
        null
      ],
      "description": "프레임워크 프리셋. 비우거나 \"auto\"면 자동 감지."
    },
    "build_command": {
      "type": [
        "string",
        "null"
      ],
      "description": "빌드 명령 덮어쓰기(한 줄). 빈 문자열이면 빌드를 건너뛰어요."
    },
    "output_directory": {
      "type": [
        "string",
        "null"
      ],
      "description": "출력 디렉터리 덮어쓰기(예: dist)."
    },
    "install_command": {
      "type": [
        "string",
        "null"
      ],
      "description": "설치 명령 덮어쓰기(한 줄)."
    },
    "dotenv": {
      "type": "string",
      "description": ".env 파일 내용. 프로덕션과 프리뷰 모두에 저장해요."
    },
    "sensitive": {
      "type": "boolean",
      "description": "dotenv의 값을 저장한 뒤 다시 보여주지 않아요."
    }
  },
  "required": [
    "ref",
    "repo"
  ],
  "additionalProperties": false
}

disconnect_repository 저장소 연결 해제

파괴적

저장소 연결을 해제해 푸시해도 배포하지 않아요. 서비스 중인 배포, 배포 기록, 빌드 설정, 환경 변수는 그대로이고 import_repository로 다시 연결돼요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTDELETE /projects/{ref}/git/repos/{name}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예list_git_access의 repositories[].name.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "list_git_access의 repositories[].name."
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

set_checks_on_server 검사를 One Server에서 실행

파괴적

연결한 GitHub 저장소의 GitHub Actions 검사를 One Server의 머신에서 실행하도록 켜거나 꺼요. 콘솔의 Git 연결 → [검사를 One Server에서 실행]과 같아요. 켜면 저장소 변수 POOL_RUNNER를 저장하고, 작업이 runs-on: ${{ vars.POOL_RUNNER || 'ubuntu-latest' }}를 쓰면 One Server에서 돌아요. 끄면 변수를 지워 GitHub의 머신으로 돌아가요. state가 needs_permission이면 permission_url에서 GitHub App의 새 권한을 승인하면 저절로 켜져요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/git/checks/{repo}/{repo}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
repostring예list_git_access의 repositories[].repo (owner/name).
enabledboolean예true면 켜고 false면 꺼요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "repo": {
      "type": "string",
      "description": "list_git_access의 repositories[].repo (owner/name)."
    },
    "enabled": {
      "type": "boolean",
      "description": "true면 켜고 false면 꺼요."
    }
  },
  "required": [
    "ref",
    "repo",
    "enabled"
  ],
  "additionalProperties": false
}

get_server_memory 서버 메모리

읽기 전용

서버 배포의 메모리(MB)·CPU 수, 요금제 최대값, 1GB·시간 요금과 한 달 금액이에요. 프로덕션과 브랜치 서버는 늘 켜져 있어(최소 1대) 그 금액이 서버 하나의 한 달 요금이에요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/server-memory

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_server_memory 서버 메모리 바꾸기

파괴적

서버 배포(Node 서버, 작업자)의 메모리를 512·1024·2048·4096MB 중에서 골라요(1024MB 넘으면 CPU 2개). 쓴 만큼 runtime_gb_hour로 사용량을 재요. 1분 안에 새 크기로 다시 시작해요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTPUT /projects/{ref}/server-memory

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
memory_mbinteger, 512 | 1024 | 2048 | 4096예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "memory_mb": {
      "type": "integer",
      "enum": [
        512,
        1024,
        2048,
        4096
      ]
    }
  },
  "required": [
    "ref",
    "memory_mb"
  ],
  "additionalProperties": false
}

get_concurrent_builds 동시 빌드

읽기 전용

이 프로젝트의 빌드가 한꺼번에 몇 개까지 도는지예요. null이면 빌더가 허락하는 만큼 돌아요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/concurrent-builds

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_concurrent_builds 동시 빌드 바꾸기

파괴적

이 프로젝트의 빌드가 한꺼번에 몇 개까지 돌지 1~20으로 정하거나, null로 한도를 없애요. 넘는 빌드는 대기열에서 기다리고, 기다리는 동안은 청구되지 않아요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/concurrent-builds

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
concurrent_buildsstring, min 1, max 20예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "concurrent_builds": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 1,
      "maximum": 20
    }
  },
  "required": [
    "ref",
    "concurrent_builds"
  ],
  "additionalProperties": false
}

list_gpu GPU 작업과 서버

읽기 전용

GPU 작업(최근 50개), 서버, 저장소, 장비별 시간 요금과 저장소 1GB·월 요금, 고를 수 있는 지역·데이터센터, 조직의 동시 GPU 한도와 지금 쓰는 수예요. 무료 요금제는 GPU를 못 써요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/gpu

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_gpu_job GPU 작업 만들기

파괴적

GPU를 빌려 공개 이미지에서 명령을 끝까지 실행해요. 끝나거나 max_minutes가 지나면 반납하고, 쓴 초만큼(이미지 받는 시간 포함) 청구해요. 결과는 바깥에 올려야 남아요. 이미지에 curl, wget, python3 중 하나가 필요해요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/gpu/jobs

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
gpustring, rtx4090 | l40s | a100 | h100예
imagestring예공개 이미지, 예: pytorch/pytorch:2.4.0-cuda12.1-cudnn9-runtime
commandstring예sh로 실행할 명령
namestring아니요
envobject아니요환경 변수. 암호화해 저장해요.
max_minutesinteger, min 1, max 10080아니요기본 60분
regionstring, auto | asia | us | eu아니요빌릴 지역. 기본 auto(빈 장비가 있는 곳 어디든). asia는 일본·인도예요. 저장소를 고르면 그 저장소의 데이터센터에서 빌려요.
volumestring아니요/workspace에 붙일 GPU 저장소 이름(create_gpu_volume으로 만든 것)
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "gpu": {
      "type": "string",
      "enum": [
        "rtx4090",
        "l40s",
        "a100",
        "h100"
      ]
    },
    "image": {
      "type": "string",
      "description": "공개 이미지, 예: pytorch/pytorch:2.4.0-cuda12.1-cudnn9-runtime"
    },
    "command": {
      "type": "string",
      "description": "sh로 실행할 명령"
    },
    "name": {
      "type": "string"
    },
    "env": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "환경 변수. 암호화해 저장해요."
    },
    "max_minutes": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10080,
      "description": "기본 60분"
    },
    "region": {
      "type": "string",
      "enum": [
        "auto",
        "asia",
        "us",
        "eu"
      ],
      "description": "빌릴 지역. 기본 auto(빈 장비가 있는 곳 어디든). asia는 일본·인도예요. 저장소를 고르면 그 저장소의 데이터센터에서 빌려요."
    },
    "volume": {
      "type": "string",
      "description": "/workspace에 붙일 GPU 저장소 이름(create_gpu_volume으로 만든 것)"
    }
  },
  "required": [
    "ref",
    "gpu",
    "image",
    "command"
  ],
  "additionalProperties": false
}

get_gpu_job GPU 작업 보기

읽기 전용

GPU 작업 하나의 상태, 쓴 시간과 금액, 종료 코드, 출력의 마지막 부분(최대 64KB)을 돌려줘요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/gpu/jobs/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

cancel_gpu_job GPU 작업 멈추기

파괴적

GPU 작업을 멈춰요. 아직 시작 전이면 시작하지 않고, 실행 중이면 GPU를 돌려줘요. 돌려줄 때까지 쓴 시간은 청구돼요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/gpu/jobs/{id}/cancel

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

create_gpu_server GPU 서버 만들기

파괴적

공개 이미지로 모델을 띄울 GPU 서버를 만들어요. https://<ref>.<zone>/gpu/v1/servers/<name>/ 에 secret 키로 부르면 꺼져 있을 땐 켜고(그동안 503) 요청을 넘겨요. idle_minutes 동안 요청이 없으면 꺼요(0은 계속 켬). 켜기 시작부터 꺼질 때까지(이미지 받기 포함) 초 단위로 청구해요. 서버는 x-oneend-gpu-token 헤더 값을 ONEEND_GPU_TOKEN으로 받아요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/gpu/servers

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예영문 소문자, 숫자, 하이픈
gpustring, rtx4090 | l40s | a100 | h100예
imagestring예공개 이미지, 예: vllm/vllm-openai:latest
commandstring아니요비우면 이미지의 기본 명령
envobject아니요
portinteger, min 1, max 65535아니요기본 8000
idle_minutesinteger, min 0, max 1440아니요기본 15분, 0은 계속 켜 둠
regionstring, auto | asia | us | eu아니요빌릴 지역. 기본 auto(빈 장비가 있는 곳 어디든). asia는 일본·인도예요. 저장소를 고르면 그 저장소의 데이터센터에서 빌려요.
volumestring아니요/workspace에 붙일 GPU 저장소 이름(create_gpu_volume으로 만든 것)
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "영문 소문자, 숫자, 하이픈"
    },
    "gpu": {
      "type": "string",
      "enum": [
        "rtx4090",
        "l40s",
        "a100",
        "h100"
      ]
    },
    "image": {
      "type": "string",
      "description": "공개 이미지, 예: vllm/vllm-openai:latest"
    },
    "command": {
      "type": "string",
      "description": "비우면 이미지의 기본 명령"
    },
    "env": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      }
    },
    "port": {
      "type": "integer",
      "minimum": 1,
      "maximum": 65535,
      "description": "기본 8000"
    },
    "idle_minutes": {
      "type": "integer",
      "minimum": 0,
      "maximum": 1440,
      "description": "기본 15분, 0은 계속 켜 둠"
    },
    "region": {
      "type": "string",
      "enum": [
        "auto",
        "asia",
        "us",
        "eu"
      ],
      "description": "빌릴 지역. 기본 auto(빈 장비가 있는 곳 어디든). asia는 일본·인도예요. 저장소를 고르면 그 저장소의 데이터센터에서 빌려요."
    },
    "volume": {
      "type": "string",
      "description": "/workspace에 붙일 GPU 저장소 이름(create_gpu_volume으로 만든 것)"
    }
  },
  "required": [
    "ref",
    "name",
    "gpu",
    "image"
  ],
  "additionalProperties": false
}

stop_gpu_server GPU 서버 멈추기

파괴적

GPU 서버를 지금 멈춰요. 꺼질 때까지 쓴 시간은 청구돼요. 다음 요청 때 다시 켜져요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/gpu/servers/{name}/stop

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

delete_gpu_server GPU 서버 지우기

파괴적

GPU 서버를 지워요. 켜져 있으면 먼저 멈춘 뒤 지워요. 되돌릴 수 없으니 confirm에 GPU 서버 이름을 그대로 넣어야 해요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/gpu/servers/{name}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예
confirmstring예GPU 서버 이름. name과 정확히 같아야 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string"
    },
    "confirm": {
      "type": "string",
      "description": "GPU 서버 이름. name과 정확히 같아야 해요."
    }
  },
  "required": [
    "ref",
    "name",
    "confirm"
  ],
  "additionalProperties": false
}

create_gpu_volume GPU 저장소 만들기

파괴적

모델·데이터를 남길 GPU 저장소를 한 데이터센터에 만들어요(작업·서버의 /workspace에 붙어요). 쓰지 않아도 1GB·월 요금이 청구되고, 이걸 쓰면 그 데이터센터에서만 GPU를 빌려요. 유료 요금제만 돼요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/gpu/volumes

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예영문 소문자, 숫자, 하이픈
size_gbinteger, min 10, max 4000아니요기본 50GB
datacenterstring예데이터센터, 예: AP-JP-1(일본). 고를 수 있는 목록은 list_gpu에 있어요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "영문 소문자, 숫자, 하이픈"
    },
    "size_gb": {
      "type": "integer",
      "minimum": 10,
      "maximum": 4000,
      "description": "기본 50GB"
    },
    "datacenter": {
      "type": "string",
      "description": "데이터센터, 예: AP-JP-1(일본). 고를 수 있는 목록은 list_gpu에 있어요."
    }
  },
  "required": [
    "ref",
    "name",
    "datacenter"
  ],
  "additionalProperties": false
}

delete_gpu_volume GPU 저장소 지우기

파괴적

GPU 저장소와 그 안의 파일을 모두 지워요. 쓰는 작업이나 서버가 있으면 지우지 않아요. 되돌릴 수 없어요. 지울 때까지의 저장 요금은 청구돼요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/gpu/volumes/{name}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

list_deleted_deployments 최근 삭제한 배포

읽기 전용

3일 안에 삭제된 배포(직접 삭제했거나 보관 기간이 지난 것)와 되돌릴 수 있는 마감(restorable_until)을 돌려줘요. 그동안 그 배포의 주소는 410으로 답해요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/deployments/deleted

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

delete_deployment 배포 삭제

파괴적

배포 하나를 삭제해요(서비스 중·빌드 중인 배포는 안 돼요). 3일 동안 restore_deployment로 되돌릴 수 있고, 그 뒤 파일과 빌드 로그를 지워요. 프로덕션은 프로젝트 관리자, 나머지는 개발자 이상이 해요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/deployments/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring, pattern ^dpl-[0-9a-f]{16}$예배포 id(dpl-…). list_deployments나 list_deleted_deployments로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "pattern": "^dpl-[0-9a-f]{16}$",
      "description": "배포 id(dpl-…). list_deployments나 list_deleted_deployments로 확인해요."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

restore_deployment 배포 되돌리기

파괴적

3일 안에 삭제된 배포를 되돌려요. 주소가 다시 응답하고 롤백·승격도 할 수 있어요. 프로덕션 배포는 프로젝트 관리자, 나머지는 개발자 이상이 할 수 있어요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/deployments/{id}/restore

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring, pattern ^dpl-[0-9a-f]{16}$예배포 id(dpl-…). list_deployments나 list_deleted_deployments로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "pattern": "^dpl-[0-9a-f]{16}$",
      "description": "배포 id(dpl-…). list_deployments나 list_deleted_deployments로 확인해요."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

list_volumes 볼륨 목록

읽기 전용

앱의 볼륨(서버를 다시 시작하거나 새로 배포해도 남는 디스크)과 백업, 요금제가 허용하는 합계(max_gb)와 지금 쓰는 양(used_gb), 앱마다 서버가 듣는 포트(apps[].listens_on)를 돌려줘요. 볼륨은 프로덕션 서버에만 붙어요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/volumes

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_volume 볼륨 만들기

추가만 함

앱의 프로덕션 서버 mount_path에 볼륨을 붙여요(WordPress는 /var/www/html). 크기가 상한이고 /etc·/usr 같은 시스템 경로는 안 돼요. 1분 안에 서버가 다시 시작해요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/volumes

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
appstring예list_apps의 name.
mount_pathstring예컨테이너 안의 절대 경로. 예: /var/www/html
size_gbinteger, min 1, max 500아니요크기(GB). 1부터 500까지, 기본 1.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "app": {
      "type": "string",
      "description": "list_apps의 name."
    },
    "mount_path": {
      "type": "string",
      "description": "컨테이너 안의 절대 경로. 예: /var/www/html"
    },
    "size_gb": {
      "type": "integer",
      "minimum": 1,
      "maximum": 500,
      "description": "크기(GB). 1부터 500까지, 기본 1."
    }
  },
  "required": [
    "ref",
    "app",
    "mount_path"
  ],
  "additionalProperties": false
}

resize_volume 볼륨 늘리기

파괴적

볼륨을 더 크게 해요. 서버를 멈추지 않고 늘리고, 줄일 수는 없어요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPATCH /projects/{ref}/volumes/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_volumes의 볼륨 id.
size_gbinteger, min 1, max 500예크기(GB). 1부터 500까지.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_volumes의 볼륨 id."
    },
    "size_gb": {
      "type": "integer",
      "minimum": 1,
      "maximum": 500,
      "description": "크기(GB). 1부터 500까지."
    }
  },
  "required": [
    "ref",
    "id",
    "size_gb"
  ],
  "additionalProperties": false
}

delete_volume 볼륨 지우기

파괴적

볼륨과 그 파일, 백업을 모두 지우고 프로덕션 서버를 볼륨 없이 다시 시작해요. 되돌릴 수 없으니 사용자가 요청할 때만 쓰고 confirm에 mount_path를 넣으세요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/volumes/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_volumes의 볼륨 id.
confirmstring예볼륨 경로. list_volumes의 mount_path와 정확히 같아야 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_volumes의 볼륨 id."
    },
    "confirm": {
      "type": "string",
      "description": "볼륨 경로. list_volumes의 mount_path와 정확히 같아야 해요."
    }
  },
  "required": [
    "ref",
    "id",
    "confirm"
  ],
  "additionalProperties": false
}

create_volume_backup 볼륨 백업

추가만 함

볼륨의 파일을 지금 묶어 30일 동안 보관해요. 몇 분 안에 끝나고, list_volumes의 backups에 나타나요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/volumes/{id}/backups

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_volumes의 볼륨 id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_volumes의 볼륨 id."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

restore_volume_backup 볼륨 복원

파괴적

볼륨의 지금 파일을 백업의 파일로 바꿔요. 백업 뒤에 바뀐 파일은 사라지지만, 바꾸기 전에 지금 파일을 7일 동안 백업해 두니 그 백업으로 되돌릴 수 있어요. 사용자가 요청했을 때만 쓰고, 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/volumes/{id}/restore

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_volumes의 볼륨 id.
backup_idstring예list_volumes의 backups[].id. status가 ready인 것.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_volumes의 볼륨 id."
    },
    "backup_id": {
      "type": "string",
      "description": "list_volumes의 backups[].id. status가 ready인 것."
    }
  },
  "required": [
    "ref",
    "id",
    "backup_id"
  ],
  "additionalProperties": false
}

함수

이름설명
list_functions함수 목록
get_function함수 코드 보기
deploy_function함수 배포
set_function_limits함수 시간 한도
remove_function함수 삭제
list_function_secrets함수 시크릿 목록
set_function_secrets함수 시크릿 저장
copy_function_secrets함수 시크릿 복사
delete_function_secret함수 시크릿 삭제
set_function_egress함수의 외부 요청

list_functions 함수 목록

읽기 전용

배포한 함수와 각 호출 주소, 공개 여부를 봐요. egress는 외부 요청이 켜졌는지, outbound_requests_per_minute은 함수·pg_net·HTTP 작업이 함께 쓰는 분당 외부 요청 한도예요(자기 API 호출은 세지 않아요).

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/functions

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

get_function 함수 코드 보기

읽기 전용

배포된 함수의 코드와 버전을 봐요. 고치기 전에 먼저 읽으세요. deploy_function이 "building"으로 답했으면 build.status(building·deployed·failed)와 build.error를 확인해요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/functions/{name}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

deploy_function 함수 배포

파괴적

함수 하나를 배포해요. 같은 이름이 있으면 통째로 바꾸고 다음 호출부터 새 코드가 돌아요. 코드는 TypeScript 파일 하나로, export default로 (request, { sql }) => 응답 을 내보내요. request에는 method, headers, claims(role: anon·authenticated·service_role, 키 없이 부른 공개 함수는 null), text(), json()이 있어요. sql(text, values)은 service_role 권한으로 한 문장을 실행해 행 배열을 돌려줘요. 응답은 객체(JSON), 문자열, { status, headers, body } 중 하나예요. npm 패키지는 dependencies({"zod":"^3.23.8"})나 package_json(문자열)으로 보내요. 배포할 때 설치해 ESM 파일 하나로 묶어요(5MB까지, 설치 스크립트 실행 안 함, 네이티브 모듈 불가). 40초 안에 안 끝나면 status "building"으로 답하고 이어서 배포해요: get_function으로 build.status가 deployed나 failed가 될 때까지 확인하세요. 여러 파일은 files({"lib/util.ts": "..."})로 보내고 상대 경로로 import해요. 폴더째 보내려면 source를 비우고 files에 index.ts까지 넣으세요. ../_shared/cors.ts 같은 옆 폴더 파일은 files에 "../_shared/cors.ts"로 넣어요. deno.json·import_map.json의 imports와 npm:·jsr:·URL import(npm:zod@3, https://esm.sh/…, https://deno.land/[email protected]/http/server.ts 등)도 돼요. 모두 배포할 때 받아 묶고(주소와 SHA-256은 get_function의 remote_imports, deno.lock이 있으면 맞아야 해요) 실행 중에는 받지 않아요. 호출 하나는 150초까지예요(set_function_limits로 바꿔요). 네트워크는 기본으로 꺼져 있어요(set_function_egress). 호출한 사람의 Authorization 헤더가 그대로 들어오니 createClient(url, anonKey, { global: { headers: { Authorization: req.headers.get('Authorization') } } })가 그 사람으로 동작해요. 번들된 함수를 고칠 때는 get_function의 package_json·files를 그대로 다시 보내세요. 빼면 파일 하나짜리가 돼요. 프로덕션 환경 변수가 process.env로 들어와요. 소유자·관리자만 배포할 수 있어요. 기본은 비공개라 이 프로젝트의 키(공개 키, 사용자 토큰, 비밀 키)가 있어야 해요(Supabase verify_jwt와 같아요). 로그인한 사용자만 받으려면 request.claims.role을 확인하세요. public이 true면 키 없이 누구나 부르니 결제사 웹훅 같은 경우에만 쓰세요. 호출: POST https://<ref>.<zone>/functions/v1/<name>, 헤더 Authorization: Bearer <공개 키, 사용자 토큰 또는 비밀 키>.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/functions/{name}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예영문 소문자로 시작, 소문자·숫자·하이픈. 호출 주소의 끝이 돼요.
sourcestring아니요함수 코드 전체 (8MB까지). files가 있으면 entry 파일로 저장돼요. files에 entry가 있으면 생략해요.
publicboolean아니요생략하면 기존 값을 유지하고, 새 함수는 비공개예요.
dependenciesobject아니요쓸 npm 패키지와 버전. 예: {"zod": "^3.23.8"}. package_json의 dependencies에 합쳐져요.
package_jsonstring아니요package.json 전체 (선택). 있으면 설치 후 하나의 파일로 번들해요.
package_lockstring아니요package-lock.json (선택). 있으면 npm ci로 정확히 그 버전을 설치해요.
filesobject아니요source 옆에 둘 다른 파일들, 상대 경로 → 내용 (최대 200개, 합쳐 8MB). 함수 폴더 옆 폴더는 "../_shared/cors.ts"처럼 써요.
entrystring아니요source를 저장할 파일 이름. 기본 index.ts.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "영문 소문자로 시작, 소문자·숫자·하이픈. 호출 주소의 끝이 돼요."
    },
    "source": {
      "type": "string",
      "description": "함수 코드 전체 (8MB까지). files가 있으면 entry 파일로 저장돼요. files에 entry가 있으면 생략해요."
    },
    "public": {
      "type": "boolean",
      "description": "생략하면 기존 값을 유지하고, 새 함수는 비공개예요."
    },
    "dependencies": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "쓸 npm 패키지와 버전. 예: {\"zod\": \"^3.23.8\"}. package_json의 dependencies에 합쳐져요."
    },
    "package_json": {
      "type": "string",
      "description": "package.json 전체 (선택). 있으면 설치 후 하나의 파일로 번들해요."
    },
    "package_lock": {
      "type": "string",
      "description": "package-lock.json (선택). 있으면 npm ci로 정확히 그 버전을 설치해요."
    },
    "files": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "source 옆에 둘 다른 파일들, 상대 경로 → 내용 (최대 200개, 합쳐 8MB). 함수 폴더 옆 폴더는 \"../_shared/cors.ts\"처럼 써요."
    },
    "entry": {
      "type": "string",
      "description": "source를 저장할 파일 이름. 기본 index.ts."
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

set_function_limits 함수 시간 한도

파괴적

호출 하나(timeout_seconds)와 SQL 한 문장(sql_timeout_seconds)의 시간 한도를 초로 정해요. 기본 150초·8초, 최대는 get_function의 timeout_cap_seconds예요. null은 기본값, 빼면 그대로예요. 넘긴 호출은 504로 끊겨요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPATCH /projects/{ref}/functions/{name}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예
timeout_secondsstring, min 1아니요한 번 호출에 쓸 수 있는 초. null이면 기본값(150초).
sql_timeout_secondsstring, min 1아니요SQL 한 문장에 쓸 수 있는 초. null이면 기본값(8초).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string"
    },
    "timeout_seconds": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 1,
      "description": "한 번 호출에 쓸 수 있는 초. null이면 기본값(150초)."
    },
    "sql_timeout_seconds": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 1,
      "description": "SQL 한 문장에 쓸 수 있는 초. null이면 기본값(8초)."
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

remove_function 함수 삭제

파괴적

함수를 지워요. 그 주소는 404가 되고, 이 함수를 부르는 예약 작업은 실패해요. 되돌릴 수 없으니 사용자가 분명히 요청했을 때만 쓰고, confirm에 함수 이름을 그대로 넣어야 해요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/functions/{name}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예
confirmstring예함수 이름. name과 정확히 같아야 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string"
    },
    "confirm": {
      "type": "string",
      "description": "함수 이름. name과 정확히 같아야 해요."
    }
  },
  "required": [
    "ref",
    "name",
    "confirm"
  ],
  "additionalProperties": false
}

list_function_secrets 함수 시크릿 목록

읽기 전용

함수만 보는 시크릿의 이름과 바꾼 때예요. 값은 어떤 도구로도 다시 읽을 수 없어요. readable이 false면 값이 열리지 않아 함수에 들어가지 않으니 다시 저장하세요. 소유자·관리자만 볼 수 있어요.

이름설명
토큰 범위read
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/function-secrets

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_function_secrets 함수 시크릿 저장

파괴적

함수만 읽는 시크릿을 저장해요(웹훅 서명 키 등). 빌드에는 안 들어가고 같은 이름의 환경 변수보다 먼저 쓰여요. 다음 호출부터 process.env로 읽어요. 하나라도 틀리면 아무것도 저장하지 않고, 저장한 값은 다시 못 봐요. SUPABASE_·BLACKWALL로 시작하는 이름과 NODE_ENV·HOME·PATH·NODE_OPTIONS·TZ는 못 써요. 프로젝트에 100개, 값 하나 32KB까지예요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/function-secrets

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
secretsobject아니요이름과 값. 예: {"STRIPE_WEBHOOK_SECRET": "whsec_…"}. 값은 다시 보여 주지 않아요.
dotenvstring아니요.env 파일 내용을 통째로. 주석과 빈 줄은 건너뛰어요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "secrets": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "이름과 값. 예: {\"STRIPE_WEBHOOK_SECRET\": \"whsec_…\"}. 값은 다시 보여 주지 않아요."
    },
    "dotenv": {
      "type": "string",
      "description": ".env 파일 내용을 통째로. 주석과 빈 줄은 건너뛰어요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

copy_function_secrets 함수 시크릿 복사

파괴적

내 다른 프로젝트(from)에 있는 함수 시크릿을 이 프로젝트(ref)로 이름만 대서 복사해요. 값은 서버 안에서만 옮겨지고 답에는 이름만 와요. 같은 키를 다시 붙여 넣지 않아도 돼요. 이 프로젝트에 이미 있는 이름은 건너뛰고(skipped) overwrite: true면 바꿔요. from에 없는 이름은 missing으로 알려 주고 나머지는 복사해요. 한 번에 50개까지예요. 두 프로젝트 모두에서 소유자·관리자여야 해요(조직이 달라도 돼요).

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/function-secrets/copy

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
fromstring예복사해 올 프로젝트의 ref. list_projects로 확인해요.
namesarray<string>, min items 1, max items 50예복사할 시크릿 이름. from 프로젝트의 list_function_secrets에 있는 name. 예: ["ANTHROPIC_API_KEY"]
overwriteboolean아니요이 프로젝트에 같은 이름이 있으면 바꿀지. 기본은 false(건너뜀).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "from": {
      "type": "string",
      "description": "복사해 올 프로젝트의 ref. list_projects로 확인해요."
    },
    "names": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "maxItems": 50,
      "description": "복사할 시크릿 이름. from 프로젝트의 list_function_secrets에 있는 name. 예: [\"ANTHROPIC_API_KEY\"]"
    },
    "overwrite": {
      "type": "boolean",
      "description": "이 프로젝트에 같은 이름이 있으면 바꿀지. 기본은 false(건너뜀)."
    }
  },
  "required": [
    "ref",
    "from",
    "names"
  ],
  "additionalProperties": false
}

delete_function_secret 함수 시크릿 삭제

파괴적

함수 시크릿 하나를 지워요. 값은 되살릴 수 없고, 함수는 다음 호출부터 이 값 없이 실행돼요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/function-secrets/{name}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예list_function_secrets의 name
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "list_function_secrets의 name"
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

set_function_egress 함수의 외부 요청

파괴적

함수 안에서 fetch()로 공개 HTTPS 주소를 부를 수 있게 하거나 막아요. 지금 상태는 list_functions의 egress예요. 30초 안에 적용돼요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTPUT /projects/{ref}/function-egress

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
enabledboolean예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "required": [
    "ref",
    "enabled"
  ],
  "additionalProperties": false
}

도메인과 엣지

이름설명
list_domains도메인 보기
add_domain도메인 연결
remove_domain도메인 연결 해제
set_domain_redirect도메인 리디렉트
get_edge방화벽·캐시 보기
set_edge방화벽 바꾸기
purge_edge_cache캐시 비우기
upload_certificate인증서 올리기
remove_certificate올린 인증서 삭제

list_domains 도메인 보기

읽기 전용

이 프로젝트에 연결한 도메인과 각각의 용도(site/api), 따르는 브랜치, 리디렉트 대상, 확인 상태(아직이면 넣어야 할 TXT 레코드), 인증서 상태를 봐요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/domains

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

add_domain 도메인 연결

추가만 함 외부로 나감

도메인을 연결해요. 받은 verification_record(TXT)를 DNS에 넣으면 몇 분 안에 확인돼요. target=api면 프로젝트 API로, branch를 주면 그 프리뷰로 답해요. *.example.com도 돼요. pair_www=true면 www도 연결해요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/domains

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
hostnamestring예예: example.com, api.example.com, *.example.com
targetstring, site | api아니요
branchstring아니요사이트만. 비우면 프로덕션.
pair_wwwboolean아니요
appstring아니요앱 이름(list_apps의 name). 비우면 프로젝트의 사이트(project_site가 true인 앱).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "hostname": {
      "type": "string",
      "description": "예: example.com, api.example.com, *.example.com"
    },
    "target": {
      "type": "string",
      "enum": [
        "site",
        "api"
      ]
    },
    "branch": {
      "type": "string",
      "description": "사이트만. 비우면 프로덕션."
    },
    "pair_www": {
      "type": "boolean"
    },
    "app": {
      "type": "string",
      "description": "앱 이름(list_apps의 name). 비우면 프로젝트의 사이트(project_site가 true인 앱)."
    }
  },
  "required": [
    "ref",
    "hostname"
  ],
  "additionalProperties": false
}

remove_domain 도메인 연결 해제

파괴적

도메인 연결을 끊어요. 그 주소는 몇 초 안에 더 이상 답하지 않아요. 사용자가 분명히 요청했을 때만 쓰고, confirm에 도메인을 그대로 넣어야 해요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/domains/{hostname}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
hostnamestring예
confirmstring예도메인. hostname과 같아야 해요(대소문자는 상관없어요).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "hostname": {
      "type": "string"
    },
    "confirm": {
      "type": "string",
      "description": "도메인. hostname과 같아야 해요(대소문자는 상관없어요)."
    }
  },
  "required": [
    "ref",
    "hostname",
    "confirm"
  ],
  "additionalProperties": false
}

set_domain_redirect 도메인 리디렉트

파괴적

이 도메인을 같은 프로젝트의 다른 도메인으로 넘기거나, to를 비워 다시 사이트를 열게 해요. to에 경로를 붙이면(example.com/vision) 방문한 경로가 그 뒤에 붙고 질의 문자열은 그대로 따라가요: vision.example.com/x?y=1 → example.com/vision/x?y=1, 첫 화면은 example.com/vision. to의 도메인은 이 프로젝트에 연결한, 리디렉트가 아닌 도메인이어야 해요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/domains/{hostname}/redirect

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
hostnamestring예넘길 도메인.
tostring아니요도메인 또는 도메인/경로(예: example.com/vision). 비우면 리디렉트를 꺼요.
statusinteger, 308 | 307 | 301 | 302아니요응답 코드. 기본 308(영구, 메서드 유지). 빼면 지금 값을 그대로 둬요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "hostname": {
      "type": "string",
      "description": "넘길 도메인."
    },
    "to": {
      "type": "string",
      "description": "도메인 또는 도메인/경로(예: example.com/vision). 비우면 리디렉트를 꺼요."
    },
    "status": {
      "type": "integer",
      "enum": [
        308,
        307,
        301,
        302
      ],
      "description": "응답 코드. 기본 308(영구, 메서드 유지). 빼면 지금 값을 그대로 둬요."
    }
  },
  "required": [
    "ref",
    "hostname"
  ],
  "additionalProperties": false
}

get_edge 방화벽·캐시 보기

읽기 전용

이 프로젝트의 IP 차단·허용 목록, 주소 하나당 분당 요청 한도, 적용 범위, 마지막 캐시 비우기 시각을 봐요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/edge

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_edge 방화벽 바꾸기

파괴적

IP 차단(deny)·허용(allow, 비우면 모두 허용) 목록과 분당 요청 한도(10~100000, null이면 플랫폼 기본값), 적용 범위(all/site/api)를 바꿔요. 준 항목만 바뀌어요. 소유자·관리자만.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/edge

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
denyarray<string>아니요IP 또는 CIDR
allowarray<string>아니요
rate_per_minutestring아니요
scopestring, all | site | api아니요
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "deny": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "IP 또는 CIDR"
    },
    "allow": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "rate_per_minute": {
      "type": [
        "integer",
        "null"
      ]
    },
    "scope": {
      "type": "string",
      "enum": [
        "all",
        "site",
        "api"
      ]
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

purge_edge_cache 캐시 비우기

파괴적

서버 배포가 s-maxage로 공유를 허락해 엣지에 저장된 응답을 모두 버려요. 다음 요청부터 배포가 다시 답해요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/edge/purge

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

upload_certificate 인증서 올리기

파괴적

연결한 도메인에 직접 가진 TLS 인증서를 써요. certificate는 PEM 체인(서버 인증서가 먼저), key는 PEM 개인 키. 도메인 이름이 인증서에 들어 있어야 해요. 1분 안에 적용돼요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/domains/{hostname}/certificate

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
hostnamestring예
certificatestring예
keystring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "hostname": {
      "type": "string"
    },
    "certificate": {
      "type": "string"
    },
    "key": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "hostname",
    "certificate",
    "key"
  ],
  "additionalProperties": false
}

remove_certificate 올린 인증서 삭제

파괴적

올린 인증서를 지우고 자동 발급 인증서로 돌아가요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/domains/{hostname}/certificate

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
hostnamestring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "hostname": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "hostname"
  ],
  "additionalProperties": false
}

네트워크

이름설명
get_network네트워크 주소
set_static_outbound_ip고정 아웃바운드 IP

get_network 네트워크 주소

읽기 전용

요청을 받는 주소(inbound, 커스텀 도메인 A 레코드)와, 고정 아웃바운드 IP를 켰다면 나가는 고정 주소(outbound.addresses)예요. 켜지 않았으면 나가는 주소는 공유라 돌려주지 않으니 허용 목록에 넣지 마세요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/network, GET /projects/{ref}/network/ips

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_static_outbound_ip 고정 아웃바운드 IP

파괴적

유료 부가 서비스인 고정 아웃바운드 IP를 켜거나 꺼요. 켜면 서버 배포, 함수 fetch(), 데이터베이스 웹훅이 고정 주소로 나가고 월 요금을 쓴 날만큼 청구해요. Pro 이상, 소유자·관리자·결제 담당자만 돼요. 요금이 드니 사용자가 요청할 때만 쓰세요. 가격·상태는 get_network에 있어요. outcome이 provisioning이면 주소를 만들고 있고(보통 1시간 안) 그 전엔 요금이 없어요.

이름설명
토큰 범위write
역할billing.manage 소유자·관리자·결제 담당
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/network/static-outbound-ip, DELETE /projects/{ref}/network/static-outbound-ip

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
enabledboolean예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "required": [
    "ref",
    "enabled"
  ],
  "additionalProperties": false
}

예약 작업

이름설명
list_jobs예약 작업 목록
save_job예약 작업 만들기·바꾸기
set_job_enabled예약 작업 켜기·끄기
run_job예약 작업 지금 실행
list_job_runs예약 작업 실행 기록
remove_job예약 작업 삭제

list_jobs 예약 작업 목록

읽기 전용

예약 작업(cron)과 일정, 다음 실행 시각, 마지막 결과를 봐요. SQL의 cron.schedule로 만든 작업은 source가 sql이에요. limit은 요금제의 작업 수 한도예요. 시각은 모두 UTC예요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/jobs

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

save_job 예약 작업 만들기·바꾸기

파괴적

정해진 일정마다 함수를 부르거나 SQL 한 문장을 실행해요. 같은 이름이면 그 작업을 바꿔요. schedule은 다섯 칸 cron(분 시 일 월 요일), UTC 기준이에요(한국 자정 = "0 15 * * *"). kind가 function이면 target은 함수 이름(본문 {}로 POST), sql이면 서비스 역할로 실행할 SQL이에요. 외부 URL은 못 불러요: 함수나 SQL의 net.http_post를 쓰세요. SQL은 timeout_seconds(기본 120초) 안에 끝나야 해요(statement_timeout을 늘리면 그만큼). 최대는 Free 300초, Pro·Enterprise 3600초예요. SQL의 cron.schedule로 만든 작업도 source=sql로 나와요. 프로젝트당 작업 수 한도는 list_jobs의 limit이에요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/jobs/{job}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예
schedulestring예예: "*/5 * * * *" (5분마다), "0 15 * * *" (한국 자정).
kindstring, function | sql예
targetstring예
enabledboolean아니요
timeout_secondsnumber아니요SQL 작업이 실행될 수 있는 최대 시간(초). 기본 120, 최대는 요금제마다(Free 300, Pro·Enterprise 3600).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string"
    },
    "schedule": {
      "type": "string",
      "description": "예: \"*/5 * * * *\" (5분마다), \"0 15 * * *\" (한국 자정)."
    },
    "kind": {
      "type": "string",
      "enum": [
        "function",
        "sql"
      ]
    },
    "target": {
      "type": "string"
    },
    "enabled": {
      "type": "boolean"
    },
    "timeout_seconds": {
      "type": "number",
      "description": "SQL 작업이 실행될 수 있는 최대 시간(초). 기본 120, 최대는 요금제마다(Free 300, Pro·Enterprise 3600)."
    }
  },
  "required": [
    "ref",
    "name",
    "schedule",
    "kind",
    "target"
  ],
  "additionalProperties": false
}

set_job_enabled 예약 작업 켜기·끄기

파괴적

예약 작업을 끄거나 다시 켜요. 다시 켜면 놓친 실행을 몰아서 하지 않고 다음 일정부터 돌아요. job은 id나 이름이에요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPATCH /projects/{ref}/jobs/{job}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
jobstring예
enabledboolean예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "job": {
      "type": "string"
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "required": [
    "ref",
    "job",
    "enabled"
  ],
  "additionalProperties": false
}

run_job 예약 작업 지금 실행

파괴적

일정을 기다리지 않고 1분 안에 한 번 실행해요. 결과는 list_job_runs로 봐요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/jobs/{job}/run

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
jobstring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "job": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "job"
  ],
  "additionalProperties": false
}

list_job_runs 예약 작업 실행 기록

읽기 전용

예약 작업의 최근 실행과 결과, 실패했다면 그 오류를 최신순으로 봐요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/jobs/{job}/runs

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
jobstring예
limitnumber아니요
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "job": {
      "type": "string"
    },
    "limit": {
      "type": "number"
    }
  },
  "required": [
    "ref",
    "job"
  ],
  "additionalProperties": false
}

remove_job 예약 작업 삭제

파괴적

예약 작업 하나와 그 실행 기록을 지워요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/jobs/{job}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
jobstring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "job": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "job"
  ],
  "additionalProperties": false
}

데이터베이스 웹훅

이름설명
list_db_webhooks데이터베이스 웹훅 목록
create_db_webhook데이터베이스 웹훅 만들기
set_db_webhook_enabled데이터베이스 웹훅 켜기·끄기
list_db_webhook_deliveries데이터베이스 웹훅 전달 기록
remove_db_webhook데이터베이스 웹훅 삭제

list_db_webhooks 데이터베이스 웹훅 목록

읽기 전용

표의 변경을 알리는 웹훅과 최근 전달 결과를 봐요. attached가 false면 표가 지워져 멈춘 것이에요. 서명 키(signing_secret)는 만들 때(create_db_webhook) 한 번만 보여주고, 목록에는 signing_secret_set과 끝 네 글자(signing_secret_last4)만 실어요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/webhooks

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_db_webhook 데이터베이스 웹훅 만들기

추가만 함 외부로 나감

표에 줄이 추가·수정·삭제되면 커밋 후 몇 초 안에 POST로 알려요. kind가 url이면 target은 공개 https 주소(사설 주소 불가, 리다이렉트 안 따라감), function이면 이 프로젝트의 함수 이름이에요. 본문: { type: "INSERT"|"UPDATE"|"DELETE", table, schema: "public", record, old_record, hook, delivery, occurred_at }. 서명 헤더: x-blackwall-signature: t=<초>,v1=<HMAC-SHA256(signing_secret, "<t>.<본문>") 16진수>. signing_secret은 이 응답에만 실려요. 다시 볼 수 없으니 받는 쪽에 바로 저장하세요. 실패(2xx 아님, 10초 초과)하면 10초·1분·5분·30분 뒤 다시 보내고 다섯 번째에 버려요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/webhooks

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예
tablestring예list_tables의 표 이름.
eventsarray<string>, insert | update | delete예
kindstring, url | function예
targetstring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string"
    },
    "table": {
      "type": "string",
      "description": "list_tables의 표 이름."
    },
    "events": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "insert",
          "update",
          "delete"
        ]
      }
    },
    "kind": {
      "type": "string",
      "enum": [
        "url",
        "function"
      ]
    },
    "target": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "name",
    "table",
    "events",
    "kind",
    "target"
  ],
  "additionalProperties": false
}

set_db_webhook_enabled 데이터베이스 웹훅 켜기·끄기

파괴적

웹훅을 끄거나 켜요. 꺼진 동안의 변경은 나중에도 보내지 않아요. webhook은 id나 이름이에요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPATCH /projects/{ref}/webhooks/{webhook}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
webhookstring예
enabledboolean예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "webhook": {
      "type": "string"
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "required": [
    "ref",
    "webhook",
    "enabled"
  ],
  "additionalProperties": false
}

list_db_webhook_deliveries 데이터베이스 웹훅 전달 기록

읽기 전용

웹훅의 최근 전달과 응답 상태, 실패 이유를 최신순으로 봐요. 7일간 보관해요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/webhooks/{webhook}/deliveries

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
webhookstring예
limitnumber아니요
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "webhook": {
      "type": "string"
    },
    "limit": {
      "type": "number"
    }
  },
  "required": [
    "ref",
    "webhook"
  ],
  "additionalProperties": false
}

remove_db_webhook 데이터베이스 웹훅 삭제

파괴적

웹훅과 그 전달 기록, 아직 보내지 못한 변경을 지워요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/webhooks/{webhook}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
webhookstring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "webhook": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "webhook"
  ],
  "additionalProperties": false
}

백업과 복원

이름설명
list_backups백업 목록
create_backup지금 백업
restore_backup백업으로 복원

list_backups 백업 목록

읽기 전용

프로젝트 백업(매일 밤 프로젝트 리전 시각 03:00~05:00에 자동, 직접 만든 것, 복원 직전 것)과 복원 기록을 봐요. 보관 기간은 retention_days예요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/backups

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_backup 지금 백업

추가만 함

표·가입자·파일을 지금 백업해요. 큰 변경(마이그레이션, 대량 삭제) 전에 만드세요. 7일 보관돼요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/backups

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

restore_backup 백업으로 복원

파괴적

표·가입자·파일을 백업 시점으로 되돌려요. backup_id 대신 at(ISO 시각)을 주면 초 단위로 되돌려요(Pro 이상, list_backups의 point_in_time 안. 파일은 파일 버킷 서버에서만, 지난 14일 안에 지운 것까지). 그 뒤 변경은 모두 사라지니 사용자가 요청할 때만 쓰세요. 직전 상태를 백업하니 undo_backup_id로 되돌릴 수 있어요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/backups/{backup_id}/restore, POST /projects/{ref}/backups/restore-to-time

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
backup_idstring아니요
atstring아니요예: 2026-10-01T14:59:00+09:00
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "backup_id": {
      "type": "string"
    },
    "at": {
      "type": "string",
      "description": "예: 2026-10-01T14:59:00+09:00"
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

로그와 관측

이름설명
get_logs로그 보기
list_log_drains로그 내보내기 목록
create_log_drain로그 내보내기 추가
set_log_drain_enabled로그 내보내기 끄기·켜기
remove_log_drain로그 내보내기 삭제
get_metrics지표
get_audit_log감사 기록

get_logs 로그 보기

읽기 전용

로그를 최신순으로 봐요: 사이트·API·인증·함수 요청(메서드, 경로, 상태, 시간)과 서버·함수 출력. 500이 나면 level: error로 먼저 보세요. 다음 쪽은 next_before를 before로 넘겨요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/logs

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
sourcestring, site | server | api | auth | functions | build아니요
levelstring, warn | error아니요warn은 경고와 오류, error는 오류만이에요.
searchstring아니요내용에 들어 있는 글자. 대소문자는 가리지 않아요.
beforestring아니요이 시각보다 오래된 줄만. 이전 응답의 next_before.
deployment_idstring아니요
limitinteger, min 1, max 500아니요기본 100.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "source": {
      "type": "string",
      "enum": [
        "site",
        "server",
        "api",
        "auth",
        "functions",
        "build"
      ]
    },
    "level": {
      "type": "string",
      "enum": [
        "warn",
        "error"
      ],
      "description": "warn은 경고와 오류, error는 오류만이에요."
    },
    "search": {
      "type": "string",
      "description": "내용에 들어 있는 글자. 대소문자는 가리지 않아요."
    },
    "before": {
      "type": "string",
      "description": "이 시각보다 오래된 줄만. 이전 응답의 next_before."
    },
    "deployment_id": {
      "type": "string"
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 500,
      "description": "기본 100."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

list_log_drains 로그 내보내기 목록

읽기 전용

로그를 보내는 곳(https 또는 datadog), 보내는 출처, 마지막 전송과 오류. 서명 키(signing_secret)는 만들 때(create_log_drain) 한 번만 보여주고, 목록에는 signing_secret_set과 소유자·관리자에게 끝 네 글자(signing_secret_last4)만 실어요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/log-drains

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_log_drain 로그 내보내기 추가

추가만 함 외부로 나감

이 프로젝트의 로그를 외부로 보내요. 만든 뒤에 쌓이는 로그부터 보내요. kind=https는 서명한 JSON을 POST하고, kind=datadog는 secret에 API 키가 필요해요. https 드레인의 signing_secret은 이 응답에만 실리니 받는 쪽에 바로 저장하세요. 프로젝트마다 5개까지. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/log-drains

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예
kindstring, https | datadog예
urlstring예공개된 https 주소.
secretstring아니요Datadog API 키, 또는 https로 보낼 때 Authorization 헤더에 넣을 값.
sourcesarray<string>, site | server | api | auth | functions | build아니요비우면 전부.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string"
    },
    "kind": {
      "type": "string",
      "enum": [
        "https",
        "datadog"
      ]
    },
    "url": {
      "type": "string",
      "description": "공개된 https 주소."
    },
    "secret": {
      "type": "string",
      "description": "Datadog API 키, 또는 https로 보낼 때 Authorization 헤더에 넣을 값."
    },
    "sources": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "site",
          "server",
          "api",
          "auth",
          "functions",
          "build"
        ]
      },
      "description": "비우면 전부."
    }
  },
  "required": [
    "ref",
    "name",
    "kind",
    "url"
  ],
  "additionalProperties": false
}

set_log_drain_enabled 로그 내보내기 끄기·켜기

파괴적

설정은 두고 보내기만 멈추거나 다시 시작해요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPATCH /projects/{ref}/log-drains/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예
enabledboolean예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string"
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "required": [
    "ref",
    "id",
    "enabled"
  ],
  "additionalProperties": false
}

remove_log_drain 로그 내보내기 삭제

파괴적

로그 내보내기를 지워요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/log-drains/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

get_metrics 지표

읽기 전용

요청 수·실패 수·지연(p50/p95/p99)을 표면별·시간대별로, 그리고 데이터베이스 크기·연결·캐시 적중률을 돌려줘요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/metrics

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
rangestring, 1h | 24h | 7d아니요비우면 24h.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "range": {
      "type": "string",
      "enum": [
        "1h",
        "24h",
        "7d"
      ],
      "description": "비우면 24h."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

get_audit_log 감사 기록

읽기 전용

tab=activity는 누가 무엇을 바꿨는지, tab=access는 누가 개인정보에 접근했는지예요. 최신순 200개씩, has_more면 offset을 늘려요. from·to는 YYYY-MM-DD(한국 날짜). 소유자·관리자만 돼요.

이름설명
토큰 범위read
역할audit.read 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/audit

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
tabstring, activity | access아니요
fromstring아니요
tostring아니요
actorstring아니요이메일 일부.
actionstring아니요이 말로 시작하는 동작. 예: member.
limitinteger, min 1, max 200아니요
offsetinteger, min 0아니요
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "tab": {
      "type": "string",
      "enum": [
        "activity",
        "access"
      ]
    },
    "from": {
      "type": "string"
    },
    "to": {
      "type": "string"
    },
    "actor": {
      "type": "string",
      "description": "이메일 일부."
    },
    "action": {
      "type": "string",
      "description": "이 말로 시작하는 동작. 예: member."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 200
    },
    "offset": {
      "type": "integer",
      "minimum": 0
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

팀과 알림

이름설명
list_team팀 구성원
invite_member구성원 초대
cancel_invitation초대 취소
set_member_role구성원 역할 바꾸기
remove_member구성원 내보내기
set_mfa_required2단계 인증 요구
list_channels알림 채널 목록
create_channel알림 채널 추가
test_channel알림 채널 시험
set_channel_enabled알림 채널 끄기·켜기
remove_channel알림 채널 삭제

list_team 팀 구성원

읽기 전용

이 프로젝트를 가진 조직의 구성원과 역할, 2단계 인증 여부, 아직 수락하지 않은 초대.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/team

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

invite_member 구성원 초대

추가만 함 외부로 나감

이메일로 초대 링크를 보내요. 받은 사람이 링크를 열어야 참여해요. 이미 구성원인 주소는 역할만 바뀌어요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할team.manage 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/team/invitations

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
emailstring예
rolestring, admin | developer | billing | viewer아니요비우면 developer.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "email": {
      "type": "string"
    },
    "role": {
      "type": "string",
      "enum": [
        "admin",
        "developer",
        "billing",
        "viewer"
      ],
      "description": "비우면 developer."
    }
  },
  "required": [
    "ref",
    "email"
  ],
  "additionalProperties": false
}

cancel_invitation 초대 취소

파괴적

보낸 초대를 취소해요. 그 링크는 바로 열리지 않게 돼요. id는 list_team의 invitations에 있어요.

이름설명
토큰 범위write
역할team.manage 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/team/invitations/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

set_member_role 구성원 역할 바꾸기

파괴적

이미 구성원인 사람의 역할을 바꿔요. 소유자의 역할은 바꿀 수 없어요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할team.manage 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTPATCH /projects/{ref}/team/members/{email}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
emailstring예
rolestring, admin | developer | billing | viewer예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "email": {
      "type": "string"
    },
    "role": {
      "type": "string",
      "enum": [
        "admin",
        "developer",
        "billing",
        "viewer"
      ]
    }
  },
  "required": [
    "ref",
    "email",
    "role"
  ],
  "additionalProperties": false
}

remove_member 구성원 내보내기

파괴적

조직에서 내보내요. 소유자는 내보낼 수 없어요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할team.manage 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/team/members/{email}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
emailstring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "email": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "email"
  ],
  "additionalProperties": false
}

set_mfa_required 2단계 인증 요구

파괴적

조직의 모든 구성원에게 2단계 인증을 요구하거나 그만둬요. 켜려면 이 토큰의 주인이 먼저 2단계 인증을 켜야 해요. 켜지 않은 구성원은 켤 때까지 이 조직을 열 수 없고 응답의 without_mfa에 나와요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할team.manage 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTPUT /projects/{ref}/team/mfa

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
requiredboolean예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "required": {
      "type": "boolean"
    }
  },
  "required": [
    "ref",
    "required"
  ],
  "additionalProperties": false
}

list_channels 알림 채널 목록

읽기 전용

배포·도메인·사용량·결제 소식을 받는 채널(Slack·카카오워크·웹훅)과 마지막 전송 결과예요(조직 단위). 웹훅 채널의 서명 키(signing_secret)는 만들 때(create_channel) 한 번만 보여주고, 목록에는 signing_secret_set과 끝 네 글자(signing_secret_last4)만 실어요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/channels

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_channel 알림 채널 추가

추가만 함 외부로 나감

Slack·카카오워크(웹훅 주소)·서명 웹훅·메일(emails에 1~10개)로 알림을 보내요. 메일은 확인 링크를 연 주소에만 보내요. notices를 비우면 모든 종류를 받아요. 웹훅 채널의 signing_secret은 이 응답에만 실리니 받는 쪽에 바로 저장하세요. 만든 뒤 test_channel로 확인하세요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할team.manage 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/channels

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
kindstring, slack | kakaowork | webhook | email예
namestring예
urlstring아니요Slack·카카오워크·웹훅의 주소. 메일 채널에는 쓰지 않아요.
emailsarray<string>, max items 10아니요메일 채널의 받는 주소. 예: ["[email protected]"].
noticesarray<string>, deployments | domains | usage | billing아니요
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "kind": {
      "type": "string",
      "enum": [
        "slack",
        "kakaowork",
        "webhook",
        "email"
      ]
    },
    "name": {
      "type": "string"
    },
    "url": {
      "type": "string",
      "description": "Slack·카카오워크·웹훅의 주소. 메일 채널에는 쓰지 않아요."
    },
    "emails": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 10,
      "description": "메일 채널의 받는 주소. 예: [\"[email protected]\"]."
    },
    "notices": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "deployments",
          "domains",
          "usage",
          "billing"
        ]
      }
    }
  },
  "required": [
    "ref",
    "kind",
    "name"
  ],
  "additionalProperties": false
}

test_channel 알림 채널 시험

추가만 함 외부로 나감

그 채널 하나에만 시험 메시지를 보내요. 메일 채널이면 확인된 주소에만 보내고, 확인을 기다리는 주소에는 확인 메일을 다시 보내요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할team.manage 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/channels/{id}/test

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

set_channel_enabled 알림 채널 끄기·켜기

파괴적

설정은 두고 알림만 멈추거나 다시 받아요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할team.manage 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPATCH /projects/{ref}/channels/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예
enabledboolean예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string"
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "required": [
    "ref",
    "id",
    "enabled"
  ],
  "additionalProperties": false
}

remove_channel 알림 채널 삭제

파괴적

알림 채널을 지워요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할team.manage 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/channels/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

요금과 사용량

이름설명
usage사용량
get_billing청구서와 사용량
get_plan요금제
get_spend_controls지출 한도
set_spend_cap지출 상한 켜기·끄기
set_spend_limit월 지출 한도

usage 사용량

읽기 전용

표·줄·가입자·파일 수와 저장 용량, 이번 달 사용량, 그리고 분당 한도(limits.outbound_requests_per_minute: 함수·pg_net·HTTP 작업이 함께 쓰는 외부 요청 수, 자기 API 호출은 세지 않음)를 돌려줘요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/usage

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

get_billing 청구서와 사용량

읽기 전용

한 달 청구서(항목별 사용량·포함량·금액)와 날짜별 사용량이에요. period를 비우면 이번 달(UTC). 금액은 currency의 가장 작은 단위예요(KRW는 원, USD는 센트). amount_minor·total_minor는 청구액, list_amount_minor·list_total_minor는 정가(Pro 기준)예요. included는 이번 달 실제로 쓴 요금제의 포함량(바꾼 날까지 날짜로 나눔), list_included는 Pro 포함량이에요. billing_exempt면 청구액이 0이에요. 카드·결제 내역은 콘솔에만 있어요. 소유자·관리자·결제 담당만 돼요.

이름설명
토큰 범위read
역할billing.manage 소유자·관리자·결제 담당
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/billing

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
periodstring아니요YYYY-MM
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "period": {
      "type": "string",
      "description": "YYYY-MM"
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

get_plan 요금제

읽기 전용

조직의 요금제, 예약된 변경, 고를 수 있는 요금제와 월 요금, 켜 둔 부가 서비스(addons)예요. 무료면 free에 한도와 Pro 전용 기능이 있어요. 요금제 변경은 콘솔에서만 돼요. 소유자·관리자·결제 담당만 돼요.

이름설명
토큰 범위read
역할billing.manage 소유자·관리자·결제 담당
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/billing/plan

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

get_spend_controls 지출 한도

읽기 전용

지출 상한(spend cap: 켜면 포함량을 넘는 사용을 막고 초과 요금을 받지 않음), 월 초과 요금 한도와 알림 웹훅, 이번 달 사용량을 봐요. 소유자·관리자·결제 담당만 볼 수 있어요.

이름설명
토큰 범위read
역할billing.manage 소유자·관리자·결제 담당
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/billing/spend

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_spend_cap 지출 상한 켜기·끄기

파괴적

유료 요금제의 지출 상한을 켜고 꺼요. 켜면 포함량에서 멈춰 초과 요금이 없어요. 끄면 넘는 만큼 청구되니 끌 때 confirm에 프로젝트 이름(list_projects의 name)이 필요해요. 소유자·관리자·결제 담당만 돼요.

이름설명
토큰 범위write
역할billing.manage 소유자·관리자·결제 담당
콘솔 도우미 확인항상 물어요
RESTPUT /projects/{ref}/billing/spend-cap

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
enabledboolean예true면 켜요.
confirmstring아니요끌 때(enabled: false)만: 프로젝트 이름. list_projects의 name과 정확히 같아야 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "enabled": {
      "type": "boolean",
      "description": "true면 켜요."
    },
    "confirm": {
      "type": "string",
      "description": "끌 때(enabled: false)만: 프로젝트 이름. list_projects의 name과 정확히 같아야 해요."
    }
  },
  "required": [
    "ref",
    "enabled"
  ],
  "additionalProperties": false
}

set_spend_limit 월 지출 한도

파괴적

지출 상한이 꺼졌을 때 한 달 초과 요금 한도(원 단위)와 알림 웹훅을 정해요. spend_limit_minor가 null이면 무제한, webhook_url을 빼면 그대로예요. 알림은 create_channel이 더 좋아요. 소유자·관리자·결제 담당만 돼요.

이름설명
토큰 범위write
역할billing.manage 소유자·관리자·결제 담당
콘솔 도우미 확인항상 물어요
RESTPUT /projects/{ref}/billing/spend-limit

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
spend_limit_minorstring, min 0예한도. null이면 없음.
webhook_urlstring아니요알림을 받을 https 주소. 빈 문자열이면 지워요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "spend_limit_minor": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 0,
      "description": "한도. null이면 없음."
    },
    "webhook_url": {
      "type": [
        "string",
        "null"
      ],
      "description": "알림을 받을 https 주소. 빈 문자열이면 지워요."
    }
  },
  "required": [
    "ref",
    "spend_limit_minor"
  ],
  "additionalProperties": false
}

기타

이름설명
list_s3_keysS3 접근 키 목록
create_s3_keyS3 접근 키 만들기
revoke_s3_keyS3 접근 키 폐기
deploy_commit커밋 지정 배포
deploy_files파일로 배포
set_function_public함수 공개 여부
add_sso_providerSAML SSO 추가
update_sso_providerSAML SSO 바꾸기
get_auth_config로그인 설정 전체 보기
update_auth_config로그인 설정 바꾸기
list_custom_providers사용자 정의 로그인 제공자 보기
create_custom_provider사용자 정의 로그인 제공자 만들기
update_custom_provider사용자 정의 로그인 제공자 수정
set_custom_provider_enabled사용자 정의 로그인 제공자 껐다 켜기
remove_custom_provider사용자 정의 로그인 제공자 삭제
list_third_party_auth서드파티 인증 보기
add_third_party_auth서드파티 인증 추가
remove_third_party_auth서드파티 인증 삭제
copy_auth_from_import로그인 설정 가져오기
copy_schema_from_project다른 프로젝트의 구조 복사
copy_data_from_project다른 프로젝트의 행 복사
move_domain도메인 옮기기
copy_users_from_project다른 프로젝트의 사용자 복사
compare_projects_data두 프로젝트의 데이터 비교
get_project_forward공개 함수 넘기기 보기
set_project_forward공개 함수 넘기기
get_project_write_lock쓰기 잠금 보기
set_project_write_lock쓰기 잠금
copy_functions_from_project다른 프로젝트의 함수 복사
set_vault_project_keys프로젝트 자기 주소·키를 Vault에 넣기
copy_vault_secrets_from_project다른 프로젝트의 Vault 비밀 복사
copy_jobs_from_project다른 프로젝트의 예약 작업 복사
copy_auth_from_project다른 프로젝트의 로그인 설정 복사
copy_storage_from_project다른 프로젝트의 파일 복사
copy_storage_from_import파일 가져오기
link_github_appGitHub 계정 연결
list_schemas프로젝트 스키마
set_exposed_schemas노출 스키마 정하기
get_data_api_settings데이터 API 설정 보기
set_data_api_settings데이터 API 설정 바꾸기
get_database_settings데이터베이스 연결 설정 보기
set_database_settings데이터베이스 연결 설정 바꾸기
list_branchesDB 브랜치 목록
create_branchDB 브랜치 만들기
merge_branchDB 브랜치 병합
reset_branchDB 브랜치 초기화
delete_branchDB 브랜치 삭제
set_branching자동 DB 브랜치 설정
list_queues대기열 목록
create_queue대기열 만들기
delete_queue대기열 삭제
purge_queue대기열 비우기
send_queue_message대기열에 메시지 넣기
peek_queue대기열 메시지 보기
set_queues_api대기열을 데이터 API로 열기
list_vault_secretsVault 비밀 목록
create_vault_secretVault 비밀 저장
update_vault_secretVault 비밀 바꾸기
delete_vault_secretVault 비밀 삭제
get_network_restrictionsDB 접속 제한 보기
update_network_restrictionsDB 접속 제한 바꾸기
list_transfer_targets옮길 수 있는 조직
transfer_project프로젝트 옮기기
get_analytics웹 분석
get_speed_insights속도 인사이트
set_insights분석 켜기·끄기
get_edge_config엣지 설정 읽기
set_edge_config엣지 설정 바꾸기
get_edge_config_history엣지 설정 변경 기록
get_rolling_releases점진적 배포 상태
set_rolling_releases점진적 배포 설정
advance_rolling_release점진적 배포 다음 단계로
promote_rolling_release점진적 배포 완료
abort_rolling_release점진적 배포 중단
list_kv_keysKV 키 목록
get_kvKV 값 읽기
set_kvKV 값 저장
delete_kvKV 키 삭제
get_ai_gatewayAI 게이트웨이
set_ai_gatewayAI 게이트웨이 설정
add_ai_providerAI 공급자 추가
set_ai_provider_enabledAI 공급자 끄기·켜기
remove_ai_providerAI 공급자 삭제
get_ai_gateway_logsAI 게이트웨이 호출 기록
get_middleware미들웨어 설정
set_middleware미들웨어 설정 바꾸기
set_ai_budgetsAI 게이트웨이 예산
list_ai_gateway_keysAI 게이트웨이 키 목록
create_ai_gateway_keyAI 게이트웨이 키 만들기
set_ai_gateway_key_budgetsAI 게이트웨이 키 예산
set_ai_gateway_key_limitsAI 게이트웨이 키 한도
set_ai_model_aliasesAI 모델 별칭
set_ai_gateway_hooksAI 게이트웨이 훅
revoke_ai_gateway_keyAI 게이트웨이 키 폐기
get_ai_spendAI 게이트웨이 지출
get_analytics_breakdown웹 분석 세부
set_analytics_previews프리뷰 방문 세기
export_analytics웹 분석 내보내기
list_analytics_reports맞춤 리포트 목록
get_analytics_report맞춤 리포트 보기
save_analytics_report맞춤 리포트 저장
remove_analytics_report맞춤 리포트 삭제
list_flags기능 플래그 목록
evaluate_flag기능 플래그 값 보기
set_flag_enabled기능 플래그 켜기·끄기
get_remote_cache원격 캐시
clear_remote_cache원격 캐시 비우기
get_queue_metrics큐 지표
list_edge_config_tokens엣지 설정 읽기 토큰
create_edge_config_token엣지 설정 읽기 토큰 만들기
connect_edge_config_token읽기 토큰을 프로젝트에 연결
disconnect_edge_config_token읽기 토큰 연결 끊기
revoke_edge_config_token읽기 토큰 폐기
get_deployment_retention배포 보관 기간
set_deployment_retention배포 보관 기간 바꾸기
set_protection_scope프리뷰 보호 범위
create_bypass_secret보호 우회 키 만들기
revoke_bypass_secret보호 우회 키 폐기
create_share_link공유 링크 만들기
revoke_share_link공유 링크 폐기
list_environments환경 목록
create_environment환경 만들기
update_environment환경 바꾸기
remove_environment환경 지우기
set_domain_environment도메인을 환경에 연결
get_flag기능 플래그 보기
create_flag기능 플래그 만들기
update_flag기능 플래그 바꾸기
set_flag_environment환경의 플래그 설정
add_flag_rule플래그 규칙 추가
move_flag_rule플래그 규칙 순서 바꾸기
remove_flag_rule플래그 규칙 삭제
set_flag_archived기능 플래그 보관
list_flag_segments플래그 세그먼트 목록
create_flag_segment플래그 세그먼트 만들기
update_flag_segment플래그 세그먼트 바꾸기
remove_flag_segment플래그 세그먼트 삭제
list_flag_sdk_keys플래그 SDK 키 목록
create_flag_sdk_key플래그 SDK 키 만들기
revoke_flag_sdk_key플래그 SDK 키 폐기
list_alert_rules경보 규칙 목록
create_alert_rule경보 규칙 만들기
set_alert_rule_enabled경보 규칙 켜기·끄기
remove_alert_rule경보 규칙 삭제
list_project_webhooks프로젝트 웹훅 목록
create_project_webhook프로젝트 웹훅 만들기
set_project_webhook_enabled프로젝트 웹훅 켜기·끄기
test_project_webhook프로젝트 웹훅 시험
list_project_webhook_deliveries프로젝트 웹훅 전달 기록
retry_project_webhook_delivery프로젝트 웹훅 다시 보내기
remove_project_webhook프로젝트 웹훅 삭제
get_firewall방화벽 규칙 보기
save_firewall_rule방화벽 규칙 저장
move_firewall_rule방화벽 규칙 순서 바꾸기
set_firewall_rule_enabled방화벽 규칙 켜기·끄기
remove_firewall_rule방화벽 규칙 삭제
set_firewall_managed봇·관리 규칙
publish_firewall방화벽 게시
reset_firewall_draft방화벽 초안 버리기
restore_firewall_version방화벽 이전 버전 불러오기
set_attack_mode공격 챌린지 모드
get_bulk_redirects대량 리디렉트 보기
upload_bulk_redirects대량 리디렉트 올리기
activate_bulk_redirects대량 리디렉트 적용
get_skew_protection스큐 보호 보기
set_skew_protection스큐 보호 바꾸기
list_remote_cache_tokens원격 캐시 토큰 목록
create_remote_cache_token원격 캐시 토큰 만들기
revoke_remote_cache_token원격 캐시 토큰 폐기
get_build_settings빌드 설정 더 보기
set_build_dev_settings개발 명령·Node.js 버전
set_ignored_build_step빌드 건너뛰기
set_production_first프로덕션 빌드 먼저
set_git_checks필요한 검사·Git LFS
set_expose_system_env시스템 환경 변수
set_directory_listing폴더 목록 보이기
get_deployment_security배포 보안 보기
set_deployment_security배포 보안 바꾸기
get_routing_rules라우팅 규칙 보기
save_routing_rules라우팅 규칙 저장
activate_routing_rules라우팅 규칙 버전 적용
purge_edge_cache_item캐시 일부 비우기
set_job_retention예약 작업 기록 보관 기간
get_storage_settings저장소 설정 보기
set_storage_settings저장소 설정 바꾸기
set_s3_enabledS3 주소 켜기·끄기
set_bucket_versioning버킷 버전 보관
list_object_versions파일 이전 버전 목록
restore_object_version파일 이전 버전으로 되돌리기
remove_object_version파일 이전 버전 영구 삭제
list_bucket_connections배포에 연결한 버킷
connect_bucket버킷을 배포에 연결
disconnect_bucket버킷 연결 끊기
list_storage_policies파일 접근 규칙 목록
create_storage_policy파일 접근 규칙 만들기
remove_storage_policy파일 접근 규칙 삭제
get_realtime_settings실시간 설정 보기
set_realtime_settings실시간 설정 바꾸기
list_realtime_policies비공개 채널 규칙 보기
create_realtime_messages_table비공개 채널 규칙 표 만들기
add_realtime_policy비공개 채널 규칙 더하기
get_passkey_settings패스키 설정 보기
set_passkey_settings패스키 설정 바꾸기
list_user_factors가입자의 2단계 인증·패스키 보기
remove_user_factors가입자의 2단계 인증 지우기
remove_user_passkey가입자의 패스키 지우기
list_oauth_appsOAuth 앱 목록
create_oauth_appOAuth 앱 만들기
reset_oauth_app_secretOAuth 앱 시크릿 새로 만들기
remove_oauth_appOAuth 앱 삭제
list_shared_env_vars공유 환경 변수 목록
create_shared_env_var공유 환경 변수 만들기
update_shared_env_var공유 환경 변수 바꾸기
remove_shared_env_var공유 환경 변수 삭제
list_access_groups접근 그룹 목록
create_access_group접근 그룹 만들기
update_access_group접근 그룹 바꾸기
remove_access_group접근 그룹 삭제
get_member_access구성원의 프로젝트 접근 보기
set_member_access구성원의 프로젝트 접근 바꾸기
list_audit_drains감사 기록 내보내기 목록
create_audit_drain감사 기록 내보내기 만들기
set_audit_drain_enabled감사 기록 내보내기 켜기·끄기
test_audit_drain감사 기록 내보내기 시험
remove_audit_drain감사 기록 내보내기 삭제
list_org_webhooks조직 웹훅 목록
create_org_webhook조직 웹훅 만들기
set_org_webhook_enabled조직 웹훅 켜기·끄기
test_org_webhook조직 웹훅 시험
list_org_webhook_deliveries조직 웹훅 전달 기록
retry_org_webhook_delivery조직 웹훅 다시 보내기
remove_org_webhook조직 웹훅 삭제
get_committer_settings외부 커미터 설정 보기
set_committer_policy외부 커미터 정책 바꾸기
trust_committer커미터 믿기
remove_trusted_committer믿는 커미터에서 빼기
answer_preview_approval기다리는 프리뷰에 답하기
get_org_sso조직 SSO 보기
set_org_sso조직 SSO 설정하기
remove_org_sso조직 SSO 지우기
add_org_sso_domain조직 SSO 도메인 더하기
verify_org_sso_domain조직 SSO 도메인 확인
remove_org_sso_domain조직 SSO 도메인 지우기
get_org_policies조직 배포 정책 보기
set_org_policies조직 배포 정책 바꾸기
set_preview_suffix프리뷰 도메인 정하기
verify_preview_suffix프리뷰 도메인 확인
remove_preview_suffix프리뷰 도메인 지우기
get_server전용 서버
request_server전용 서버 빌리기
resize_server서버 크기 바꾸기
set_standby대기 서버
move_server서버 위치 옮기기
release_server전용 서버 반납
set_restore_days되돌리기 기간
list_platform_settings플랫폼 설정 목록
set_platform_setting플랫폼 설정 저장
clear_platform_setting플랫폼 설정 지우기
list_platform_servers플랫폼 서버 목록
get_platform_cpu_history서비스 서버 CPU 기록
request_platform_server_change플랫폼 서버 변경 요청
get_platform_server_request플랫폼 서버 변경 요청 보기
cancel_platform_server_request플랫폼 서버 변경 요청 취소
list_github_variablesGitHub 저장소 변수 목록
set_github_variableGitHub 저장소 변수 저장
delete_github_variableGitHub 저장소 변수 지우기
list_platform_operators운영자 목록
add_platform_operator운영자 넣기
remove_platform_operator운영자 빼기
list_platform_runs플랫폼 워크플로 실행 목록
cancel_platform_run플랫폼 워크플로 실행 취소
rerun_platform_run플랫폼 워크플로 다시 실행
list_platform_checks플랫폼 검사 목록
set_merge_when_green통과하면 병합
get_ci_machines검사 기계
restart_ci_machine검사 기계 다시 켜기
renew_ci_registration검사 기계 다시 등록
set_up_build_cache_bucket빌드 캐시 버킷 준비
get_platform_overview플랫폼 전체 상황
find_customer고객 찾기
list_parking_hosts무료 서버
list_project_placements프로젝트 위치
get_platform_server_pricing고객 서버 크기와 가격
set_platform_server_pricing고객 서버 판매 스위치 바꾸기
set_platform_server_size고객 서버 크기 만들기·바꾸기
start_support_session지원 세션 열기
end_support_session지원 세션 끝내기
list_support_sessions지원 세션 목록

list_s3_keys S3 접근 키 목록

읽기 전용

S3 엔드포인트(endpoint, region, force_path_style)와 TUS 이어 올리기 주소, 그리고 S3 접근 키의 이름·접근 키 ID·마지막 사용 시각·폐기 여부예요. 비밀 접근 키는 돌려주지 않아요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/s3-keys

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_s3_key S3 접근 키 만들기

추가만 함

AWS SDK·aws CLI·rclone이 /storage/v1/s3에 쓸 접근 키를 만들어요. 접근 규칙을 무시하니 서버에만 두세요. 비밀 접근 키는 이 응답에서만 보여요. 소유자·관리자만, 프로젝트마다 20개까지예요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/s3-keys

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring, min length 1, max length 60예어디에 쓰는 키인지. 예: 백업 서버
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "description": "어디에 쓰는 키인지. 예: 백업 서버"
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

revoke_s3_key S3 접근 키 폐기

파괴적

S3 접근 키 하나를 폐기해요. 30초 안에 그 키로 서명한 요청이 거부돼요. 다른 키는 그대로예요. 되돌릴 수 없어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/s3-keys/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_s3_keys의 keys[].id
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_s3_keys의 keys[].id"
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

deploy_commit 커밋 지정 배포

파괴적 외부로 나감

저장소의 커밋 하나를 배포해요. 프로덕션 브랜치면 프로덕션, 아니면 프리뷰예요. 커밋은 40자리 전체 해시, app은 list_apps의 name이에요. 답에 주소와 보안 점검(advisors)이 와요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
appstring예
branchstring예
commitstring예40자리 커밋 해시.
waitinteger, min 0, max 120아니요빌드가 끝날(ready·error) 때까지 기다릴 초. 기본 0은 바로 답해요. 시간 안에 안 끝나면 still_running: true와 retry_after_seconds가 와요. MCP 클라이언트는 보통 60초쯤에 호출을 포기하니 45 정도가 안전해요.
block_on_advisorsboolean아니요true면 get_advisors의 심각한 보안 문제(advisors.critical)가 하나라도 있을 때 프로덕션 배포를 하지 않고 거절해요. 기본 false: 배포하고 advisors에 개수와 상위 3개를 알려줘요. 프리뷰는 막지 않아요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "app": {
      "type": "string"
    },
    "branch": {
      "type": "string"
    },
    "commit": {
      "type": "string",
      "description": "40자리 커밋 해시."
    },
    "wait": {
      "type": "integer",
      "minimum": 0,
      "maximum": 120,
      "description": "빌드가 끝날(ready·error) 때까지 기다릴 초. 기본 0은 바로 답해요. 시간 안에 안 끝나면 still_running: true와 retry_after_seconds가 와요. MCP 클라이언트는 보통 60초쯤에 호출을 포기하니 45 정도가 안전해요."
    },
    "block_on_advisors": {
      "type": "boolean",
      "description": "true면 get_advisors의 심각한 보안 문제(advisors.critical)가 하나라도 있을 때 프로덕션 배포를 하지 않고 거절해요. 기본 false: 배포하고 advisors에 개수와 상위 3개를 알려줘요. 프리뷰는 막지 않아요."
    }
  },
  "required": [
    "ref",
    "app",
    "branch",
    "commit"
  ],
  "additionalProperties": false
}

deploy_files 파일로 배포

파괴적

저장소 없이 파일을 보내 배포해요(Vercel 파일 배포와 같아요). files는 경로 → 텍스트, 바이너리는 files_base64에 base64로 넣고 합쳐 3MB까지예요. 더 크면 create_source_upload_url → deploy_source(50MB까지)를 쓰세요. push와 똑같이 빌드해요: package.json이 있으면 설치·빌드하고, index.html만 있으면 그대로 서비스해요. prebuilt가 true면 빌드 없이 그대로 서비스해요. target은 preview(기본)나 production(소유자·관리자만)이고, 프리뷰 주소는 branch(기본 preview)로 정해요. 앱이 없으면 site 앱이 생겨요. wait(초)를 주면 빌드가 끝날 때까지 기다려요. 아니면 get_deployment로 확인하세요. advisors.critical은 심각한 보안 문제 수예요(상위 3개는 advisors.top). block_on_advisors가 true면 그런 문제가 있을 때 프로덕션 배포를 거절해요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
filesobject아니요경로 → 텍스트 내용. 예: {"index.html": "<h1>안녕</h1>"}
files_base64object아니요경로 → base64 내용 (바이너리 파일).
targetstring, preview | production아니요기본 preview.
prebuiltboolean아니요true면 빌드하지 않고 그대로 서비스해요.
appstring아니요배포할 앱 (list_apps의 name). 앱이 하나면 생략해요.
branchstring아니요프리뷰의 이름. 프리뷰 주소가 돼요. 기본 preview.
messagestring아니요배포 목록에 남길 메모 (선택).
waitinteger, min 0, max 120아니요빌드가 끝날(ready·error) 때까지 기다릴 초. 기본 0은 바로 답해요. 시간 안에 안 끝나면 still_running: true와 retry_after_seconds가 와요. MCP 클라이언트는 보통 60초쯤에 호출을 포기하니 45 정도가 안전해요.
block_on_advisorsboolean아니요true면 get_advisors의 심각한 보안 문제(advisors.critical)가 하나라도 있을 때 프로덕션 배포를 하지 않고 거절해요. 기본 false: 배포하고 advisors에 개수와 상위 3개를 알려줘요. 프리뷰는 막지 않아요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "files": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "경로 → 텍스트 내용. 예: {\"index.html\": \"<h1>안녕</h1>\"}"
    },
    "files_base64": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "경로 → base64 내용 (바이너리 파일)."
    },
    "target": {
      "type": "string",
      "enum": [
        "preview",
        "production"
      ],
      "description": "기본 preview."
    },
    "prebuilt": {
      "type": "boolean",
      "description": "true면 빌드하지 않고 그대로 서비스해요."
    },
    "app": {
      "type": "string",
      "description": "배포할 앱 (list_apps의 name). 앱이 하나면 생략해요."
    },
    "branch": {
      "type": "string",
      "description": "프리뷰의 이름. 프리뷰 주소가 돼요. 기본 preview."
    },
    "message": {
      "type": "string",
      "description": "배포 목록에 남길 메모 (선택)."
    },
    "wait": {
      "type": "integer",
      "minimum": 0,
      "maximum": 120,
      "description": "빌드가 끝날(ready·error) 때까지 기다릴 초. 기본 0은 바로 답해요. 시간 안에 안 끝나면 still_running: true와 retry_after_seconds가 와요. MCP 클라이언트는 보통 60초쯤에 호출을 포기하니 45 정도가 안전해요."
    },
    "block_on_advisors": {
      "type": "boolean",
      "description": "true면 get_advisors의 심각한 보안 문제(advisors.critical)가 하나라도 있을 때 프로덕션 배포를 하지 않고 거절해요. 기본 false: 배포하고 advisors에 개수와 상위 3개를 알려줘요. 프리뷰는 막지 않아요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_function_public 함수 공개 여부

파괴적

다시 배포하지 않고 함수를 공개(키 없이 누구나 호출)하거나 비공개(이 프로젝트의 키가 있어야 호출: 공개 키·사용자 토큰·비밀 키)로 바꿔요. 다음 호출부터 적용돼요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예
publicboolean예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string"
    },
    "public": {
      "type": "boolean"
    }
  },
  "required": [
    "ref",
    "name",
    "public"
  ],
  "additionalProperties": false
}

add_sso_provider SAML SSO 추가

추가만 함 외부로 나감

IdP 메타데이터(https 주소나 XML)로 SAML IdP를 등록해요(HTTP-Redirect 로그인 주소와 서명 인증서 필요). domains의 이메일로 signInWithSSO를 부르면 이 IdP로 가요(도메인 하나에 IdP 하나). 새 IdP는 엔터프라이즈 요금제에서만 추가돼요(new_providers_allowed). 이미 등록한 IdP는 그대로 동작해요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/{param0}/{param1}, PUT /projects/{ref}/{param0}/{param1}/{param2}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
metadata_urlstring아니요https 주소. metadata_xml과 둘 중 하나.
metadata_xmlstring아니요
domainsarray<string>아니요예: ["example.com"]
attribute_mappingobject아니요GoTrue 형식: {"keys": {"email": {"name": "mail"}}}
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "metadata_url": {
      "type": "string",
      "description": "https 주소. metadata_xml과 둘 중 하나."
    },
    "metadata_xml": {
      "type": "string"
    },
    "domains": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "예: [\"example.com\"]"
    },
    "attribute_mapping": {
      "type": "object",
      "description": "GoTrue 형식: {\"keys\": {\"email\": {\"name\": \"mail\"}}}"
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

update_sso_provider SAML SSO 바꾸기

파괴적 외부로 나감

IdP 하나의 도메인, 메타데이터(인증서를 바꿨을 때), 속성 매핑을 바꿔요. 준 것만 바뀌어요. domains를 주면 그 목록으로 통째로 바뀌어요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_sso_providers의 id
metadata_urlstring아니요
metadata_xmlstring아니요
domainsarray<string>아니요
attribute_mappingobject아니요
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_sso_providers의 id"
    },
    "metadata_url": {
      "type": "string"
    },
    "metadata_xml": {
      "type": "string"
    },
    "domains": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "attribute_mapping": {
      "type": "object"
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

get_auth_config 로그인 설정 전체 보기

읽기 전용

로그인 설정 전체를 Supabase auth config와 같은 소문자 키로 돌려줘요: 가입(disable_signup, mailer_autoconfirm 등), 이메일·비밀번호 규칙, 전화·문자(sms_*), SAML(saml_*), Web3, 소셜 제공자별 external_<제공자>_*. 비밀 값은 ••••abcd처럼 뒤 네 자리만 오고, 그대로 update_auth_config에 돌려주면 바뀌지 않아요. callback_url은 제공자 콘솔에 붙여 넣을 주소예요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/config/auth

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

update_auth_config 로그인 설정 바꾸기

파괴적

준 키만 바꿔요(대문자 GoTrue 이름도 돼요). 콘솔 로그인 화면과 같은 규칙으로 확인해요: 켠 제공자는 필요한 값이 다 있어야 하고(예: external_google_client_id), Apple 시크릿은 7일 넘게 남은 ES256 JWT, 문자 내용엔 {{ .Code }}가 있어야 해요. 하나라도 틀리면 아무것도 저장하지 않고 키마다 이유를 줘요. 카카오 동의 항목은 external_kakao_scopes(쉼표로), 네이버는 external_naver_scopes, Google·GitHub 추가 스코프는 external_<제공자>_additional_scopes예요. 비밀 값을 빈 문자열로 주면 지워요. 소유자·관리자·개발자만 돼요.

이름설명
토큰 범위write
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTPATCH /projects/{ref}/config/auth

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
configobject예바꿀 키와 값. 예: {"external_google_enabled": true, "external_google_client_id": "web.apps.googleusercontent.com"}
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "config": {
      "type": "object",
      "description": "바꿀 키와 값. 예: {\"external_google_enabled\": true, \"external_google_client_id\": \"web.apps.googleusercontent.com\"}",
      "additionalProperties": true
    }
  },
  "required": [
    "ref",
    "config"
  ],
  "additionalProperties": false
}

list_custom_providers 사용자 정의 로그인 제공자 보기

읽기 전용

프로젝트가 직접 정의한 OAuth·OIDC 제공자(custom:<ID>)와 요금제 한도(max_providers), 스위치(enabled)를 봐요. 앱에서는 signInWithOAuth({ provider: "custom:<ID>" })로 불러요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/config/auth/custom-providers

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_custom_provider 사용자 정의 로그인 제공자 만들기

추가만 함

OAuth·OIDC 제공자(custom:<ID>)를 만들고 켜요(set_auth_provider와 같은 저장소). oidc는 issuer만 주면 {issuer}/.well-known/openid-configuration에서 주소와 jwks_uri를 읽고, id_token의 서명·issuer·대상·만료·nonce를 확인해요. oauth2는 issuer나 authorization_url·token_url이 필요하고, 빈 주소는 {issuer}/oauth/authorize, /oauth/token, /oauth/userinfo예요. claim_map은 id·email·email_verified·name·avatar·phone이 응답의 어느 필드인지(점 경로)예요. PKCE는 기본으로 켜져요. 요금제 한도를 넘으면 거부돼요.

이름설명
토큰 범위write
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/config/auth/custom-providers

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
identifierstring예영문 소문자·숫자·하이픈. custom: 은 붙여도 되고 안 붙여도 돼요.
namestring예
provider_typestring, oidc | oauth2예
issuerstring아니요
discovery_urlstring아니요
authorization_urlstring아니요
token_urlstring아니요
userinfo_urlstring아니요
jwks_uristring아니요
client_idstring예
client_secretstring예
scopesarray<string>아니요
email_optionalboolean아니요
claim_mapobject아니요
token_authstring, body | basic아니요
pkceboolean아니요
enabledboolean아니요
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "identifier": {
      "type": "string",
      "description": "영문 소문자·숫자·하이픈. custom: 은 붙여도 되고 안 붙여도 돼요."
    },
    "name": {
      "type": "string"
    },
    "provider_type": {
      "type": "string",
      "enum": [
        "oidc",
        "oauth2"
      ]
    },
    "issuer": {
      "type": "string"
    },
    "discovery_url": {
      "type": "string"
    },
    "authorization_url": {
      "type": "string"
    },
    "token_url": {
      "type": "string"
    },
    "userinfo_url": {
      "type": "string"
    },
    "jwks_uri": {
      "type": "string"
    },
    "client_id": {
      "type": "string"
    },
    "client_secret": {
      "type": "string"
    },
    "scopes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "email_optional": {
      "type": "boolean"
    },
    "claim_map": {
      "type": "object",
      "additionalProperties": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        ]
      }
    },
    "token_auth": {
      "type": "string",
      "enum": [
        "body",
        "basic"
      ]
    },
    "pkce": {
      "type": "boolean"
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "required": [
    "ref",
    "identifier",
    "name",
    "provider_type",
    "client_id",
    "client_secret"
  ],
  "additionalProperties": false
}

update_custom_provider 사용자 정의 로그인 제공자 수정

파괴적

사용자 정의 제공자 하나를 고쳐요. ID는 바꿀 수 없어요. client_secret을 빈 문자열로 두면 저장된 시크릿을 그대로 써요.

이름설명
토큰 범위write
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/config/auth/custom-providers/{identifier}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
identifierstring예list_custom_providers의 identifier
namestring예
provider_typestring, oidc | oauth2예
issuerstring아니요
discovery_urlstring아니요
authorization_urlstring아니요
token_urlstring아니요
userinfo_urlstring아니요
jwks_uristring아니요
client_idstring예
client_secretstring아니요
scopesarray<string>아니요
email_optionalboolean아니요
claim_mapobject아니요
token_authstring, body | basic아니요
pkceboolean아니요
enabledboolean아니요
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "identifier": {
      "type": "string",
      "description": "list_custom_providers의 identifier"
    },
    "name": {
      "type": "string"
    },
    "provider_type": {
      "type": "string",
      "enum": [
        "oidc",
        "oauth2"
      ]
    },
    "issuer": {
      "type": "string"
    },
    "discovery_url": {
      "type": "string"
    },
    "authorization_url": {
      "type": "string"
    },
    "token_url": {
      "type": "string"
    },
    "userinfo_url": {
      "type": "string"
    },
    "jwks_uri": {
      "type": "string"
    },
    "client_id": {
      "type": "string"
    },
    "client_secret": {
      "type": "string"
    },
    "scopes": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "email_optional": {
      "type": "boolean"
    },
    "claim_map": {
      "type": "object",
      "additionalProperties": {
        "anyOf": [
          {
            "type": "string"
          },
          {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        ]
      }
    },
    "token_auth": {
      "type": "string",
      "enum": [
        "body",
        "basic"
      ]
    },
    "pkce": {
      "type": "boolean"
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "required": [
    "ref",
    "identifier",
    "name",
    "provider_type",
    "client_id"
  ],
  "additionalProperties": false
}

set_custom_provider_enabled 사용자 정의 로그인 제공자 껐다 켜기

파괴적

사용자 정의 제공자 하나를 끄거나 켜요. 끄면 지금 세션은 그대로지만 새 로그인은 다시 켤 때까지 실패해요.

이름설명
토큰 범위write
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTPATCH /projects/{ref}/config/auth/custom-providers/{identifier}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
identifierstring예
enabledboolean예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "identifier": {
      "type": "string"
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "required": [
    "ref",
    "identifier",
    "enabled"
  ],
  "additionalProperties": false
}

remove_custom_provider 사용자 정의 로그인 제공자 삭제

파괴적

사용자 정의 제공자 하나를 지워요. 되돌릴 수 없고, 이 제공자로 로그인하던 사용자는 들어올 수 없어요.

이름설명
토큰 범위write
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/config/auth/custom-providers/{identifier}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
identifierstring예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "identifier": {
      "type": "string"
    }
  },
  "required": [
    "ref",
    "identifier"
  ],
  "additionalProperties": false
}

list_third_party_auth 서드파티 인증 보기

읽기 전용

Data API가 받는 다른 인증 서비스(Firebase, Clerk, WorkOS, Auth0, Amazon Cognito, OIDC issuer)의 토큰 목록이에요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/config/auth/third-party-auth

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

add_third_party_auth 서드파티 인증 추가

추가만 함

다른 인증 서비스의 JWT로 로그인하게 해요. value는 type마다 달라요: firebase는 프로젝트 ID, clerk는 https://clerk.<도메인>이나 https://<이름>.clerk.accounts.dev, workos·oidc는 issuer URL, auth0은 테넌트 이름(<이름>.auth0.com의 앞부분), cognito는 사용자 풀 ID(region도 함께). Auth0·Cognito는 audiences도 넣으세요.

이름설명
토큰 범위write
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/config/auth/third-party-auth

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
typestring, firebase | clerk | workos | auth0 | cognito | oidc예
valuestring예
regionstring아니요cognito의 AWS 리전. 예: ap-northeast-2
audiencesarray<string>아니요
jwks_urlstring아니요oidc에서 디스커버리 대신 쓸 JWKS 주소
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "type": {
      "type": "string",
      "enum": [
        "firebase",
        "clerk",
        "workos",
        "auth0",
        "cognito",
        "oidc"
      ]
    },
    "value": {
      "type": "string"
    },
    "region": {
      "type": "string",
      "description": "cognito의 AWS 리전. 예: ap-northeast-2"
    },
    "audiences": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "jwks_url": {
      "type": "string",
      "description": "oidc에서 디스커버리 대신 쓸 JWKS 주소"
    }
  },
  "required": [
    "ref",
    "type",
    "value"
  ],
  "additionalProperties": false
}

remove_third_party_auth 서드파티 인증 삭제

파괴적

서드파티 인증 하나를 지워요. 그 서비스로 로그인한 사용자의 요청은 30초 안에 401로 거부돼요.

이름설명
토큰 범위write
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/config/auth/third-party-auth/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_third_party_auth의 id
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_third_party_auth의 id"
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

copy_auth_from_import 로그인 설정 가져오기

파괴적 외부로 나감

import_sources에 연결한 Supabase 계정으로 그 프로젝트의 로그인 설정을 이 서버의 프로젝트(ref)에 복사해요: 켜 둔 소셜 제공자(Client ID·시크릿 등, update_auth_config와 같은 확인), 돌아갈 주소 목록(uri_allow_list, add_redirect_url과 같아요), 비어 있을 때만 site_url. 시크릿은 대화에 나오지 않아요. 답은 제공자마다 copied와 이유예요. 답의 callback_url을 각 제공자 콘솔에 등록하기 전에는 로그인이 실패해요. dry_run이면 아무것도 바꾸지 않고 보여만 줘요. 소유자·관리자·개발자만 돼요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/config/auth/copy-from-import

입력

이름형식필수설명
orgstring아니요조직의 id나 이름. 비우면 ref 프로젝트의 조직.
connectionstring예Supabase 계정(import_sources의 connection, source가 supabase).
projectstring예Supabase 프로젝트 ref(import_sources의 projects[].id).
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
providersarray<string>아니요복사할 제공자(google, kakao, apple, x…). 비우면 Supabase에서 켜 둔 것 모두.
dry_runboolean아니요true면 바꾸지 않고 무엇을 복사할지만 보여줘요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "org": {
      "type": "string",
      "description": "조직의 id나 이름. 비우면 ref 프로젝트의 조직."
    },
    "connection": {
      "type": "string",
      "description": "Supabase 계정(import_sources의 connection, source가 supabase)."
    },
    "project": {
      "type": "string",
      "description": "Supabase 프로젝트 ref(import_sources의 projects[].id)."
    },
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "providers": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "복사할 제공자(google, kakao, apple, x…). 비우면 Supabase에서 켜 둔 것 모두."
    },
    "dry_run": {
      "type": "boolean",
      "description": "true면 바꾸지 않고 무엇을 복사할지만 보여줘요."
    }
  },
  "required": [
    "connection",
    "project",
    "ref"
  ],
  "additionalProperties": false
}

copy_schema_from_project 다른 프로젝트의 구조 복사

파괴적

같은 계정의 다른 프로젝트(from)의 표와 구조(타입, 시퀀스, 제약, 외래 키, 인덱스, 함수, 뷰, 트리거, RLS, 정책)를 이 프로젝트(ref)에 만들어요. 데이터 스키마(public)와 프로젝트가 만든 스키마(allfic 같은) 각각이에요. 문장 하나씩 실행하고, 다른 것이 먼저 있어야 만들어지는 것(함수를 부르는 생성 열, 뷰 위의 뷰)은 뒤에 다시 시도해요. 이미 있는 것은 건너뛰고 아무것도 지우거나 바꾸지 않으니 실패하면 원인을 고치고 다시 불러도 돼요. 행은 옮기지 않고(copy_data_from_project), 권한과 확장은 따로 정해요. 원래 프로젝트 이름이 든 SQL은 이 프로젝트 것으로 바꿔요. dry_run이면 만들 개수만 보여줘요. 두 프로젝트 모두 소유자·관리자여야 해요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
fromstring예복사해 올 프로젝트의 ref(list_projects). ref와 달라야 해요.
schemasarray<string>아니요복사할 스키마(public, allfic …). 비우면 모두.
dry_runboolean아니요true면 만들지 않고 종류별 개수만 보여줘요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "from": {
      "type": "string",
      "description": "복사해 올 프로젝트의 ref(list_projects). ref와 달라야 해요."
    },
    "schemas": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "복사할 스키마(public, allfic …). 비우면 모두."
    },
    "dry_run": {
      "type": "boolean",
      "description": "true면 만들지 않고 종류별 개수만 보여줘요."
    }
  },
  "required": [
    "ref",
    "from"
  ],
  "additionalProperties": false
}

copy_data_from_project 다른 프로젝트의 행 복사

파괴적

같은 계정의 다른 프로젝트(from)의 표 행을 이 프로젝트(ref)의 같은 표로 서버 안에서 복사해요. 표는 copy_schema_from_project로 먼저 만들어 두세요. 외래 키가 허용하는 순서로, 기본 키 순서대로 나눠서 옮기고 지연 키가 있는 표도 막히지 않아요. mode가 missing(기본)이면 없는 행만 더하고 있는 행은 그대로 둬요. upsert면 값이 다른 행도 원본 값으로 맞춰요. 전환 직전에 변경분만 다시 맞출 때 써요. 원본에서 지운 행은 지우지 않아요. 기본 키가 없는 표는 비어 있을 때만 복사해요. 시간이 40초를 넘으면 멈추고 next를 줘요. 그 값을 넘겨 다시 부르면 이어서 해요. 시퀀스는 복사한 최대 값 뒤로 맞춰요. dry_run이면 읽기만 하고 쓰지 않아요. 맞는지는 compare_projects_data로 확인해요. 두 프로젝트 모두 소유자·관리자여야 해요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
fromstring예복사해 올 프로젝트의 ref(list_projects). ref와 달라야 해요.
schemasarray<string>아니요복사할 스키마(public, allfic …). 비우면 모두.
tablesarray<string>아니요복사할 표(allfic.profiles 또는 notes). 비우면 모두.
modestring, missing | upsert아니요missing은 없는 행만, upsert는 다른 행도 원본 값으로.
dry_runboolean아니요true면 쓰지 않고 읽기만 해요.
nextstring아니요앞의 답에 있던 next. 이어서 할 때만.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "from": {
      "type": "string",
      "description": "복사해 올 프로젝트의 ref(list_projects). ref와 달라야 해요."
    },
    "schemas": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "복사할 스키마(public, allfic …). 비우면 모두."
    },
    "tables": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "복사할 표(allfic.profiles 또는 notes). 비우면 모두."
    },
    "mode": {
      "type": "string",
      "enum": [
        "missing",
        "upsert"
      ],
      "description": "missing은 없는 행만, upsert는 다른 행도 원본 값으로."
    },
    "dry_run": {
      "type": "boolean",
      "description": "true면 쓰지 않고 읽기만 해요."
    },
    "next": {
      "type": "string",
      "description": "앞의 답에 있던 next. 이어서 할 때만."
    }
  },
  "required": [
    "ref",
    "from"
  ],
  "additionalProperties": false
}

move_domain 도메인 옮기기

파괴적

같은 조직의 다른 프로젝트(to)로 도메인(hostnames)을 소유 확인과 인증서 그대로 옮겨요. 프로젝트를 나눈 뒤 사이트 도메인을 새 프로젝트가 받게 할 때 써요. remove_domain 뒤 add_domain을 하면 DNS에 TXT 레코드를 새로 넣어야 하고 그동안 사이트가 끊기지만, 이건 둘 다 필요 없어요. 소유 확인이 끝난 도메인만 옮기고, 브랜치 미리보기에 연결된 도메인은 옮기지 않아요. 같이 쓰는 www 도메인은 함께 적어요. 옮기지 않고 남는 도메인이 옮긴 도메인으로 넘기고 있었다면 그 넘기기는 꺼지고 답에 나와요. app은 받는 프로젝트의 앱 이름(비우면 그 프로젝트의 사이트). 두 프로젝트 모두 소유자·관리자여야 해요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
tostring예받는 프로젝트의 ref(list_projects). 같은 조직이어야 하고 ref와 달라야 해요.
hostnamesarray<string>예옮길 도메인(allfic.io, www.allfic.io …).
appstring아니요받는 프로젝트에서 이 도메인이 보여 줄 앱 이름(list_apps). 비우면 그 프로젝트의 사이트.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "to": {
      "type": "string",
      "description": "받는 프로젝트의 ref(list_projects). 같은 조직이어야 하고 ref와 달라야 해요."
    },
    "hostnames": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "옮길 도메인(allfic.io, www.allfic.io …)."
    },
    "app": {
      "type": "string",
      "description": "받는 프로젝트에서 이 도메인이 보여 줄 앱 이름(list_apps). 비우면 그 프로젝트의 사이트."
    }
  },
  "required": [
    "ref",
    "to",
    "hostnames"
  ],
  "additionalProperties": false
}

copy_users_from_project 다른 프로젝트의 사용자 복사

파괴적

같은 계정의 다른 프로젝트(from)의 로그인 사용자(계정과 소셜 로그인 연결, 비밀번호는 저장된 해시 그대로)를 이 프로젝트(ref)로 서버 안에서 복사해요. referenced_by_schemas를 주면 그 스키마의 표가 사용자를 가리키는(auth.users로의 외래 키) 사용자만 옮겨요. 로그인 서버를 둘이 같이 쓰던 프로젝트를 나눌 때 원래 프로젝트의 다른 사용자까지 딸려 오지 않게 해요. 이미 있는 계정(같은 id·이메일·제공자 계정)은 그대로 두고, 해시와 토큰은 답에 나오지 않아요. dry_run이면 옮길 수만 보여줘요. 제공자 설정은 copy_auth_from_project로 옮겨요. 두 프로젝트 모두 소유자·관리자여야 해요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
fromstring예복사해 올 프로젝트의 ref(list_projects). ref와 달라야 해요.
referenced_by_schemasarray<string>아니요이 스키마의 표가 가리키는 사용자만(public, allfic …). 비우면 모든 사용자.
dry_runboolean아니요true면 바꾸지 않고 옮길 수만 보여줘요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "from": {
      "type": "string",
      "description": "복사해 올 프로젝트의 ref(list_projects). ref와 달라야 해요."
    },
    "referenced_by_schemas": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "이 스키마의 표가 가리키는 사용자만(public, allfic …). 비우면 모든 사용자."
    },
    "dry_run": {
      "type": "boolean",
      "description": "true면 바꾸지 않고 옮길 수만 보여줘요."
    }
  },
  "required": [
    "ref",
    "from"
  ],
  "additionalProperties": false
}

compare_projects_data 두 프로젝트의 데이터 비교

읽기 전용

두 프로젝트(ref, with)의 표를 서버 안에서 나란히 놓고 같은지 봐요. 표마다 행 수와, hash가 꺼져 있지 않으면 모든 행의 MD5를 비교해요(프로젝트를 나눈 복사가 빠짐없이 됐는지 전환 전에 확인하는 데 써요). 스키마는 이름으로 짝지어요(데이터 스키마는 public, 나머지는 app_<ref>_ 뒤의 이름). 읽기만 하고, 40초 안에 못 끝낸 표는 not_checked로 알려 주니 큰 프로젝트는 schemas로 나눠 부르세요. 두 프로젝트 모두 소유자·관리자여야 해요.

이름설명
토큰 범위read
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
withstring예비교할 프로젝트의 ref(list_projects). ref와 달라야 해요.
schemasarray<string>아니요비교할 스키마 이름(public, allfic …). 비우면 모두.
hashboolean아니요false면 행 수만 비교해요(빨라요). 기본은 true.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "with": {
      "type": "string",
      "description": "비교할 프로젝트의 ref(list_projects). ref와 달라야 해요."
    },
    "schemas": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "비교할 스키마 이름(public, allfic …). 비우면 모두."
    },
    "hash": {
      "type": "boolean",
      "description": "false면 행 수만 비교해요(빨라요). 기본은 true."
    }
  },
  "required": [
    "ref",
    "with"
  ],
  "additionalProperties": false
}

get_project_forward 공개 함수 넘기기 보기

읽기 전용

이 프로젝트(ref)의 공개 함수 호출을 다른 프로젝트가 대신 받고 있는지 보여줘요. 받는 프로젝트의 ref 또는 null이에요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_project_forward 공개 함수 넘기기

파괴적

이 프로젝트(ref)의 공개 함수 호출을 다른 프로젝트(to)가 대신 받게 해요. 프로젝트를 나눈 뒤에도 옛 주소로 오는 결제 웹훅이나 옛 앱의 공개 함수 호출이 끊기지 않아요. 호출은 to 프로젝트의 같은 이름 함수가, 그 프로젝트의 환경과 요금으로 답해요. 비공개 함수, REST API, 로그인, 파일은 넘기지 않아요(그 호출자가 쥔 키와 세션은 옛 프로젝트 것이에요). to를 비우면 꺼요. 한 단계만 넘길 수 있고, 두 프로젝트 모두 소유자·관리자여야 해요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
tostring아니요대신 받을 프로젝트의 ref(list_projects). 비우면 넘기기를 꺼요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "to": {
      "type": "string",
      "description": "대신 받을 프로젝트의 ref(list_projects). 비우면 넘기기를 꺼요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

get_project_write_lock 쓰기 잠금 보기

읽기 전용

이 프로젝트(ref)가 지금 읽기 전용으로 잠겨 있는지 보여줘요. 잠겨 있으면 끝나는 시각과 사유가 나와요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_project_write_lock 쓰기 잠금

파괴적

이 프로젝트(ref)를 잠시 읽기 전용으로 잠가요. 프로젝트를 나눌 때 마지막 복사(copy_data_from_project의 upsert) 직전에 걸면 그 복사가 전부가 돼요. REST API·함수·예약 작업의 쓰기는 몇 초 안에 막히고, 읽기·로그인·파일은 그대로예요. 잠금은 minutes(기본 30, 최대 1440)가 지나면 저절로 풀려서 잊어도 프로젝트가 막힌 채 남지 않아요. locked: false로 바로 풀어요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
lockedboolean예true면 잠그고 false면 풀어요.
minutesinteger아니요잠금 시간(분). 기본 30, 1부터 1440까지.
reasonstring아니요사유(200자까지). 감사 기록에 남아요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "locked": {
      "type": "boolean",
      "description": "true면 잠그고 false면 풀어요."
    },
    "minutes": {
      "type": "integer",
      "description": "잠금 시간(분). 기본 30, 1부터 1440까지."
    },
    "reason": {
      "type": "string",
      "description": "사유(200자까지). 감사 기록에 남아요."
    }
  },
  "required": [
    "ref",
    "locked"
  ],
  "additionalProperties": false
}

copy_functions_from_project 다른 프로젝트의 함수 복사

파괴적

같은 계정의 다른 프로젝트(from)에 배포된 함수를 이 프로젝트(ref)에 그대로 배포해요(코드, 파일, package.json). 이름을 비우면 전부예요. 비공개로 복사하고(keep_public: true면 원래 공개였던 것만 공개), 제한 시간·메모리와 외부 요청 설정은 옮기지 않아요. 같은 이름이 있으면 건너뛰고(overwrite: true면 바꿔요), dry_run이면 보기만 해요. 시크릿은 copy_function_secrets로 따로 옮겨요. 두 프로젝트 모두 소유자·관리자여야 해요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
fromstring예복사해 올 프로젝트의 ref(list_projects). ref와 달라야 해요.
namesarray<string>아니요복사할 함수 이름. 비우면 전부.
keep_publicboolean아니요true면 원래 공개였던 함수는 공개로 둬요. 기본은 모두 비공개.
overwriteboolean아니요true면 같은 이름의 함수를 바꿔요. 기본은 false(건너뜀).
dry_runboolean아니요true면 바꾸지 않고 무엇을 복사할지만 보여줘요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "from": {
      "type": "string",
      "description": "복사해 올 프로젝트의 ref(list_projects). ref와 달라야 해요."
    },
    "names": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "복사할 함수 이름. 비우면 전부."
    },
    "keep_public": {
      "type": "boolean",
      "description": "true면 원래 공개였던 함수는 공개로 둬요. 기본은 모두 비공개."
    },
    "overwrite": {
      "type": "boolean",
      "description": "true면 같은 이름의 함수를 바꿔요. 기본은 false(건너뜀)."
    },
    "dry_run": {
      "type": "boolean",
      "description": "true면 바꾸지 않고 무엇을 복사할지만 보여줘요."
    }
  },
  "required": [
    "ref",
    "from"
  ],
  "additionalProperties": false
}

set_vault_project_keys 프로젝트 자기 주소·키를 Vault에 넣기

파괴적

이 프로젝트(ref) 자신의 주소와 비밀 키를 이 프로젝트의 Vault에 supabase_url, service_role_key라는 이름으로 넣어요(있으면 바꿔요). 값은 서버 안에서만 옮겨지고 답에는 이름만 나와요. 다른 프로젝트에서 복사한 예약 작업의 SQL이 이 두 이름을 읽기 때문에, 프로젝트를 나눌 때 필요해요. 옛 프로젝트의 두 값을 복사하면 안 돼요(작업이 옛 프로젝트를 불러요). 키를 바꾼(rotate_signing_key) 뒤에는 다시 불러요. Vault가 꺼져 있으면 켜요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

copy_vault_secrets_from_project 다른 프로젝트의 Vault 비밀 복사

파괴적

같은 계정의 다른 프로젝트(from)의 Vault 비밀을 값째 이 프로젝트(ref)로 복사해요. 값은 서버 안에서만 읽고 써서 답에는 이름만 나와요. 이미 있는 이름은 건너뛰고(overwrite: true면 바꿔요), from에 없는 이름은 missing으로 알려요. 이 프로젝트에서 Vault가 꺼져 있으면 켜요. dry_run이면 복사할 이름만 보여줘요. 두 프로젝트 모두 소유자·관리자여야 해요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
fromstring예복사해 올 프로젝트의 ref(list_projects). ref와 달라야 해요.
namesarray<string>아니요복사할 비밀 이름. 비우면 from의 Vault 전부.
overwriteboolean아니요true면 같은 이름을 바꿔요. 기본은 false(건너뜀).
dry_runboolean아니요true면 바꾸지 않고 무엇을 복사할지만 보여줘요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "from": {
      "type": "string",
      "description": "복사해 올 프로젝트의 ref(list_projects). ref와 달라야 해요."
    },
    "names": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "복사할 비밀 이름. 비우면 from의 Vault 전부."
    },
    "overwrite": {
      "type": "boolean",
      "description": "true면 같은 이름을 바꿔요. 기본은 false(건너뜀)."
    },
    "dry_run": {
      "type": "boolean",
      "description": "true면 바꾸지 않고 무엇을 복사할지만 보여줘요."
    }
  },
  "required": [
    "ref",
    "from"
  ],
  "additionalProperties": false
}

copy_jobs_from_project 다른 프로젝트의 예약 작업 복사

파괴적

같은 계정의 다른 프로젝트(from)의 예약 작업을 이 프로젝트(ref)로 복사해요. enabled: true가 아니면 꺼진 채로 복사해서 같은 작업이 두 곳에서 돌지 않아요. 원래 작업을 끈 뒤 set_job_enabled로 하나씩 켜세요. SQL에 적힌 원래 프로젝트의 이름(net_·app_·cron_ 스키마, 주소)은 이 프로젝트의 것으로 바꿔서 복사하고, 답의 retargeted가 바꾼 횟수예요. cron.schedule로 만든 작업(scheduled_in_sql)과 헤더가 봉인된 주소 작업(headers_sealed)은 복사되지 않으니 다시 만드세요. 함수 작업은 이 프로젝트에 함수를 먼저 배포해야 해요. dry_run이면 아무것도 바꾸지 않아요. 두 프로젝트 모두 소유자·관리자여야 해요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
fromstring예복사해 올 프로젝트의 ref(list_projects). ref와 달라야 해요.
namesarray<string>아니요복사할 작업 이름. 비우면 전부.
enabledboolean아니요true면 복사본을 켜요. 기본은 false.
overwriteboolean아니요true면 같은 이름의 작업을 바꿔요. 기본은 false(건너뜀).
dry_runboolean아니요true면 바꾸지 않고 무엇을 복사할지만 보여줘요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "from": {
      "type": "string",
      "description": "복사해 올 프로젝트의 ref(list_projects). ref와 달라야 해요."
    },
    "names": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "복사할 작업 이름. 비우면 전부."
    },
    "enabled": {
      "type": "boolean",
      "description": "true면 복사본을 켜요. 기본은 false."
    },
    "overwrite": {
      "type": "boolean",
      "description": "true면 같은 이름의 작업을 바꿔요. 기본은 false(건너뜀)."
    },
    "dry_run": {
      "type": "boolean",
      "description": "true면 바꾸지 않고 무엇을 복사할지만 보여줘요."
    }
  },
  "required": [
    "ref",
    "from"
  ],
  "additionalProperties": false
}

copy_auth_from_project 다른 프로젝트의 로그인 설정 복사

파괴적

같은 계정의 다른 프로젝트(from)가 켜 둔 로그인 설정을 이 프로젝트(ref)에 복사해요: 소셜 제공자(Client ID·시크릿 등, update_auth_config와 같은 검사와 감사 기록), 돌아갈 주소 목록(add_redirect_url과 같아요), 비어 있을 때만 site_url. 프로젝트를 둘로 나눌 때 시크릿을 붙여 넣지 않게 해요. 시크릿은 서버 안에서만 옮겨지고 답에 나오지 않아요. 답은 제공자마다 copied와 이유예요. 답의 callback_url을 각 제공자 콘솔에 등록하기 전에는 로그인이 실패해요. 이미 켜 둔 제공자는 덮어써요. dry_run이면 아무것도 바꾸지 않고 보여만 줘요. 두 프로젝트 모두 소유자·관리자여야 해요(다른 조직이어도 돼요).

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
fromstring예복사해 올 프로젝트의 ref(list_projects). ref와 달라야 해요.
providersarray<string>아니요복사할 제공자(google, kakao, apple, x…). 비우면 from에서 켜 둔 것 모두.
dry_runboolean아니요true면 바꾸지 않고 무엇을 복사할지만 보여줘요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "from": {
      "type": "string",
      "description": "복사해 올 프로젝트의 ref(list_projects). ref와 달라야 해요."
    },
    "providers": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "복사할 제공자(google, kakao, apple, x…). 비우면 from에서 켜 둔 것 모두."
    },
    "dry_run": {
      "type": "boolean",
      "description": "true면 바꾸지 않고 무엇을 복사할지만 보여줘요."
    }
  },
  "required": [
    "ref",
    "from"
  ],
  "additionalProperties": false
}

copy_storage_from_project 다른 프로젝트의 파일 복사

파괴적

같은 계정의 다른 프로젝트(from)의 버킷과 파일을 이 프로젝트(ref)에 복사해요. 서버 안에서 옮기고 복사하는 방식은 copy_storage_from_import와 같아요: 여기 없는 버킷은 원본과 같은 공개 여부·크기 한도·파일 형식으로 만들고, 크기가 같은 파일은 건너뛰어서 다시 불러도 돼요. 한 번에 파일 200개(max_files)·45초까지 옮기고, 남으면 답의 next를 넘겨 다시 불러요(done이 true가 될 때까지). 버킷의 접근 규칙은 옮기지 않아요. dry_run이면 보기만 해요. 두 프로젝트 모두 소유자·관리자여야 해요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자, project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
fromstring예복사해 올 프로젝트의 ref(list_projects). ref와 달라야 해요.
bucketsarray<string>아니요복사할 버킷 이름. 비우면 모두.
renameobject아니요버킷 이름 바꾸기 {"원본 버킷": "여기 버킷"}.
dry_runboolean아니요true면 바꾸지 않고 만들 버킷과 옮길 파일 수만 보여줘요.
nextstring아니요앞의 답에 있던 next. 넘기면 거기서부터 이어서 옮겨요.
max_filesinteger, min 1, max 1000아니요이번에 옮길 파일 수의 상한(기본 200, 최대 1000).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "from": {
      "type": "string",
      "description": "복사해 올 프로젝트의 ref(list_projects). ref와 달라야 해요."
    },
    "buckets": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "복사할 버킷 이름. 비우면 모두."
    },
    "rename": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "버킷 이름 바꾸기 {\"원본 버킷\": \"여기 버킷\"}."
    },
    "dry_run": {
      "type": "boolean",
      "description": "true면 바꾸지 않고 만들 버킷과 옮길 파일 수만 보여줘요."
    },
    "next": {
      "type": "string",
      "description": "앞의 답에 있던 next. 넘기면 거기서부터 이어서 옮겨요."
    },
    "max_files": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000,
      "description": "이번에 옮길 파일 수의 상한(기본 200, 최대 1000)."
    }
  },
  "required": [
    "ref",
    "from"
  ],
  "additionalProperties": false
}

copy_storage_from_import 파일 가져오기

파괴적 외부로 나감

import_sources에 연결한 Supabase 계정으로 그 프로젝트의 버킷과 파일을 이 서버의 프로젝트(ref)에 복사해요. 여기 없는 버킷은 Supabase와 같은 공개 여부·크기 한도·형식으로 만들고, 파일은 upload_object와 같은 저장소에 같은 한도로 올려요. 여기 있는 파일과 크기가 같으면 건너뛰어서 다시 불러도 돼요. 한 번에 파일 200개(max_files)·45초까지 옮기고, 남으면 답의 next를 넘겨 다시 불러요(done이 true가 될 때까지). 답은 버킷마다 created, copied, skipped, failed, bytes와 실패한 파일 몇 개예요. Supabase 키는 대화에 나오지 않아요. 버킷의 접근 규칙은 옮기지 않아요. dry_run이면 아무것도 바꾸지 않고 수만 보여줘요. 소유자·관리자·개발자만 돼요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인입력에 따라 물어요 (읽기 SQL이나 dry_run이면 안 물음)
RESTPOST /projects/{ref}/storage/copy-from-import

입력

이름형식필수설명
orgstring아니요조직의 id나 이름. 비우면 ref 프로젝트의 조직.
connectionstring예Supabase 계정(import_sources의 connection, source가 supabase).
projectstring예Supabase 프로젝트 ref(import_sources의 projects[].id).
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
bucketsarray<string>아니요복사할 Supabase 버킷 이름. 비우면 모두.
renameobject아니요버킷 이름 바꾸기 {"Supabase 버킷": "여기 버킷"}. 없으면 소문자로, 공백은 -로 바꿔요(My Files → my-files).
dry_runboolean아니요true면 바꾸지 않고 만들 버킷과 옮길 파일 수만 보여줘요.
nextstring아니요앞의 답에 있던 next. 넘기면 거기서부터 이어서 옮겨요.
max_filesinteger, min 1, max 1000아니요이번에 옮길 파일 수의 상한(기본 200, 최대 1000).
JSON 스키마
{
  "type": "object",
  "properties": {
    "org": {
      "type": "string",
      "description": "조직의 id나 이름. 비우면 ref 프로젝트의 조직."
    },
    "connection": {
      "type": "string",
      "description": "Supabase 계정(import_sources의 connection, source가 supabase)."
    },
    "project": {
      "type": "string",
      "description": "Supabase 프로젝트 ref(import_sources의 projects[].id)."
    },
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "buckets": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "복사할 Supabase 버킷 이름. 비우면 모두."
    },
    "rename": {
      "type": "object",
      "additionalProperties": {
        "type": "string"
      },
      "description": "버킷 이름 바꾸기 {\"Supabase 버킷\": \"여기 버킷\"}. 없으면 소문자로, 공백은 -로 바꿔요(My Files → my-files)."
    },
    "dry_run": {
      "type": "boolean",
      "description": "true면 바꾸지 않고 만들 버킷과 옮길 파일 수만 보여줘요."
    },
    "next": {
      "type": "string",
      "description": "앞의 답에 있던 next. 넘기면 거기서부터 이어서 옮겨요."
    },
    "max_files": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000,
      "description": "이번에 옮길 파일 수의 상한(기본 200, 최대 1000)."
    }
  },
  "required": [
    "connection",
    "project",
    "ref"
  ],
  "additionalProperties": false
}

list_schemas 프로젝트 스키마

읽기 전용

프로젝트가 SQL로 만든 스키마(public 제외)와 데이터 API 노출 여부(exposed)를 봐요. 데이터베이스 안 이름은 app_<ref>_이름이지만 SQL과 클라이언트에선 만든 이름을 그대로 써요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/schemas

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_exposed_schemas 노출 스키마 정하기

파괴적

데이터 API가 public 말고도 답할 스키마 목록을 통째로 정해요(빈 목록은 public만). Accept-Profile 헤더나 supabase-js의 .schema()로 써요. RLS와 권한은 public과 같아요. 30초 안에 적용돼요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/schemas/exposed

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
exposedarray<string>예노출할 스키마 이름들(list_schemas의 name). public은 늘 노출돼요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "exposed": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "노출할 스키마 이름들(list_schemas의 name). public은 늘 노출돼요."
    }
  },
  "required": [
    "ref",
    "exposed"
  ],
  "additionalProperties": false
}

get_data_api_settings 데이터 API 설정 보기

읽기 전용

데이터 API(/rest/v1)가 켜졌는지, 최대 행 수(max_rows, null은 제한 없음), 노출 스키마, search_path를 봐요. search_path_choices는 넣을 수 있는 스키마예요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/data-api

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_data_api_settings 데이터 API 설정 바꾸기

파괴적

데이터 API(/rest/v1)를 켜고 끄고, 최대 행 수와 search_path를 정해요. 준 것만 바꿔요. search_path의 스키마는 요청 스키마 뒤에 붙어 이름 없이 찾을 수 있어요. 30초 안에 적용돼요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPATCH /projects/{ref}/data-api

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
enabledboolean아니요false면 /rest/v1이 모두 404로 답해요.
max_rowsstring, min 1, max 1000000아니요한 번에 돌려주는 최대 행 수. null이면 제한 없음.
search_patharray<string>, max items 20아니요검색 경로에 넣을 스키마(get_data_api_settings의 search_path_choices의 name). 빈 목록이면 넣지 않아요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "enabled": {
      "type": "boolean",
      "description": "false면 /rest/v1이 모두 404로 답해요."
    },
    "max_rows": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 1,
      "maximum": 1000000,
      "description": "한 번에 돌려주는 최대 행 수. null이면 제한 없음."
    },
    "search_path": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "maxItems": 20,
      "description": "검색 경로에 넣을 스키마(get_data_api_settings의 search_path_choices의 name). 빈 목록이면 넣지 않아요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

get_database_settings 데이터베이스 연결 설정 보기

읽기 전용

데이터베이스의 풀 크기(pool_size), 직접 로그인의 최대 연결 수(max_connections), API 로그인의 연결 수(api_connections)를 봐요. 고른 값(null은 기본값)과 지금 Postgres가 지키는 값(enforced), 서버에서 줄 수 있는 최대(limits)를 같이 돌려줘요. 예약 작업이나 함수가 "too many connections for role"로 실패하면 여기서 enforced.api_connections와 limits.api_connections를 먼저 봐요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_database_settings 데이터베이스 연결 설정 바꾸기

파괴적

풀 크기, 직접 로그인의 최대 연결 수, API 로그인의 연결 수를 정해요. 준 것만 바꾸고 null이면 기본값으로 돌려요. 연결 수는 바로 Postgres에 적용되고(열린 연결은 끊지 않아요), 풀 크기는 1분 안에 적용돼요. API 로그인은 API 요청과 예약 작업이 함께 쓰는 연결이라 20에 막혀 있으면 한도(limits.api_connections)까지 올려요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
pool_sizestring, min 1, max 20아니요연결 풀 크기. null이면 기본값.
max_connectionsstring, min 1, max 500아니요직접 로그인(<ref>_db)의 최대 연결 수. null이면 기본값.
api_connectionsstring, min 1, max 500아니요API 로그인(<ref>_authenticator)의 연결 수. get_database_settings의 limits.api_connections까지예요. null이면 서버가 줄 수 있는 기본값.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "pool_size": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 1,
      "maximum": 20,
      "description": "연결 풀 크기. null이면 기본값."
    },
    "max_connections": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 1,
      "maximum": 500,
      "description": "직접 로그인(<ref>_db)의 최대 연결 수. null이면 기본값."
    },
    "api_connections": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 1,
      "maximum": 500,
      "description": "API 로그인(<ref>_authenticator)의 연결 수. get_database_settings의 limits.api_connections까지예요. null이면 서버가 줄 수 있는 기본값."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

list_branches DB 브랜치 목록

읽기 전용

데이터베이스 브랜치 목록이에요: 이름, 브랜치의 ref(다른 도구에 그대로 써요), git 브랜치, 상태(creating·ready·merging·resetting·failed·deleting), 크기, 만료 시각. 자동 브랜치 설정도 와요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/branches

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_branch DB 브랜치 만들기

추가만 함

마이그레이션(apply_migrations 기록)을 다시 실행하고 시드를 넣어 미리보기 데이터베이스를 만들어요. 데이터는 with_data일 때만 복사해요. 브랜치는 ref가 따로 있어 모든 도구에 그 ref를 써요. git_branch를 주면 그 프리뷰 배포가 이걸 써요. Pro부터 돼요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/branches

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring아니요브랜치 이름(영문 소문자·숫자·-, 30자까지). 없으면 git_branch에서 만들어요.
git_branchstring아니요연결할 git 브랜치. 그 브랜치의 미리보기 배포에 이 데이터베이스의 주소·키·연결 문자열이 들어가요.
with_seedboolean아니요false면 시드를 넣지 않아요.
with_databoolean아니요true면 프로젝트의 행까지 복사해요(마이그레이션 다시 실행과 시드 대신). 파일과 그 행은 복사하지 않아요. 데이터가 512MB를 넘으면 거절해요. 진행 상황은 list_branches의 copy에 나와요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "브랜치 이름(영문 소문자·숫자·-, 30자까지). 없으면 git_branch에서 만들어요."
    },
    "git_branch": {
      "type": "string",
      "description": "연결할 git 브랜치. 그 브랜치의 미리보기 배포에 이 데이터베이스의 주소·키·연결 문자열이 들어가요."
    },
    "with_seed": {
      "type": "boolean",
      "description": "false면 시드를 넣지 않아요."
    },
    "with_data": {
      "type": "boolean",
      "description": "true면 프로젝트의 행까지 복사해요(마이그레이션 다시 실행과 시드 대신). 파일과 그 행은 복사하지 않아요. 데이터가 512MB를 넘으면 거절해요. 진행 상황은 list_branches의 copy에 나와요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

merge_branch DB 브랜치 병합

파괴적

브랜치에만 있는 마이그레이션을 버전 순으로 운영 프로젝트에 적용해요. 하나씩 트랜잭션으로 실행하고 실패하면 그것만 되돌리고 멈춰요. 데이터는 안 옮겨요. 브랜치 스키마는 apply_migrations로 바꿔야 병합돼요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/branches/{name}/merge

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예브랜치 이름(list_branches의 name).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "브랜치 이름(list_branches의 name)."
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

reset_branch DB 브랜치 초기화

파괴적

브랜치의 데이터베이스를 지우고 프로젝트의 마이그레이션과 시드로 다시 만들어요. 브랜치의 데이터와 사용자는 모두 사라지고 백업은 남지 않아요. confirm에 브랜치 이름을 그대로 넣어야 해요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/branches/{name}/reset

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예브랜치 이름.
confirmstring예브랜치 이름. name과 정확히 같아야 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "브랜치 이름."
    },
    "confirm": {
      "type": "string",
      "description": "브랜치 이름. name과 정확히 같아야 해요."
    }
  },
  "required": [
    "ref",
    "name",
    "confirm"
  ],
  "additionalProperties": false
}

delete_branch DB 브랜치 삭제

파괴적

브랜치와 그 데이터베이스·키를 지워요. 되돌릴 수 없으니 confirm에 브랜치 이름을 그대로 넣어야 해요. git 브랜치를 지우거나 풀 리퀘스트를 닫으면 자동으로 지워져요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/branches/{name}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예브랜치 이름.
confirmstring예브랜치 이름. name과 정확히 같아야 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "브랜치 이름."
    },
    "confirm": {
      "type": "string",
      "description": "브랜치 이름. name과 정확히 같아야 해요."
    }
  },
  "required": [
    "ref",
    "name",
    "confirm"
  ],
  "additionalProperties": false
}

set_branching 자동 DB 브랜치 설정

파괴적

미리보기로 배포되는 git 브랜치마다 DB 브랜치를 자동으로 만들지, 모든 브랜치에 넣을 시드 SQL, 쓰지 않는 브랜치를 남겨 둘 날짜(1~90일, 배포할 때마다 연장). 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/branching

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
automaticboolean아니요true면 미리보기 브랜치마다 자동으로 만들어요.
seed_sqlstring아니요새 브랜치마다 마이그레이션 뒤에 실행할 SQL(1MB까지). 빈 문자열이면 지워요.
lifetime_daysinteger, min 1, max 90아니요마지막 배포 뒤 브랜치를 남겨 둘 날짜.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "automatic": {
      "type": "boolean",
      "description": "true면 미리보기 브랜치마다 자동으로 만들어요."
    },
    "seed_sql": {
      "type": "string",
      "description": "새 브랜치마다 마이그레이션 뒤에 실행할 SQL(1MB까지). 빈 문자열이면 지워요."
    },
    "lifetime_days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 90,
      "description": "마지막 배포 뒤 브랜치를 남겨 둘 날짜."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

list_queues 대기열 목록

읽기 전용

대기열마다 메시지 수, 지금 읽을 수 있는 수, 보관된 수, 가장 오래된 메시지 나이예요. enabled는 pgmq 설치 여부, exposed는 데이터 API(pgmq_public)로 부를 수 있는지예요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/queues

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_queue 대기열 만들기

추가만 함

대기열을 만들어요(pgmq.create, 처음이면 pgmq도 설치). 메시지는 pgmq.q_<이름> 표에 있고, SQL에서 pgmq.send(이름, 메시지)로 넣고 pgmq.read(이름, 초, 개수)로 읽어요. 전용 데이터베이스에서만 돼요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/queues

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예대기열 이름(영문 소문자·숫자·_, 47자까지).
unloggedboolean아니요true면 WAL을 쓰지 않는 빠른 표로 만들어요(서버가 비정상 종료되면 메시지를 잃어요).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "대기열 이름(영문 소문자·숫자·_, 47자까지)."
    },
    "unlogged": {
      "type": "boolean",
      "description": "true면 WAL을 쓰지 않는 빠른 표로 만들어요(서버가 비정상 종료되면 메시지를 잃어요)."
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

delete_queue 대기열 삭제

파괴적

대기열과 그 메시지, 보관함을 지워요(pgmq.drop_queue). 되돌릴 수 없으니 confirm에 대기열 이름을 그대로 넣어야 해요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/queues/{name}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예대기열 이름.
confirmstring예대기열 이름. name과 정확히 같아야 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "대기열 이름."
    },
    "confirm": {
      "type": "string",
      "description": "대기열 이름. name과 정확히 같아야 해요."
    }
  },
  "required": [
    "ref",
    "name",
    "confirm"
  ],
  "additionalProperties": false
}

purge_queue 대기열 비우기

파괴적

대기열의 메시지를 모두 지워요(pgmq.purge_queue). 보관함은 그대로 둬요. 되돌릴 수 없으니 confirm에 대기열 이름을 그대로 넣어야 해요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/queues/{name}/purge

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예대기열 이름.
confirmstring예대기열 이름. name과 정확히 같아야 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "대기열 이름."
    },
    "confirm": {
      "type": "string",
      "description": "대기열 이름. name과 정확히 같아야 해요."
    }
  },
  "required": [
    "ref",
    "name",
    "confirm"
  ],
  "additionalProperties": false
}

send_queue_message 대기열에 메시지 넣기

추가만 함

메시지(JSON) 하나를 대기열에 넣어요(pgmq.send). delay초 동안은 읽히지 않아요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/queues/{name}/messages

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예대기열 이름.
messagestring예넣을 메시지. JSON 값이면 무엇이든 돼요.
delayinteger, min 0아니요이 초만큼 지난 뒤에 읽을 수 있게 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "대기열 이름."
    },
    "message": {
      "description": "넣을 메시지. JSON 값이면 무엇이든 돼요."
    },
    "delay": {
      "type": "integer",
      "minimum": 0,
      "description": "이 초만큼 지난 뒤에 읽을 수 있게 해요."
    }
  },
  "required": [
    "ref",
    "name",
    "message"
  ],
  "additionalProperties": false
}

peek_queue 대기열 메시지 보기

읽기 전용

대기열의 앞쪽 메시지를 가져가지 않고 봐요. 읽음 횟수도 가시성 시간도 바꾸지 않아서 작업자가 받을 메시지를 가로채지 않아요.

이름설명
토큰 범위read
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/queues/{name}/messages

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예대기열 이름.
limitinteger, min 1, max 100아니요볼 메시지 수(기본 20).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "대기열 이름."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "볼 메시지 수(기본 20)."
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

set_queues_api 대기열을 데이터 API로 열기

파괴적

true면 pgmq_public 스키마를 만들어 supabase.schema("pgmq_public").rpc("send", …)로 부르게 해요. 부른 사람 권한으로 실행되니 대기열 표에 권한과 접근 규칙을 주세요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/queues/api

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
exposedboolean예true면 열고 false면 닫아요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "exposed": {
      "type": "boolean",
      "description": "true면 열고 false면 닫아요."
    }
  },
  "required": [
    "ref",
    "exposed"
  ],
  "additionalProperties": false
}

list_vault_secrets Vault 비밀 목록

읽기 전용

Vault에 저장한 비밀의 이름과 설명. 값은 돌려주지 않아요. 프로젝트의 코드는 비밀 키로 select decrypted_secret from vault.decrypted_secrets where name = …로 읽어요.

이름설명
토큰 범위read
역할secrets.read 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/vault

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_vault_secret Vault 비밀 저장

추가만 함

비밀 하나를 암호화해 프로젝트 데이터베이스의 vault.secrets에 저장해요(vault.create_secret). 키는 플랫폼이 갖고 있어 덤프·백업에는 암호문만 남아요. 처음이면 Vault를 켜요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/vault

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예비밀 이름(영문자나 _로 시작, 128자까지).
valuestring예저장할 값(64KB까지). 다시 보여 주지 않아요.
descriptionstring아니요설명(500자까지).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "비밀 이름(영문자나 _로 시작, 128자까지)."
    },
    "value": {
      "type": "string",
      "description": "저장할 값(64KB까지). 다시 보여 주지 않아요."
    },
    "description": {
      "type": "string",
      "description": "설명(500자까지)."
    }
  },
  "required": [
    "ref",
    "name",
    "value"
  ],
  "additionalProperties": false
}

update_vault_secret Vault 비밀 바꾸기

파괴적

비밀의 값이나 설명을 바꿔요(vault.update_secret). 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPATCH /projects/{ref}/vault/{name}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예비밀 이름.
valuestring아니요새 값.
descriptionstring아니요새 설명.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "비밀 이름."
    },
    "value": {
      "type": "string",
      "description": "새 값."
    },
    "description": {
      "type": "string",
      "description": "새 설명."
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

delete_vault_secret Vault 비밀 삭제

파괴적

비밀 하나를 지워요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/vault/{name}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예비밀 이름.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "비밀 이름."
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

get_network_restrictions DB 접속 제한 보기

읽기 전용

데이터베이스 직접 연결(5432·6543)에 접속할 수 있는 주소와 TLS 강제 여부. restricted가 false면 모든 주소가 접속할 수 있어요. your_address_allowed는 이 요청을 보낸 주소가 허용되는지예요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/network-restrictions

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

update_network_restrictions DB 접속 제한 바꾸기

파괴적

직접 연결을 허용할 주소(CIDR, 100개까지)와 TLS 강제를 바꿔요. allow_all이면 모두 허용해요. 지금 요청한 주소가 목록에 없으면 confirm이 필요해요(콘솔·API는 영향 없어요). 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/network-restrictions

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
allowed_cidrsarray<string>아니요허용할 주소나 CIDR(예: 203.0.113.0/24). 빈 배열이면 제한을 풀어요.
allow_allboolean아니요true면 제한을 풀고 모든 주소를 허용해요.
enforce_sslboolean아니요true면 TLS(sslmode=require) 연결만 받아요. 기본값은 true예요.
confirmboolean아니요이 요청을 보낸 주소가 목록에 없어도 저장해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "allowed_cidrs": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "허용할 주소나 CIDR(예: 203.0.113.0/24). 빈 배열이면 제한을 풀어요."
    },
    "allow_all": {
      "type": "boolean",
      "description": "true면 제한을 풀고 모든 주소를 허용해요."
    },
    "enforce_ssl": {
      "type": "boolean",
      "description": "true면 TLS(sslmode=require) 연결만 받아요. 기본값은 true예요."
    },
    "confirm": {
      "type": "boolean",
      "description": "이 요청을 보낸 주소가 목록에 없어도 저장해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

list_transfer_targets 옮길 수 있는 조직

읽기 전용

이 프로젝트를 옮길 수 있는 다른 조직(내가 소유자나 관리자인 조직)의 id·이름·요금제예요. can_transfer는 내가 지금 조직의 소유자라서 옮길 수 있는지예요. transfer_project의 organisation에 id를 넣어요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/transfer

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

transfer_project 프로젝트 옮기기

파괴적

프로젝트를 다른 조직으로 옮겨요. 지금 조직의 소유자이면서 받는 조직의 소유자나 관리자여야 하고, 받는 조직의 요금제에 프로젝트 자리가 있어야 해요. 옮긴 뒤 사용량은 받는 조직에 청구되고 이번 달 청구는 옮긴 시점에서 나뉘어요. 원래 조직 구성원에게 따로 준 접근은 사라지고, 되돌리려면 받는 조직의 소유자가 다시 옮겨야 해요. 주소·키·데이터·배포는 그대로예요. 사용자가 분명히 요청했을 때만 쓰고 confirm에 프로젝트 이름을 그대로 넣으세요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTPOST /projects/{ref}/transfer

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
organisationstring예받을 조직의 id. list_transfer_targets가 알려줘요. 이름이 하나뿐이면 이름도 돼요.
confirmstring예프로젝트 이름. list_projects의 name과 정확히 같아야 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "organisation": {
      "type": "string",
      "description": "받을 조직의 id. list_transfer_targets가 알려줘요. 이름이 하나뿐이면 이름도 돼요."
    },
    "confirm": {
      "type": "string",
      "description": "프로젝트 이름. list_projects의 name과 정확히 같아야 해요."
    }
  },
  "required": [
    "ref",
    "organisation",
    "confirm"
  ],
  "additionalProperties": false
}

get_analytics 웹 분석

읽기 전용

페이지뷰와 방문자를 날짜별로, 많이 본 페이지·유입 경로·국가·기기·브라우저·운영체제와 함께 돌려줘요. 개인을 알아볼 수 있는 값은 저장하지 않아서 합계만 있어요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/analytics

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
daysinteger, 1 | 7 | 30 | 90아니요기간. 기본 7.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "days": {
      "type": "integer",
      "enum": [
        1,
        7,
        30,
        90
      ],
      "description": "기간. 기본 7."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

get_speed_insights 속도 인사이트

읽기 전용

실제 방문자의 브라우저가 잰 Core Web Vitals(LCP, INP, CLS, FCP, TTFB)의 75번째 백분위와 평가, 느린 페이지를 돌려줘요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/speed-insights

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
daysinteger, 1 | 7 | 30 | 90아니요기간. 기본 7.
devicestring, all | desktop | mobile아니요기기. 기본 all.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "days": {
      "type": "integer",
      "enum": [
        1,
        7,
        30,
        90
      ],
      "description": "기간. 기본 7."
    },
    "device": {
      "type": "string",
      "enum": [
        "all",
        "desktop",
        "mobile"
      ],
      "description": "기기. 기본 all."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_insights 분석 켜기·끄기

파괴적

웹 분석과 속도 인사이트를 켜고 꺼요. 켜면 HTML에 /_oneend/insights/script.js가 들어가고, @vercel/analytics·@vercel/speed-insights도 그대로 집계돼요. 쿠키와 IP는 저장하지 않아요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/insights

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
analyticsboolean아니요웹 분석.
speed_insightsboolean아니요속도 인사이트.
vitals_sample_percentinteger, min 1, max 100아니요속도를 재는 방문 비율.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "analytics": {
      "type": "boolean",
      "description": "웹 분석."
    },
    "speed_insights": {
      "type": "boolean",
      "description": "속도 인사이트."
    },
    "vitals_sample_percent": {
      "type": "integer",
      "minimum": 1,
      "maximum": 100,
      "description": "속도를 재는 방문 비율."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

get_edge_config 엣지 설정 읽기

읽기 전용

프로젝트의 엣지 설정(배포 없이 바꾸는 값과 기능 플래그) 전체와 버전, 크기, 한도를 돌려줘요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/edge-config

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_edge_config 엣지 설정 바꾸기

파괴적

키를 저장하거나 지워요. 몇 초 안에 모든 서버에 적용돼요. 플래그는 true/false, {"enabled": true, "percent": 20}, {"enabled": true, "allow": ["user-1"]} 모양이에요. 개발자 이상만 돼요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPATCH /projects/{ref}/edge-config

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
setobject아니요저장할 키와 값 (값은 JSON).
deletearray<string>아니요지울 키.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "set": {
      "type": "object",
      "additionalProperties": true,
      "description": "저장할 키와 값 (값은 JSON)."
    },
    "delete": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "지울 키."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

get_edge_config_history 엣지 설정 변경 기록

읽기 전용

누가 언제 어떤 키를 무엇에서 무엇으로 바꿨는지, 최근 것부터 돌려줘요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/edge-config/history

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
limitinteger, min 1, max 500아니요몇 개. 기본 50.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 500,
      "description": "몇 개. 기본 50."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

get_rolling_releases 점진적 배포 상태

읽기 전용

점진적 배포 설정과, 진행 중인 배포(새 배포가 받는 방문자 비율)와 최근 기록을 돌려줘요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/rolling-releases

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_rolling_releases 점진적 배포 설정

파괴적

새 프로덕션 배포를 단계별 비율(stages, 예: [10, 50])로 내보낼지 정해요. auto_advance가 false면 단계마다 승인해요. abort_error_rate(0.05 = 5%)를 넘으면 자동으로 되돌려요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/rolling-releases

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
enabledboolean아니요켜기.
stagesarray<integer>아니요단계별 비율(%).
stage_minutesinteger, min 1, max 1440아니요단계 길이(분).
auto_advanceboolean아니요시간이 지나면 자동 진행.
abort_error_ratestring, min 0.001, max 1아니요자동 중단 5xx 비율. null이면 끄기.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "enabled": {
      "type": "boolean",
      "description": "켜기."
    },
    "stages": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 1,
        "maximum": 99
      },
      "description": "단계별 비율(%)."
    },
    "stage_minutes": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1440,
      "description": "단계 길이(분)."
    },
    "auto_advance": {
      "type": "boolean",
      "description": "시간이 지나면 자동 진행."
    },
    "abort_error_rate": {
      "type": [
        "number",
        "null"
      ],
      "minimum": 0.001,
      "maximum": 1,
      "description": "자동 중단 5xx 비율. null이면 끄기."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

advance_rolling_release 점진적 배포 다음 단계로

파괴적

진행 중인 배포를 다음 단계 비율로 올려요. 마지막 단계였다면 모두에게 배포해요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/rolling-releases/{action}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

promote_rolling_release 점진적 배포 완료

파괴적

진행 중인 배포를 지금 모든 방문자에게 보내요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

abort_rolling_release 점진적 배포 중단

파괴적

진행 중인 배포를 멈추고 이전 프로덕션 배포로 되돌려요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
reasonstring, max length 300아니요기록에 남길 이유.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "reason": {
      "type": "string",
      "maxLength": 300,
      "description": "기록에 남길 이유."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

list_kv_keys KV 키 목록

읽기 전용

KV 저장소의 키를 접두어로, 50개씩 돌려줘요. 사용량과 한도, REST 주소도 함께예요. 비밀을 볼 수 있는 역할만 할 수 있어요.

이름설명
토큰 범위read
역할secrets.read 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/kv

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
prefixstring아니요접두어.
cursorstring아니요이전 응답의 cursor.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "prefix": {
      "type": "string",
      "description": "접두어."
    },
    "cursor": {
      "type": "string",
      "description": "이전 응답의 cursor."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

get_kv KV 값 읽기

읽기 전용

키 하나의 값과 남은 초(ttl, -1은 만료 없음)를 돌려줘요.

이름설명
토큰 범위read
역할secrets.read 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/kv/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
keystring예키.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "key": {
      "type": "string",
      "description": "키."
    }
  },
  "required": [
    "ref",
    "key"
  ],
  "additionalProperties": false
}

set_kv KV 값 저장

파괴적

키에 JSON 값을 저장해요. ttl은 만료까지 초예요. 개발자 이상만 할 수 있어요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/kv/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
keystring예키.
valuestring예값 (JSON).
ttlinteger, min 1아니요만료까지 초.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "key": {
      "type": "string",
      "description": "키."
    },
    "value": {
      "description": "값 (JSON)."
    },
    "ttl": {
      "type": "integer",
      "minimum": 1,
      "description": "만료까지 초."
    }
  },
  "required": [
    "ref",
    "key",
    "value"
  ],
  "additionalProperties": false
}

delete_kv KV 키 삭제

파괴적

키를 지워요. 개발자 이상만 할 수 있어요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/kv/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
keystring예키.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "key": {
      "type": "string",
      "description": "키."
    }
  },
  "required": [
    "ref",
    "key"
  ],
  "additionalProperties": false
}

get_ai_gateway AI 게이트웨이

읽기 전용

AI 게이트웨이 주소(OpenAI 호환), 설정, 공급자(키는 끝 네 자리만), 최근 30일 사용량을 돌려줘요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/ai-gateway

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_ai_gateway AI 게이트웨이 설정

파괴적

AI 게이트웨이의 켜기, 로그인 사용자 허용, 캐시, 분당 한도, 플랫폼 공급자 대체(토큰 요금), 사용자별 하루 한도를 정해요. 사용자는 로그인한 id나 x-oneend-user 헤더예요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/ai-gateway

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
enabledboolean아니요켜기.
allow_usersboolean아니요로그인한 사용자 허용.
cache_secondsinteger, min 0, max 86400아니요캐시 초.
rate_per_minuteinteger, min 1아니요분당 요청 한도.
platform_fallbackboolean아니요플랫폼 공급자로 대체.
user_daily_requestsstring, min 1아니요앱 사용자 한 명의 하루 요청 한도. null은 없음.
user_daily_tokensstring, min 1아니요앱 사용자 한 명의 하루 토큰 한도. null은 없음.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "enabled": {
      "type": "boolean",
      "description": "켜기."
    },
    "allow_users": {
      "type": "boolean",
      "description": "로그인한 사용자 허용."
    },
    "cache_seconds": {
      "type": "integer",
      "minimum": 0,
      "maximum": 86400,
      "description": "캐시 초."
    },
    "rate_per_minute": {
      "type": "integer",
      "minimum": 1,
      "description": "분당 요청 한도."
    },
    "platform_fallback": {
      "type": "boolean",
      "description": "플랫폼 공급자로 대체."
    },
    "user_daily_requests": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 1,
      "description": "앱 사용자 한 명의 하루 요청 한도. null은 없음."
    },
    "user_daily_tokens": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 1,
      "description": "앱 사용자 한 명의 하루 토큰 한도. null은 없음."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

add_ai_provider AI 공급자 추가

추가만 함

공급자를 키와 함께 추가해요: OpenAI 호환, Anthropic(Messages API로 바꿔 줌), Google Gemini. 주소는 공개 https만 돼요. 키는 암호화해 저장하고 다시 보여 주지 않아요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/ai-gateway/providers

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring, pattern ^[a-z][a-z0-9-]{0,39}$예이름. 모델을 이름/모델로 부를 때 써요.
kindstring, openai | anthropic | google | deepseek | openai-compatible예종류.
base_urlstring아니요주소. openai, anthropic, google, deepseek는 비워도 돼요.
keystring아니요API 키.
modelsarray<string>아니요받는 모델. 비우면 모두.
priorityinteger, min 0, max 1000아니요우선순위. 낮은 것부터.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "pattern": "^[a-z][a-z0-9-]{0,39}$",
      "description": "이름. 모델을 이름/모델로 부를 때 써요."
    },
    "kind": {
      "type": "string",
      "enum": [
        "openai",
        "anthropic",
        "google",
        "deepseek",
        "openai-compatible"
      ],
      "description": "종류."
    },
    "base_url": {
      "type": "string",
      "description": "주소. openai, anthropic, google, deepseek는 비워도 돼요."
    },
    "key": {
      "type": "string",
      "description": "API 키."
    },
    "models": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "받는 모델. 비우면 모두."
    },
    "priority": {
      "type": "integer",
      "minimum": 0,
      "maximum": 1000,
      "description": "우선순위. 낮은 것부터."
    }
  },
  "required": [
    "ref",
    "name",
    "kind"
  ],
  "additionalProperties": false
}

set_ai_provider_enabled AI 공급자 끄기·켜기

파괴적

설정과 키는 두고 공급자를 쓰지 않거나 다시 써요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPATCH /projects/{ref}/ai-gateway/providers/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예get_ai_gateway가 돌려준 id.
enabledboolean예쓰기.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "get_ai_gateway가 돌려준 id."
    },
    "enabled": {
      "type": "boolean",
      "description": "쓰기."
    }
  },
  "required": [
    "ref",
    "id",
    "enabled"
  ],
  "additionalProperties": false
}

remove_ai_provider AI 공급자 삭제

파괴적

공급자와 저장한 키를 지워요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/ai-gateway/providers/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예get_ai_gateway가 돌려준 id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "get_ai_gateway가 돌려준 id."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

get_ai_gateway_logs AI 게이트웨이 호출 기록

읽기 전용

최근 호출의 공급자, 모델, 상태, 토큰, 지연, 대체 여부를 돌려줘요. 대화 내용은 저장하지 않아요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/ai-gateway/logs

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
limitinteger, min 1, max 500아니요몇 개. 기본 50.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 500,
      "description": "몇 개. 기본 50."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

get_middleware 미들웨어 설정

읽기 전용

사이트 미들웨어(middleware.ts)를 실행하는지와 시간 한도를 돌려줘요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/middleware

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_middleware 미들웨어 설정 바꾸기

파괴적

사이트 미들웨어를 끄거나 켜고, 시간 한도(100~5000ms)를 정해요. 끄면 다시 배포하지 않아도 미들웨어 없이 서빙해요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/middleware

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
enabledboolean아니요실행.
timeout_msinteger, min 100, max 5000아니요시간 한도(ms).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "enabled": {
      "type": "boolean",
      "description": "실행."
    },
    "timeout_ms": {
      "type": "integer",
      "minimum": 100,
      "maximum": 5000,
      "description": "시간 한도(ms)."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_ai_budgets AI 게이트웨이 예산

파괴적

프로젝트의 AI 게이트웨이 예산을 달러로 정해요(하루·주·달, UTC). 다 쓰면 다음 기간까지 호출을 거절해요. 적지 않은 값은 그대로 둬요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/ai-gateway/budgets

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
daily_usdstring, min 0, max 1000000아니요하루(UTC) 예산, 달러. null이면 없음.
weekly_usdstring, min 0, max 1000000아니요한 주(월요일부터, UTC) 예산, 달러. null이면 없음.
monthly_usdstring, min 0, max 1000000아니요한 달(UTC) 예산, 달러. null이면 없음.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "daily_usd": {
      "type": [
        "number",
        "null"
      ],
      "minimum": 0,
      "maximum": 1000000,
      "description": "하루(UTC) 예산, 달러. null이면 없음."
    },
    "weekly_usd": {
      "type": [
        "number",
        "null"
      ],
      "minimum": 0,
      "maximum": 1000000,
      "description": "한 주(월요일부터, UTC) 예산, 달러. null이면 없음."
    },
    "monthly_usd": {
      "type": [
        "number",
        "null"
      ],
      "minimum": 0,
      "maximum": 1000000,
      "description": "한 달(UTC) 예산, 달러. null이면 없음."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

list_ai_gateway_keys AI 게이트웨이 키 목록

읽기 전용

게이트웨이 키의 이름, 앞부분, 예산, 이번 달 지출, 마지막 사용 시각을 돌려줘요. 키 자체는 돌려주지 않아요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/ai-gateway/keys

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_ai_gateway_key AI 게이트웨이 키 만들기

추가만 함

앱 하나, 또는 프로젝트가 AI를 되파는 고객 한 명에게 줄 게이트웨이 키(bwai_…)를 예산·꼬리표·분당 한도와 함께 만들어요. 키는 이 응답에서 한 번만 보여요. 꼬리표(external_ref)를 단 키는 프로젝트당 50개 제한에 들지 않아요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/ai-gateway/keys

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring, min length 1, max length 60예키 이름.
daily_usdstring, min 0, max 1000000아니요하루(UTC) 예산, 달러. null이면 없음.
weekly_usdstring, min 0, max 1000000아니요한 주(월요일부터, UTC) 예산, 달러. null이면 없음.
monthly_usdstring, min 0, max 1000000아니요한 달(UTC) 예산, 달러. null이면 없음.
external_refstring, max length 200아니요이 키가 프로젝트 장부에서 누구인지(예: 고객의 사용자 ID). 훅에 같이 보내요.
labelsobject아니요자유 라벨 20개까지. 예: {"tier": "1"}. 훅에 같이 보내요.
rate_per_minutestring, min 1, max 100000아니요분당 요청 수 한도. null이면 없음.
tokens_per_minutestring, min 1, max 100000000아니요분당 토큰(입력+출력) 한도. null이면 없음.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "description": "키 이름."
    },
    "daily_usd": {
      "type": [
        "number",
        "null"
      ],
      "minimum": 0,
      "maximum": 1000000,
      "description": "하루(UTC) 예산, 달러. null이면 없음."
    },
    "weekly_usd": {
      "type": [
        "number",
        "null"
      ],
      "minimum": 0,
      "maximum": 1000000,
      "description": "한 주(월요일부터, UTC) 예산, 달러. null이면 없음."
    },
    "monthly_usd": {
      "type": [
        "number",
        "null"
      ],
      "minimum": 0,
      "maximum": 1000000,
      "description": "한 달(UTC) 예산, 달러. null이면 없음."
    },
    "external_ref": {
      "type": [
        "string",
        "null"
      ],
      "maxLength": 200,
      "description": "이 키가 프로젝트 장부에서 누구인지(예: 고객의 사용자 ID). 훅에 같이 보내요."
    },
    "labels": {
      "type": "object",
      "additionalProperties": {
        "type": "string",
        "maxLength": 100
      },
      "description": "자유 라벨 20개까지. 예: {\"tier\": \"1\"}. 훅에 같이 보내요."
    },
    "rate_per_minute": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 1,
      "maximum": 100000,
      "description": "분당 요청 수 한도. null이면 없음."
    },
    "tokens_per_minute": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 1,
      "maximum": 100000000,
      "description": "분당 토큰(입력+출력) 한도. null이면 없음."
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

set_ai_gateway_key_budgets AI 게이트웨이 키 예산

파괴적

게이트웨이 키 하나의 예산을 바꿔요. 적지 않은 값은 그대로 둬요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPATCH /projects/{ref}/ai-gateway/keys/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_ai_gateway_keys가 돌려준 id.
daily_usdstring, min 0, max 1000000아니요하루(UTC) 예산, 달러. null이면 없음.
weekly_usdstring, min 0, max 1000000아니요한 주(월요일부터, UTC) 예산, 달러. null이면 없음.
monthly_usdstring, min 0, max 1000000아니요한 달(UTC) 예산, 달러. null이면 없음.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_ai_gateway_keys가 돌려준 id."
    },
    "daily_usd": {
      "type": [
        "number",
        "null"
      ],
      "minimum": 0,
      "maximum": 1000000,
      "description": "하루(UTC) 예산, 달러. null이면 없음."
    },
    "weekly_usd": {
      "type": [
        "number",
        "null"
      ],
      "minimum": 0,
      "maximum": 1000000,
      "description": "한 주(월요일부터, UTC) 예산, 달러. null이면 없음."
    },
    "monthly_usd": {
      "type": [
        "number",
        "null"
      ],
      "minimum": 0,
      "maximum": 1000000,
      "description": "한 달(UTC) 예산, 달러. null이면 없음."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

set_ai_gateway_key_limits AI 게이트웨이 키 한도

파괴적

게이트웨이 키 하나의 분당 요청 수와 분당 토큰 수 한도를 바꿔요. 모든 서버가 같은 수를 세요. 적지 않은 값은 그대로 두고, null이면 한도를 없애요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/ai-gateway/keys/{id}/limits

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_ai_gateway_keys가 돌려준 id.
rate_per_minutestring, min 1, max 100000아니요분당 요청 수 한도. null이면 없음.
tokens_per_minutestring, min 1, max 100000000아니요분당 토큰(입력+출력) 한도. null이면 없음.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_ai_gateway_keys가 돌려준 id."
    },
    "rate_per_minute": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 1,
      "maximum": 100000,
      "description": "분당 요청 수 한도. null이면 없음."
    },
    "tokens_per_minute": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 1,
      "maximum": 100000000,
      "description": "분당 토큰(입력+출력) 한도. null이면 없음."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

set_ai_model_aliases AI 모델 별칭

파괴적

부르는 사람이 쓰는 모델 이름(별칭)과 실제로 보낼 모델을 정해요. 별칭마다 맨 앞에 넣을 시스템 지침을 둘 수 있어요. 응답의 model은 별칭으로 나가요. 보낸 목록이 지금 목록을 통째로 바꿔요. aliases_only를 켜면 별칭 말고는 부를 수 없고 /models도 별칭만 보여요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/ai-gateway/aliases

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
aliasesarray<object>, max items 50예별칭 전체 목록. 빈 배열이면 모두 지워요.
aliases_onlyboolean아니요별칭만 부를 수 있게 해요. 적지 않으면 그대로 둬요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "aliases": {
      "type": "array",
      "maxItems": 50,
      "description": "별칭 전체 목록. 빈 배열이면 모두 지워요.",
      "items": {
        "type": "object",
        "properties": {
          "alias": {
            "type": "string",
            "pattern": "^[a-z0-9][a-z0-9._-]{0,63}$",
            "description": "부르는 이름. 예: blackall-air"
          },
          "target": {
            "type": "string",
            "minLength": 1,
            "maxLength": 160,
            "description": "실제로 보낼 모델. 예: deepseek/deepseek-flash"
          },
          "system_prompt": {
            "type": [
              "string",
              "null"
            ],
            "maxLength": 20000,
            "description": "맨 앞에 넣을 시스템 지침. 부르는 사람의 지침은 그 뒤에 와요."
          }
        },
        "required": [
          "alias",
          "target"
        ],
        "additionalProperties": false
      }
    },
    "aliases_only": {
      "type": "boolean",
      "description": "별칭만 부를 수 있게 해요. 적지 않으면 그대로 둬요."
    }
  },
  "required": [
    "ref",
    "aliases"
  ],
  "additionalProperties": false
}

set_ai_gateway_hooks AI 게이트웨이 훅

파괴적

게이트웨이 키로 부른 호출마다 물어보고 알려 줄 https 주소를 정해요. ai.before에 2xx가 아니거나 timeout_ms 안에 답이 없으면 호출을 거절해요(402는 잔액 부족으로 그대로 전해요). ai.after에는 사용량·비용·상태를 보내고, 받지 못하면 하루 동안 다시 보내요. 응답에 서명 비밀이 있어요. url을 null로 하면 꺼요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/ai-gateway/hooks

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
urlstring, max length 500아니요훅 주소(https). null이면 꺼요.
timeout_msinteger, min 200, max 10000아니요ai.before가 답할 시간(밀리초). 기본 2000.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "url": {
      "type": [
        "string",
        "null"
      ],
      "maxLength": 500,
      "description": "훅 주소(https). null이면 꺼요."
    },
    "timeout_ms": {
      "type": "integer",
      "minimum": 200,
      "maximum": 10000,
      "description": "ai.before가 답할 시간(밀리초). 기본 2000."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

revoke_ai_gateway_key AI 게이트웨이 키 폐기

파괴적

게이트웨이 키를 폐기해요. 30초 안에 모든 서버에서 거절돼요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/ai-gateway/keys/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_ai_gateway_keys가 돌려준 id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_ai_gateway_keys가 돌려준 id."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

get_ai_spend AI 게이트웨이 지출

읽기 전용

오늘·이번 주·이번 달 지출과 예산, 하루별·모델별·키별 지출을 달러로 돌려줘요. 자기 키로 부른 공급자는 정가로 계산한 추정이에요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/ai-gateway/spend

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
daysinteger, min 1, max 400아니요며칠. 기본 30.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 400,
      "description": "며칠. 기본 30."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

get_analytics_breakdown 웹 분석 세부

읽기 전용

캠페인(utm_source·utm_medium·utm_campaign), 라우트, 사용자 정의 이벤트와 걸러낸 봇의 수를 돌려줘요. event를 주면 그 이벤트의 속성별 값을 함께 돌려줘요. 합계만 있어요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/analytics/breakdown

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
daysinteger, 1 | 7 | 30 | 90아니요기간. 기본 7.
eventstring, max length 100아니요속성을 볼 이벤트 이름.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "days": {
      "type": "integer",
      "enum": [
        1,
        7,
        30,
        90
      ],
      "description": "기간. 기본 7."
    },
    "event": {
      "type": "string",
      "maxLength": 100,
      "description": "속성을 볼 이벤트 이름."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_analytics_previews 프리뷰 방문 세기

파괴적

프리뷰 배포와 dpl- 주소의 방문을 웹 분석에 셀지 정해요. 끄면(기본) 프리뷰에는 스크립트를 넣지 않고 보내온 것도 버려요. 소유자·관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/analytics/previews

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
include_previewsboolean예프리뷰도 세기.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "include_previews": {
      "type": "boolean",
      "description": "프리뷰도 세기."
    }
  },
  "required": [
    "ref",
    "include_previews"
  ],
  "additionalProperties": false
}

export_analytics 웹 분석 내보내기

읽기 전용

기간의 합계를 날짜·항목·값별 CSV 문자열로 돌려줘요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/analytics/export

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
daysinteger, 1 | 7 | 30 | 90아니요기간. 기본 7.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "days": {
      "type": "integer",
      "enum": [
        1,
        7,
        30,
        90
      ],
      "description": "기간. 기본 7."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

list_analytics_reports 맞춤 리포트 목록

읽기 전용

저장한 웹 분석 리포트와 넣을 수 있는 차트 이름을 돌려줘요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/analytics/reports

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

get_analytics_report 맞춤 리포트 보기

읽기 전용

저장한 리포트 하나를 그 기간의 합계, 세부, 속도와 함께 돌려줘요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/analytics/reports/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_analytics_reports가 돌려준 id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_analytics_reports가 돌려준 id."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

save_analytics_report 맞춤 리포트 저장

파괴적

리포트를 만들거나, id를 주면 그 리포트를 바꿔요. 개발자 이상만 할 수 있어요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/analytics/reports, PATCH /projects/{ref}/analytics/reports

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring아니요바꿀 리포트의 id. 비우면 새로 만들어요.
namestring, min length 1, max length 80예이름.
daysinteger, 1 | 7 | 30 | 90아니요기간. 기본 7.
widgetsarray<string>, views | visitors | path | referrer | country | device | browser | os | utm_source | utm_medium | utm_campaign | route | event | bot | vitals, min items 1, max items 16예넣을 차트와 표.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "바꿀 리포트의 id. 비우면 새로 만들어요."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "description": "이름."
    },
    "days": {
      "type": "integer",
      "enum": [
        1,
        7,
        30,
        90
      ],
      "description": "기간. 기본 7."
    },
    "widgets": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "views",
          "visitors",
          "path",
          "referrer",
          "country",
          "device",
          "browser",
          "os",
          "utm_source",
          "utm_medium",
          "utm_campaign",
          "route",
          "event",
          "bot",
          "vitals"
        ]
      },
      "minItems": 1,
      "maxItems": 16,
      "description": "넣을 차트와 표."
    }
  },
  "required": [
    "ref",
    "name",
    "widgets"
  ],
  "additionalProperties": false
}

remove_analytics_report 맞춤 리포트 삭제

파괴적

리포트만 지워요. 분석 기록은 그대로예요. 개발자 이상만 할 수 있어요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/analytics/reports/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_analytics_reports가 돌려준 id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_analytics_reports가 돌려준 id."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

list_flags 기능 플래그 목록

읽기 전용

기능 플래그와, 엣지 설정에 둔 플래그 모양의 값을 함께 돌려줘요. source는 어디에 있는지, shadows는 같은 키의 엣지 설정 값을 가리는지 알려 줘요. 키가 같으면 플래그를 따라요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/flags

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

evaluate_flag 기능 플래그 값 보기

읽기 전용

앱이 받을 값을 돌려줘요. 컨텍스트(예: {"user": {"id": "u1"}})와 환경을 주면 플래그 규칙을, 플래그가 없으면 엣지 설정 값을 따라요. source가 어느 쪽인지 알려 줘요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/flags/evaluate

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
keystring, max length 256예플래그 키.
environmentstring아니요환경. 기본 production.
contextobject아니요평가할 컨텍스트(JSON 객체).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "key": {
      "type": "string",
      "maxLength": 256,
      "description": "플래그 키."
    },
    "environment": {
      "type": "string",
      "description": "환경. 기본 production."
    },
    "context": {
      "type": "object",
      "description": "평가할 컨텍스트(JSON 객체)."
    }
  },
  "required": [
    "ref",
    "key"
  ],
  "additionalProperties": false
}

set_flag_enabled 기능 플래그 켜기·끄기

파괴적

한 환경에서 플래그를 켜거나 꺼요. 프로덕션은 소유자·관리자, 그 밖의 환경은 개발자 이상이 할 수 있어요.

이름설명
토큰 범위write
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/flags/{key}/environments/{environment}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
keystring, max length 64예플래그 키.
environmentstring예환경.
enabledboolean예켜기.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "key": {
      "type": "string",
      "maxLength": 64,
      "description": "플래그 키."
    },
    "environment": {
      "type": "string",
      "description": "환경."
    },
    "enabled": {
      "type": "boolean",
      "description": "켜기."
    }
  },
  "required": [
    "ref",
    "key",
    "environment",
    "enabled"
  ],
  "additionalProperties": false
}

get_remote_cache 원격 캐시

읽기 전용

Turborepo 원격 캐시의 주소, 저장된 결과 수와 용량, 최근 30일 적중·업로드, 이번 달 저장 사용량(remote_cache_gb_hour)과 단가를 돌려줘요. 내려받은 데이터는 egress_gb로 세요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/remote-cache

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

clear_remote_cache 원격 캐시 비우기

파괴적

저장된 결과를 모두 지워요. 다음 빌드부터 다시 채워지고, 지운 만큼 저장 용량 사용량이 줄어요. 개발자 이상만 할 수 있어요.

이름설명
토큰 범위write
역할data.write 소유자·관리자·개발자
콘솔 도우미 확인묻지 않아요
RESTDELETE /projects/{ref}/remote-cache/artifacts

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

get_queue_metrics 큐 지표

읽기 전용

5분마다 잰 기록으로 큐마다 지금 대기 수·읽을 수 있는 메시지·가장 오래 기다린 시간·보관 수와, 전체의 시간별 대기·보낸·처리된 수를 돌려줘요. 기본 24시간, 최대 168시간.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/queues/metrics

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
hoursinteger, min 1, max 168아니요기간(시간). 기본 24.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "hours": {
      "type": "integer",
      "minimum": 1,
      "maximum": 168,
      "description": "기간(시간). 기본 24."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

list_edge_config_tokens 엣지 설정 읽기 토큰

읽기 전용

다른 프로젝트가 이 프로젝트의 엣지 설정을 읽는 읽기 토큰과 연결된 프로젝트(변수 이름, 환경), 이 프로젝트에 연결된 다른 프로젝트의 엣지 설정을 돌려줘요. 토큰 값은 돌려주지 않아요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/edge-config/tokens

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_edge_config_token 엣지 설정 읽기 토큰 만들기

추가만 함

읽기 토큰을 만들어요. connect를 주면 같은 조직의 프로젝트에 연결해, 다음 배포부터 연결 문자열(https://<ref>.<zone>/config/v1?token=…)을 변수로 받아요. 토큰은 이때만 보여요. 프로젝트 관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/edge-config/tokens

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring, min length 1, max length 60예토큰 이름.
connectobject아니요바로 연결할 같은 조직의 프로젝트: ref, 변수 이름 variable(기본 GLOBAL_CONFIG), 환경 targets(기본 셋 다, 프로덕션은 그 프로젝트의 소유자·관리자만).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "description": "토큰 이름."
    },
    "connect": {
      "type": "object",
      "properties": {
        "ref": {
          "type": "string",
          "pattern": "^[a-z]{20}$"
        },
        "variable": {
          "type": "string",
          "pattern": "^[A-Za-z_][A-Za-z0-9_]{0,63}$"
        },
        "targets": {
          "type": "array",
          "items": {
            "type": "string",
            "enum": [
              "production",
              "preview",
              "development"
            ]
          },
          "minItems": 1,
          "uniqueItems": true
        }
      },
      "required": [
        "ref"
      ],
      "additionalProperties": false,
      "description": "바로 연결할 같은 조직의 프로젝트: ref, 변수 이름 variable(기본 GLOBAL_CONFIG), 환경 targets(기본 셋 다, 프로덕션은 그 프로젝트의 소유자·관리자만)."
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

connect_edge_config_token 읽기 토큰을 프로젝트에 연결

파괴적

읽기 토큰을 같은 조직의 다른 프로젝트 배포에 변수로 연결해요. 이미 연결돼 있으면 변수 이름과 환경을 바꿔요. 그 프로젝트의 개발자 이상(프로덕션은 소유자·관리자)이어야 해요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/edge-config/tokens/{id}/connections/{ref}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예읽기 토큰 id. list_edge_config_tokens로 확인해요.
targetstring, pattern ^[a-z]{20}$예연결할 같은 조직의 프로젝트.
variablestring, pattern ^[A-Za-z_][A-Za-z0-9_]{0,63}$아니요배포에서 읽을 변수 이름. 기본 GLOBAL_CONFIG.
targetsarray<string>, production | preview | development, min items 1아니요변수가 들어갈 환경. 기본은 셋 다. 프로덕션은 그 프로젝트의 소유자·관리자만.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "읽기 토큰 id. list_edge_config_tokens로 확인해요."
    },
    "target": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "연결할 같은 조직의 프로젝트."
    },
    "variable": {
      "type": "string",
      "pattern": "^[A-Za-z_][A-Za-z0-9_]{0,63}$",
      "description": "배포에서 읽을 변수 이름. 기본 GLOBAL_CONFIG."
    },
    "targets": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "production",
          "preview",
          "development"
        ]
      },
      "minItems": 1,
      "uniqueItems": true,
      "description": "변수가 들어갈 환경. 기본은 셋 다. 프로덕션은 그 프로젝트의 소유자·관리자만."
    }
  },
  "required": [
    "ref",
    "id",
    "target"
  ],
  "additionalProperties": false
}

disconnect_edge_config_token 읽기 토큰 연결 끊기

파괴적

읽기 토큰을 한 프로젝트에서 떼요. 그 프로젝트의 다음 배포부터 변수가 빠져요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTDELETE /projects/{ref}/edge-config/tokens/{id}/connections/{ref}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예읽기 토큰 id. list_edge_config_tokens로 확인해요.
targetstring, pattern ^[a-z]{20}$예연결할 같은 조직의 프로젝트.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "읽기 토큰 id. list_edge_config_tokens로 확인해요."
    },
    "target": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "연결할 같은 조직의 프로젝트."
    }
  },
  "required": [
    "ref",
    "id",
    "target"
  ],
  "additionalProperties": false
}

revoke_edge_config_token 읽기 토큰 폐기

파괴적

읽기 토큰을 폐기해요. 바로 읽지 못하고, 연결된 프로젝트의 다음 배포부터 변수가 빠져요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인항상 물어요
RESTDELETE /projects/{ref}/edge-config/tokens/{id}

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예읽기 토큰 id. list_edge_config_tokens로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "읽기 토큰 id. list_edge_config_tokens로 확인해요."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

get_deployment_retention 배포 보관 기간

읽기 전용

배포를 종류별로 며칠 남기는지예요: days(적용 값), project_days(null은 요금제), plan_days. 늘 남기는 배포(always_kept)와 삭제 후 되돌릴 수 있는 날(restore_days)도 와요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/deployment-retention

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_deployment_retention 배포 보관 기간 바꾸기

파괴적

배포 종류별 보관 기간을 바꿔요. 기간이 지난 배포는 삭제되고 3일 동안 restore_deployment로 되돌릴 수 있어요. 최근 배포와 서비스 중인 배포는 기간과 상관없이 남아요. 프로젝트 관리자만 할 수 있어요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/deployment-retention

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
canceled_daysstring, min 1, max 3650아니요취소·건너뛴 배포를 남기는 날 수(1~3650). null이면 요금제 기본값. 적지 않으면 그대로.
error_daysstring, min 1, max 3650아니요실패한 배포를 남기는 날 수(1~3650). null이면 요금제 기본값. 적지 않으면 그대로.
preview_daysstring, min 1, max 3650아니요프리뷰 배포를 남기는 날 수(1~3650). null이면 요금제 기본값. 적지 않으면 그대로.
production_daysstring, min 1, max 3650아니요프로덕션 배포를 남기는 날 수(1~3650). null이면 요금제 기본값. 적지 않으면 그대로.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "canceled_days": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 1,
      "maximum": 3650,
      "description": "취소·건너뛴 배포를 남기는 날 수(1~3650). null이면 요금제 기본값. 적지 않으면 그대로."
    },
    "error_days": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 1,
      "maximum": 3650,
      "description": "실패한 배포를 남기는 날 수(1~3650). null이면 요금제 기본값. 적지 않으면 그대로."
    },
    "preview_days": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 1,
      "maximum": 3650,
      "description": "프리뷰 배포를 남기는 날 수(1~3650). null이면 요금제 기본값. 적지 않으면 그대로."
    },
    "production_days": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 1,
      "maximum": 3650,
      "description": "프로덕션 배포를 남기는 날 수(1~3650). null이면 요금제 기본값. 적지 않으면 그대로."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_protection_scope 프리뷰 보호 범위

파괴적

보호할 주소와 예외를 정해요. scope: previews(브랜치 프리뷰와 배포마다의 주소), generated(프로덕션의 기본 주소까지), all(연결한 도메인까지). trusted_ips는 로그인 없이 들이는 IP·CIDR(100개까지), options_paths는 그냥 통과시키는 경로(예: /api/:path*, 50개까지)예요. 빠진 항목은 그대로예요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
scopestring, previews | generated | all아니요
trusted_ipsarray<string>아니요IP나 CIDR. 예: ["203.0.113.4", "10.0.0.0/8"]. []이면 모두 지워요.
options_pathsarray<string>아니요/로 시작하는 경로. 예: ["/api/:path*"]. []이면 모두 지워요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "scope": {
      "type": "string",
      "enum": [
        "previews",
        "generated",
        "all"
      ]
    },
    "trusted_ips": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "IP나 CIDR. 예: [\"203.0.113.4\", \"10.0.0.0/8\"]. []이면 모두 지워요."
    },
    "options_paths": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "/로 시작하는 경로. 예: [\"/api/:path*\"]. []이면 모두 지워요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_bypass_secret 보호 우회 키 만들기

추가만 함

보호된 주소를 로그인 없이 여는 키를 만들어요. E2E 테스트나 AI가 자기가 배포한 프리뷰를 확인할 때 x-blackwall-protection-bypass 헤더에 넣어요. 값은 이 응답에서만 보여요. 프로젝트마다 20개까지이고 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring, max length 60아니요어디에 쓰는 키인지. 비우면 automation.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "maxLength": 60,
      "description": "어디에 쓰는 키인지. 비우면 automation."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

revoke_bypass_secret 보호 우회 키 폐기

파괴적

우회 키를 지워요. 그 키로 오는 요청은 바로 막혀요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예get_preview_protection의 bypass_secrets[].id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "get_preview_protection의 bypass_secrets[].id."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

list_environments 환경 목록

읽기 전용

프로덕션과 직접 만든 환경(staging, qa 같은)을 돌려줘요: 따라가는 브랜치, 자동으로 받는지(auto_assign), 주소, 연결된 도메인, 지금 보여 주는 배포. 연결할 수 있는 도메인(domains)과 시스템 환경 변수를 넣는지(expose_system_env)도 함께 와요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_environment 환경 만들기

추가만 함

스테이징 같은 환경을 만들어요. 자기 주소, 도메인, 환경 변수(set_env_vars의 target에 이름)를 따로 가져요. 이름은 영문 소문자·숫자·-로 40자까지이고 production·preview·development는 안 돼요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring, pattern ^[a-z0-9]([a-z0-9-]{0,38}[a-z0-9])?$예환경 이름. 예: staging
branchstring아니요이 환경이 따라갈 브랜치. 정확한 이름(예: staging)이나 *로 끝나는 접두사(예: release/*). 비우거나 null이면 promote_deployment로만 받아요.
auto_assignboolean아니요true(기본)면 빌드가 끝나는 대로 이 환경에 나가요. false면 promote_deployment를 기다려요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "pattern": "^[a-z0-9]([a-z0-9-]{0,38}[a-z0-9])?$",
      "description": "환경 이름. 예: staging"
    },
    "branch": {
      "type": [
        "string",
        "null"
      ],
      "description": "이 환경이 따라갈 브랜치. 정확한 이름(예: staging)이나 *로 끝나는 접두사(예: release/*). 비우거나 null이면 promote_deployment로만 받아요."
    },
    "auto_assign": {
      "type": "boolean",
      "description": "true(기본)면 빌드가 끝나는 대로 이 환경에 나가요. false면 promote_deployment를 기다려요."
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

update_environment 환경 바꾸기

파괴적

환경이 따라가는 브랜치와 자동으로 받는지를 바꿔요. 프로덕션은 auto_assign만 바뀌어요(브랜치는 update_app의 production_branch). 빠진 항목은 그대로예요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예list_environments의 name.
branchstring아니요이 환경이 따라갈 브랜치. 정확한 이름(예: staging)이나 *로 끝나는 접두사(예: release/*). 비우거나 null이면 promote_deployment로만 받아요.
auto_assignboolean아니요true(기본)면 빌드가 끝나는 대로 이 환경에 나가요. false면 promote_deployment를 기다려요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "list_environments의 name."
    },
    "branch": {
      "type": [
        "string",
        "null"
      ],
      "description": "이 환경이 따라갈 브랜치. 정확한 이름(예: staging)이나 *로 끝나는 접두사(예: release/*). 비우거나 null이면 promote_deployment로만 받아요."
    },
    "auto_assign": {
      "type": "boolean",
      "description": "true(기본)면 빌드가 끝나는 대로 이 환경에 나가요. false면 promote_deployment를 기다려요."
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

remove_environment 환경 지우기

파괴적

직접 만든 환경을 지워요. 배포 기록은 남고, 환경의 주소·도메인 연결·환경 변수가 사라져요. 프로덕션은 지울 수 없어요. 사용자가 요청할 때만 쓰고 confirm에 환경 이름을 넣으세요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring예list_environments의 name.
confirmstring예환경 이름. name과 정확히 같아야 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "description": "list_environments의 name."
    },
    "confirm": {
      "type": "string",
      "description": "환경 이름. name과 정확히 같아야 해요."
    }
  },
  "required": [
    "ref",
    "name",
    "confirm"
  ],
  "additionalProperties": false
}

set_domain_environment 도메인을 환경에 연결

파괴적

확인된 도메인 하나가 어느 환경(production이나 직접 만든 환경)의 배포를 보여 줄지 정해요. 예: staging.example.com을 staging에. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
hostnamestring예list_environments의 domains[].hostname.
environmentstring예list_environments의 name.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "hostname": {
      "type": "string",
      "description": "list_environments의 domains[].hostname."
    },
    "environment": {
      "type": "string",
      "description": "list_environments의 name."
    }
  },
  "required": [
    "ref",
    "hostname",
    "environment"
  ],
  "additionalProperties": false
}

get_flag 기능 플래그 보기

읽기 전용

플래그 하나의 전부를 돌려줘요: 종류, 변형, 환경마다 켜졌는지·꺼졌을 때 값(off_variant)·기본으로 내보내는 것(fallthrough)·규칙(rules, 위에서부터 처음 맞는 것). 고칠 수 있는 환경 이름도 함께 와요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
keystring, max length 64예플래그 키.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "key": {
      "type": "string",
      "maxLength": 64,
      "description": "플래그 키."
    }
  },
  "required": [
    "ref",
    "key"
  ],
  "additionalProperties": false
}

create_flag 기능 플래그 만들기

추가만 함

플래그를 만들어요. 모든 환경에서 꺼진 채로 시작하고, boolean은 변형 on(true)·off(false)를 가져요. 키는 영문 소문자·숫자로 시작하고 끝나며 점·밑줄·하이픈을 넣어 64자까지예요. 프로젝트마다 500개까지이고 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
keystring, max length 64예플래그 키.
kindstring, boolean | string | number | json예
descriptionstring, max length 500아니요
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "key": {
      "type": "string",
      "maxLength": 64,
      "description": "플래그 키."
    },
    "kind": {
      "type": "string",
      "enum": [
        "boolean",
        "string",
        "number",
        "json"
      ]
    },
    "description": {
      "type": "string",
      "maxLength": 500
    }
  },
  "required": [
    "ref",
    "key",
    "kind"
  ],
  "additionalProperties": false
}

update_flag 기능 플래그 바꾸기

파괴적

설명과 변형을 바꿔요. variants는 전체 목록이고, 어느 환경이 쓰고 있는 변형은 지울 수 없어요. 값의 모양은 플래그 종류를 따라요. 빠진 항목은 그대로예요. 변형은 모든 환경에 나가니 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
keystring, max length 64예플래그 키.
descriptionstring, max length 500아니요
variantsarray<object>아니요예: [{"id": "control", "value": "blue"}, {"id": "test", "value": "green"}]
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "key": {
      "type": "string",
      "maxLength": 64,
      "description": "플래그 키."
    },
    "description": {
      "type": "string",
      "maxLength": 500
    },
    "variants": {
      "type": "array",
      "items": {
        "type": "object",
        "properties": {
          "id": {
            "type": "string"
          },
          "value": {}
        },
        "required": [
          "id",
          "value"
        ]
      },
      "description": "예: [{\"id\": \"control\", \"value\": \"blue\"}, {\"id\": \"test\", \"value\": \"green\"}]"
    }
  },
  "required": [
    "ref",
    "key"
  ],
  "additionalProperties": false
}

set_flag_environment 환경의 플래그 설정

파괴적

한 환경에서 켜졌는지(enabled), 꺼졌을 때 내보낼 변형(off_variant), 규칙에 안 맞을 때 내보낼 것(serve)을 정해요. 빠진 항목은 그대로예요. 프로덕션은 소유자·관리자, 그 밖의 환경은 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
keystring, max length 64예플래그 키.
environmentstring예환경: production, preview, development, 또는 list_environments의 직접 만든 환경.
enabledboolean아니요
off_variantstring아니요
serveobject아니요내보낼 것. 변형 하나는 {"variant": "on"}, 비율로 나누려면 {"rollout": [{"variant": "on", "weight": 20}, {"variant": "off", "weight": 80}], "bucket_by": "user.id"}(합 100).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "key": {
      "type": "string",
      "maxLength": 64,
      "description": "플래그 키."
    },
    "environment": {
      "type": "string",
      "description": "환경: production, preview, development, 또는 list_environments의 직접 만든 환경."
    },
    "enabled": {
      "type": "boolean"
    },
    "off_variant": {
      "type": "string"
    },
    "serve": {
      "type": "object",
      "description": "내보낼 것. 변형 하나는 {\"variant\": \"on\"}, 비율로 나누려면 {\"rollout\": [{\"variant\": \"on\", \"weight\": 20}, {\"variant\": \"off\", \"weight\": 80}], \"bucket_by\": \"user.id\"}(합 100).",
      "properties": {
        "variant": {
          "type": "string"
        },
        "rollout": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "variant": {
                "type": "string"
              },
              "weight": {
                "type": "number"
              }
            },
            "required": [
              "variant",
              "weight"
            ]
          }
        },
        "bucket_by": {
          "type": "string"
        }
      }
    }
  },
  "required": [
    "ref",
    "key",
    "environment"
  ],
  "additionalProperties": false
}

add_flag_rule 플래그 규칙 추가

파괴적

한 환경의 규칙 맨 아래에 규칙을 더해요. 조건이 모두 맞는 컨텍스트에 serve를 내보내요. 예: user.email이 @example.com으로 끝나면 on. 프로덕션은 소유자·관리자, 그 밖의 환경은 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
keystring, max length 64예플래그 키.
environmentstring예환경: production, preview, development, 또는 list_environments의 직접 만든 환경.
conditionsarray<object>, min items 1, max items 3예모두 맞아야 하는 조건 1~3개. attribute는 컨텍스트의 점 경로(예: user.email), values의 값에는 쉼표를 넣을 수 없어요. in_segment·not_in_segment는 values에 세그먼트 키.
serveobject예내보낼 것. 변형 하나는 {"variant": "on"}, 비율로 나누려면 {"rollout": [{"variant": "on", "weight": 20}, {"variant": "off", "weight": 80}], "bucket_by": "user.id"}(합 100).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "key": {
      "type": "string",
      "maxLength": 64,
      "description": "플래그 키."
    },
    "environment": {
      "type": "string",
      "description": "환경: production, preview, development, 또는 list_environments의 직접 만든 환경."
    },
    "conditions": {
      "type": "array",
      "minItems": 1,
      "maxItems": 3,
      "description": "모두 맞아야 하는 조건 1~3개. attribute는 컨텍스트의 점 경로(예: user.email), values의 값에는 쉼표를 넣을 수 없어요. in_segment·not_in_segment는 values에 세그먼트 키.",
      "items": {
        "type": "object",
        "properties": {
          "attribute": {
            "type": "string"
          },
          "op": {
            "type": "string",
            "enum": [
              "is",
              "is_not",
              "contains",
              "not_contains",
              "starts_with",
              "ends_with",
              "domain_is",
              "gt",
              "lt",
              "exists",
              "not_exists",
              "in_segment",
              "not_in_segment"
            ]
          },
          "values": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "op"
        ]
      }
    },
    "serve": {
      "type": "object",
      "description": "내보낼 것. 변형 하나는 {\"variant\": \"on\"}, 비율로 나누려면 {\"rollout\": [{\"variant\": \"on\", \"weight\": 20}, {\"variant\": \"off\", \"weight\": 80}], \"bucket_by\": \"user.id\"}(합 100).",
      "properties": {
        "variant": {
          "type": "string"
        },
        "rollout": {
          "type": "array",
          "items": {
            "type": "object",
            "properties": {
              "variant": {
                "type": "string"
              },
              "weight": {
                "type": "number"
              }
            },
            "required": [
              "variant",
              "weight"
            ]
          }
        },
        "bucket_by": {
          "type": "string"
        }
      }
    }
  },
  "required": [
    "ref",
    "key",
    "environment",
    "conditions",
    "serve"
  ],
  "additionalProperties": false
}

move_flag_rule 플래그 규칙 순서 바꾸기

파괴적

규칙을 한 칸 위나 아래로 옮겨요. 위의 규칙이 먼저 맞아요. 프로덕션은 소유자·관리자, 그 밖의 환경은 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
keystring, max length 64예플래그 키.
environmentstring예환경: production, preview, development, 또는 list_environments의 직접 만든 환경.
rule_idstring예get_flag의 environments.<환경>.rules[].id.
directionstring, up | down예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "key": {
      "type": "string",
      "maxLength": 64,
      "description": "플래그 키."
    },
    "environment": {
      "type": "string",
      "description": "환경: production, preview, development, 또는 list_environments의 직접 만든 환경."
    },
    "rule_id": {
      "type": "string",
      "description": "get_flag의 environments.<환경>.rules[].id."
    },
    "direction": {
      "type": "string",
      "enum": [
        "up",
        "down"
      ]
    }
  },
  "required": [
    "ref",
    "key",
    "environment",
    "rule_id",
    "direction"
  ],
  "additionalProperties": false
}

remove_flag_rule 플래그 규칙 삭제

파괴적

한 환경의 규칙 하나를 지워요. 프로덕션은 소유자·관리자, 그 밖의 환경은 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
keystring, max length 64예플래그 키.
environmentstring예환경: production, preview, development, 또는 list_environments의 직접 만든 환경.
rule_idstring예get_flag의 environments.<환경>.rules[].id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "key": {
      "type": "string",
      "maxLength": 64,
      "description": "플래그 키."
    },
    "environment": {
      "type": "string",
      "description": "환경: production, preview, development, 또는 list_environments의 직접 만든 환경."
    },
    "rule_id": {
      "type": "string",
      "description": "get_flag의 environments.<환경>.rules[].id."
    }
  },
  "required": [
    "ref",
    "key",
    "environment",
    "rule_id"
  ],
  "additionalProperties": false
}

set_flag_archived 기능 플래그 보관

파괴적

다 쓴 플래그를 보관하거나(archived: true) 되살려요. 보관한 플래그는 모든 환경에서 꺼진 값을 내보내요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
keystring, max length 64예플래그 키.
archivedboolean예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "key": {
      "type": "string",
      "maxLength": 64,
      "description": "플래그 키."
    },
    "archived": {
      "type": "boolean"
    }
  },
  "required": [
    "ref",
    "key",
    "archived"
  ],
  "additionalProperties": false
}

list_flag_segments 플래그 세그먼트 목록

읽기 전용

여러 플래그 규칙이 함께 쓰는 사용자 묶음(세그먼트)을 돌려줘요: 조건, 언제나 넣는 id(included), 언제나 빼는 id(excluded), 쓰는 플래그(used_by).

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_flag_segment 플래그 세그먼트 만들기

추가만 함

빈 세그먼트를 만들어요. update_flag_segment로 조건과 목록을 넣고, 규칙의 조건에 in_segment로 써요. 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
keystring, max length 64예세그먼트 키. 플래그 키와 같은 규칙이에요.
descriptionstring, max length 500아니요
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "key": {
      "type": "string",
      "maxLength": 64,
      "description": "세그먼트 키. 플래그 키와 같은 규칙이에요."
    },
    "description": {
      "type": "string",
      "maxLength": 500
    }
  },
  "required": [
    "ref",
    "key"
  ],
  "additionalProperties": false
}

update_flag_segment 플래그 세그먼트 바꾸기

파괴적

세그먼트의 조건(모두 맞아야 함, 1~3개), 언제나 넣는 id, 언제나 빼는 id(각각 1,000개까지), 설명을 바꿔요. 조건과 included가 둘 다 비면 안 돼요. 빠진 항목은 그대로예요. 세그먼트는 프로덕션 규칙에도 쓰이니 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
keystring, max length 64예list_flag_segments의 key.
conditionsarray<object>, min items 0, max items 3아니요모두 맞아야 하는 조건 1~3개. attribute는 컨텍스트의 점 경로(예: user.email), values의 값에는 쉼표를 넣을 수 없어요. in_segment·not_in_segment는 values에 세그먼트 키.
includedarray<string>아니요
excludedarray<string>아니요
descriptionstring, max length 500아니요
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "key": {
      "type": "string",
      "maxLength": 64,
      "description": "list_flag_segments의 key."
    },
    "conditions": {
      "type": "array",
      "minItems": 0,
      "maxItems": 3,
      "description": "모두 맞아야 하는 조건 1~3개. attribute는 컨텍스트의 점 경로(예: user.email), values의 값에는 쉼표를 넣을 수 없어요. in_segment·not_in_segment는 values에 세그먼트 키.",
      "items": {
        "type": "object",
        "properties": {
          "attribute": {
            "type": "string"
          },
          "op": {
            "type": "string",
            "enum": [
              "is",
              "is_not",
              "contains",
              "not_contains",
              "starts_with",
              "ends_with",
              "domain_is",
              "gt",
              "lt",
              "exists",
              "not_exists",
              "in_segment",
              "not_in_segment"
            ]
          },
          "values": {
            "type": "array",
            "items": {
              "type": "string"
            }
          }
        },
        "required": [
          "op"
        ]
      }
    },
    "included": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "excluded": {
      "type": "array",
      "items": {
        "type": "string"
      }
    },
    "description": {
      "type": "string",
      "maxLength": 500
    }
  },
  "required": [
    "ref",
    "key"
  ],
  "additionalProperties": false
}

remove_flag_segment 플래그 세그먼트 삭제

파괴적

세그먼트를 지워요. 규칙이 쓰고 있으면 지울 수 없어요(list_flag_segments의 used_by). 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
keystring, max length 64예list_flag_segments의 key.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "key": {
      "type": "string",
      "maxLength": 64,
      "description": "list_flag_segments의 key."
    }
  },
  "required": [
    "ref",
    "key"
  ],
  "additionalProperties": false
}

list_flag_sdk_keys 플래그 SDK 키 목록

읽기 전용

/flags/v1/evaluate를 부르는 키를 돌려줘요: 환경, 종류(server·client), 이름, 앞부분, 마지막 사용. 값은 만들 때만 보여요. 개발자 이상이 볼 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_flag_sdk_key 플래그 SDK 키 만들기

추가만 함

한 환경의 플래그를 읽는 키를 만들어요. server는 서버에만 두고, client는 브라우저에 넣어도 돼요. 값은 이 응답에서만 보여요. 프로젝트마다 50개까지예요. 프로덕션 키는 소유자·관리자, 그 밖의 환경은 개발자 이상이 만들어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
environmentstring예환경: production, preview, development, 또는 list_environments의 직접 만든 환경.
kindstring, server | client예
labelstring, max length 60아니요
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "environment": {
      "type": "string",
      "description": "환경: production, preview, development, 또는 list_environments의 직접 만든 환경."
    },
    "kind": {
      "type": "string",
      "enum": [
        "server",
        "client"
      ]
    },
    "label": {
      "type": "string",
      "maxLength": 60
    }
  },
  "required": [
    "ref",
    "environment",
    "kind"
  ],
  "additionalProperties": false
}

revoke_flag_sdk_key 플래그 SDK 키 폐기

파괴적

SDK 키를 폐기해요. 그 키로 오는 요청은 바로 막혀요. 프로덕션 키는 소유자·관리자, 그 밖의 환경은 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_flag_sdk_keys의 id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_flag_sdk_keys의 id."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

list_alert_rules 경보 규칙 목록

읽기 전용

경보 규칙과 지금 상태(state: ok·firing, last_value, last_fired_at)를 돌려줘요. 경보는 조직의 알림 채널과 메일로 가요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_alert_rule 경보 규칙 만들기

추가만 함

1분마다 값을 보고 threshold를 넘으면 알려요. kind: error_rate(5xx 비율 %), p95(p95 응답 시간 ms), function_errors(함수 5xx 수), usage(요금제 한도 사용률 %), firewall_blocks(방화벽이 막거나 확인한 요청 수). target: error_rate·p95는 서비스(all, api, auth, functions, realtime, site, server), function_errors는 함수 이름, usage는 한도 항목, firewall_blocks는 방화벽 규칙 id. 비우면 전체예요. 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring, min length 1, max length 80예
kindstring, error_rate | p95 | function_errors | usage | firewall_blocks예
targetstring아니요서비스(all, api, auth, functions, realtime, site, server), 함수 이름, 한도 항목, 규칙 id. 비우면 전체.
thresholdnumber, min 0예이 값을 넘으면 발생해요. 비율은 0~1000.
window_minutesinteger, min 1, max 1440예이 기간(분) 동안의 값을 봐요.
severitystring, warning | critical아니요기본 warning.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80
    },
    "kind": {
      "type": "string",
      "enum": [
        "error_rate",
        "p95",
        "function_errors",
        "usage",
        "firewall_blocks"
      ]
    },
    "target": {
      "type": [
        "string",
        "null"
      ],
      "description": "서비스(all, api, auth, functions, realtime, site, server), 함수 이름, 한도 항목, 규칙 id. 비우면 전체."
    },
    "threshold": {
      "type": "number",
      "minimum": 0,
      "description": "이 값을 넘으면 발생해요. 비율은 0~1000."
    },
    "window_minutes": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1440,
      "description": "이 기간(분) 동안의 값을 봐요."
    },
    "severity": {
      "type": "string",
      "enum": [
        "warning",
        "critical"
      ],
      "description": "기본 warning."
    }
  },
  "required": [
    "ref",
    "name",
    "kind",
    "threshold",
    "window_minutes"
  ],
  "additionalProperties": false
}

set_alert_rule_enabled 경보 규칙 켜기·끄기

파괴적

경보 규칙을 멈추거나 다시 켜요. 끄면 상태가 ok로 돌아가요. 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_alert_rules의 id.
enabledboolean예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_alert_rules의 id."
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "required": [
    "ref",
    "id",
    "enabled"
  ],
  "additionalProperties": false
}

remove_alert_rule 경보 규칙 삭제

파괴적

경보 규칙을 지워요. 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_alert_rules의 id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_alert_rules의 id."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

list_project_webhooks 프로젝트 웹훅 목록

읽기 전용

프로젝트의 이벤트(배포 시작·성공·실패·승격, 환경 변수, 도메인, 백업, 가입 등)를 보내는 웹훅과 서명 키(signing_secret), 고를 수 있는 이벤트(events)를 돌려줘요. 데이터베이스의 줄 변경은 list_db_webhooks예요. 개발자 이상이 볼 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_project_webhook 프로젝트 웹훅 만들기

추가만 함 외부로 나감

프로젝트 이벤트를 공개 https 주소로 보내는 웹훅을 만들어요(Make, Zapier, 슬랙 같은 외부 자동화). events를 비우면 모든 이벤트이고, <묶음>.*(예: deployment.*)는 그 묶음 전부예요. 서명 키는 응답의 signing_secret이에요. 프로젝트마다 10개까지이고 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring, min length 1, max length 60예
urlstring예공개된 https 주소. 사설·내부 주소는 안 돼요.
eventsarray<string>아니요예: ["deployment.ready", "deployment.error"]. 묶음: deployment.*, project.*, env.*, domain.*, backup.*, auth.*.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60
    },
    "url": {
      "type": "string",
      "description": "공개된 https 주소. 사설·내부 주소는 안 돼요."
    },
    "events": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "예: [\"deployment.ready\", \"deployment.error\"]. 묶음: deployment.*, project.*, env.*, domain.*, backup.*, auth.*."
    }
  },
  "required": [
    "ref",
    "name",
    "url"
  ],
  "additionalProperties": false
}

set_project_webhook_enabled 프로젝트 웹훅 켜기·끄기

파괴적

웹훅을 멈추거나 다시 보내게 해요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_project_webhooks의 id.
enabledboolean예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_project_webhooks의 id."
    },
    "enabled": {
      "type": "boolean"
    }
  },
  "required": [
    "ref",
    "id",
    "enabled"
  ],
  "additionalProperties": false
}

test_project_webhook 프로젝트 웹훅 시험

추가만 함 외부로 나감

서명한 ping 이벤트를 하나 보내요. 결과는 list_project_webhook_deliveries에 나와요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_project_webhooks의 id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_project_webhooks의 id."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

list_project_webhook_deliveries 프로젝트 웹훅 전달 기록

읽기 전용

웹훅이 보낸 최근 100건: 이벤트, 상태(pending·sent·failed), 시도 횟수, 실패 이유. 개발자 이상이 볼 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_project_webhooks의 id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_project_webhooks의 id."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

retry_project_webhook_delivery 프로젝트 웹훅 다시 보내기

추가만 함 외부로 나감

끝난 전달 하나를 새 전달로 다시 보내요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
delivery_idinteger, min 1예list_project_webhook_deliveries의 id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "delivery_id": {
      "type": "integer",
      "minimum": 1,
      "description": "list_project_webhook_deliveries의 id."
    }
  },
  "required": [
    "ref",
    "delivery_id"
  ],
  "additionalProperties": false
}

remove_project_webhook 프로젝트 웹훅 삭제

파괴적

웹훅을 지워요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_project_webhooks의 id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_project_webhooks의 id."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

get_firewall 방화벽 규칙 보기

읽기 전용

방화벽의 초안(draft: 규칙과 관리 규칙), 게시된 버전(published_version, published), 초안에서 바뀐 것(changes), 공격 챌린지 모드, 버전 기록을 돌려줘요. 규칙은 위에서부터 차례로 보고, 요청을 끝내는 동작(deny, challenge, redirect, bypass, 넘은 rate_limit)이 처음 맞으면 멈춰요. IP 차단·허용 목록은 get_edge예요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

save_firewall_rule 방화벽 규칙 저장

파괴적

규칙 하나를 초안에 저장해요. id를 빼면 맨 끝에 새로 더하고, id를 주면 그 규칙을 바꿔요. 게이트웨이가 컴파일할 수 없는 규칙(느린 정규식, 잘못된 CIDR 등)은 콘솔과 같은 말로 거절해요. publish_firewall로 게시해야 적용돼요. 프로젝트마다 100개까지이고 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring아니요바꿀 규칙의 id(get_firewall의 draft.rules[].id). 빼면 새 규칙이에요.
namestring, min length 1, max length 80예규칙 이름. 80자까지.
enabledboolean아니요기본 true. false면 저장만 하고 적용하지 않아요.
groupsarray<array>, min items 1, max items 10예조건 묶음 1~10개. 묶음끼리는 OR, 묶음 안의 조건(10개까지)은 AND예요. 조건은 {field, op, value, key?, negate?}: field는 path, method, host, header, query, user_agent, ip, country, op는 eq, prefix, suffix, contains, regex, in, exists. path·host·user_agent는 eq·prefix·suffix·contains·regex, method·ip·country는 in(쉼표로 여러 값), header·query는 key에 이름을 넣고 exists도 돼요. 예: [[{"field": "path", "op": "prefix", "value": "/admin"}, {"field": "ip", "op": "in", "value": "203.0.113.0/24", "negate": true}]]
actionobject예맞으면 할 일. type: log(기록하고 다음 규칙으로), deny(403), challenge(브라우저 확인), bypass(남은 규칙·관리 규칙·공격 모드를 건너뜀), redirect(location, status 301·302·307·308), rate_limit(limit 1~100000, window_seconds 1~3600, key ip 또는 header와 header 이름, then deny·challenge·log). 예: {"type": "rate_limit", "limit": 100, "window_seconds": 60, "key": "ip", "then": "deny"}
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "바꿀 규칙의 id(get_firewall의 draft.rules[].id). 빼면 새 규칙이에요."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "description": "규칙 이름. 80자까지."
    },
    "enabled": {
      "type": "boolean",
      "description": "기본 true. false면 저장만 하고 적용하지 않아요."
    },
    "groups": {
      "type": "array",
      "minItems": 1,
      "maxItems": 10,
      "description": "조건 묶음 1~10개. 묶음끼리는 OR, 묶음 안의 조건(10개까지)은 AND예요. 조건은 {field, op, value, key?, negate?}: field는 path, method, host, header, query, user_agent, ip, country, op는 eq, prefix, suffix, contains, regex, in, exists. path·host·user_agent는 eq·prefix·suffix·contains·regex, method·ip·country는 in(쉼표로 여러 값), header·query는 key에 이름을 넣고 exists도 돼요. 예: [[{\"field\": \"path\", \"op\": \"prefix\", \"value\": \"/admin\"}, {\"field\": \"ip\", \"op\": \"in\", \"value\": \"203.0.113.0/24\", \"negate\": true}]]",
      "items": {
        "type": "array",
        "items": {
          "type": "object",
          "properties": {
            "field": {
              "type": "string",
              "enum": [
                "path",
                "method",
                "host",
                "header",
                "query",
                "user_agent",
                "ip",
                "country"
              ]
            },
            "op": {
              "type": "string",
              "enum": [
                "eq",
                "prefix",
                "suffix",
                "contains",
                "regex",
                "in",
                "exists"
              ]
            },
            "value": {
              "type": "string"
            },
            "key": {
              "type": "string"
            },
            "negate": {
              "type": "boolean"
            }
          },
          "required": [
            "field",
            "op"
          ]
        }
      }
    },
    "action": {
      "type": "object",
      "description": "맞으면 할 일. type: log(기록하고 다음 규칙으로), deny(403), challenge(브라우저 확인), bypass(남은 규칙·관리 규칙·공격 모드를 건너뜀), redirect(location, status 301·302·307·308), rate_limit(limit 1~100000, window_seconds 1~3600, key ip 또는 header와 header 이름, then deny·challenge·log). 예: {\"type\": \"rate_limit\", \"limit\": 100, \"window_seconds\": 60, \"key\": \"ip\", \"then\": \"deny\"}",
      "properties": {
        "type": {
          "type": "string",
          "enum": [
            "log",
            "deny",
            "challenge",
            "bypass",
            "redirect",
            "rate_limit"
          ]
        },
        "location": {
          "type": "string"
        },
        "status": {
          "type": "integer",
          "enum": [
            301,
            302,
            307,
            308
          ]
        },
        "limit": {
          "type": "integer",
          "minimum": 1,
          "maximum": 100000
        },
        "window_seconds": {
          "type": "integer",
          "minimum": 1,
          "maximum": 3600
        },
        "key": {
          "type": "string",
          "enum": [
            "ip",
            "header"
          ]
        },
        "header": {
          "type": "string"
        },
        "then": {
          "type": "string",
          "enum": [
            "deny",
            "challenge",
            "log"
          ]
        }
      },
      "required": [
        "type"
      ]
    }
  },
  "required": [
    "ref",
    "name",
    "groups",
    "action"
  ],
  "additionalProperties": false
}

move_firewall_rule 방화벽 규칙 순서 바꾸기

파괴적

초안에서 규칙을 한 칸 위나 아래로 옮겨요. 규칙은 위에서부터 봐요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예get_firewall의 draft.rules[].id.
directionstring, up | down예up이면 한 칸 위로, down이면 아래로.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "get_firewall의 draft.rules[].id."
    },
    "direction": {
      "type": "string",
      "enum": [
        "up",
        "down"
      ],
      "description": "up이면 한 칸 위로, down이면 아래로."
    }
  },
  "required": [
    "ref",
    "id",
    "direction"
  ],
  "additionalProperties": false
}

set_firewall_rule_enabled 방화벽 규칙 켜기·끄기

파괴적

초안에서 규칙을 켜거나 꺼요. 게시해야 적용돼요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예get_firewall의 draft.rules[].id.
enabledboolean예true면 켜고 false면 꺼요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "get_firewall의 draft.rules[].id."
    },
    "enabled": {
      "type": "boolean",
      "description": "true면 켜고 false면 꺼요."
    }
  },
  "required": [
    "ref",
    "id",
    "enabled"
  ],
  "additionalProperties": false
}

remove_firewall_rule 방화벽 규칙 삭제

파괴적

초안에서 규칙을 지워요. 게시하기 전에는 reset_firewall_draft로 되돌릴 수 있어요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예get_firewall의 draft.rules[].id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "get_firewall의 draft.rules[].id."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

set_firewall_managed 봇·관리 규칙

파괴적

규칙 없이 막는 관리 규칙의 모드(off, log, deny)를 초안에 정해요. bots는 SEO 크롤러·스크레이퍼·공격 도구, ai_bots는 GPTBot·ClaudeBot 같은 AI 학습 크롤러, ai_search_bots는 ChatGPT 검색·Perplexity 같은 AI 검색·답변 봇(막으면 AI 답변에서 사이트가 빠져요), rulesets는 공격 패턴(sensitive_files, wordpress, traversal, sqli, xss, shell)이에요. 빠진 항목은 그대로이고, 게시해야 적용돼요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
botsstring, off | log | deny아니요알려진 봇. off, log(기록만), deny.
ai_botsstring, off | log | deny아니요AI 학습 크롤러. off, log(기록만), deny.
ai_search_botsstring, off | log | deny아니요AI 검색·답변 봇. deny면 ChatGPT 검색·Perplexity 답변에서 사이트가 빠져요. off, log(기록만), deny.
rulesetsobject아니요공격 패턴마다의 모드. 예: {"sqli": "deny", "wordpress": "log"}. 이름: sensitive_files, wordpress, traversal, sqli, xss, shell.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "bots": {
      "type": "string",
      "enum": [
        "off",
        "log",
        "deny"
      ],
      "description": "알려진 봇. off, log(기록만), deny."
    },
    "ai_bots": {
      "type": "string",
      "enum": [
        "off",
        "log",
        "deny"
      ],
      "description": "AI 학습 크롤러. off, log(기록만), deny."
    },
    "ai_search_bots": {
      "type": "string",
      "enum": [
        "off",
        "log",
        "deny"
      ],
      "description": "AI 검색·답변 봇. deny면 ChatGPT 검색·Perplexity 답변에서 사이트가 빠져요. off, log(기록만), deny."
    },
    "rulesets": {
      "type": "object",
      "properties": {
        "sensitive_files": {
          "type": "string",
          "enum": [
            "off",
            "log",
            "deny"
          ]
        },
        "wordpress": {
          "type": "string",
          "enum": [
            "off",
            "log",
            "deny"
          ]
        },
        "traversal": {
          "type": "string",
          "enum": [
            "off",
            "log",
            "deny"
          ]
        },
        "sqli": {
          "type": "string",
          "enum": [
            "off",
            "log",
            "deny"
          ]
        },
        "xss": {
          "type": "string",
          "enum": [
            "off",
            "log",
            "deny"
          ]
        },
        "shell": {
          "type": "string",
          "enum": [
            "off",
            "log",
            "deny"
          ]
        }
      },
      "additionalProperties": false,
      "description": "공격 패턴마다의 모드. 예: {\"sqli\": \"deny\", \"wordpress\": \"log\"}. 이름: sensitive_files, wordpress, traversal, sqli, xss, shell."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

publish_firewall 방화벽 게시

파괴적

초안을 새 버전으로 게시해요. 몇 초 안에 모든 서버가 이 규칙으로 요청을 막거나 통과시켜요. 먼저 get_firewall의 changes로 바뀐 것을 확인하세요. 잘못 게시했으면 restore_firewall_version으로 이전 버전을 불러와 다시 게시해요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
notestring, max length 200아니요무엇을 왜 바꿨는지. 버전 기록에 남아요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "note": {
      "type": "string",
      "maxLength": 200,
      "description": "무엇을 왜 바꿨는지. 버전 기록에 남아요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

reset_firewall_draft 방화벽 초안 버리기

파괴적

게시하지 않은 초안의 변경을 모두 버리고 적용 중인 규칙으로 되돌려요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

restore_firewall_version 방화벽 이전 버전 불러오기

파괴적

게시했던 버전을 초안으로 불러와요. 지금 초안은 덮어써지고, publish_firewall로 게시해야 적용돼요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
versioninteger, min 1예get_firewall의 versions[].version.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "version": {
      "type": "integer",
      "minimum": 1,
      "description": "get_firewall의 versions[].version."
    }
  },
  "required": [
    "ref",
    "version"
  ],
  "additionalProperties": false
}

set_attack_mode 공격 챌린지 모드

파괴적

켜면 바로 모든 방문자에게 브라우저 확인을 받아요(게시 없이 즉시). DDoS나 대량 스크래핑을 받을 때 써요. API를 부르는 프로그램도 막히니 공격이 끝나면 끄세요. hours를 주면 그 시간 뒤 저절로 꺼져요(720시간까지). 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
enabledboolean예true면 켜고 false면 꺼요.
hoursstring, min 0, max 720아니요켜 둘 시간. 빼거나 null이면 끌 때까지.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "enabled": {
      "type": "boolean",
      "description": "true면 켜고 false면 꺼요."
    },
    "hours": {
      "type": [
        "number",
        "null"
      ],
      "minimum": 0,
      "maximum": 720,
      "description": "켜 둘 시간. 빼거나 null이면 끌 때까지."
    }
  },
  "required": [
    "ref",
    "enabled"
  ],
  "additionalProperties": false
}

get_bulk_redirects 대량 리디렉트 보기

읽기 전용

올린 대량 리디렉트 버전(sets, 적용 중인 것은 active)과, 고른 버전(빼면 적용 중인 것)의 처음 100줄을 돌려줘요. 한두 개의 규칙은 get_routing_rules예요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
set_idstring아니요get_bulk_redirects의 sets[].id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "set_id": {
      "type": [
        "integer",
        "null"
      ],
      "description": "get_bulk_redirects의 sets[].id."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

upload_bulk_redirects 대량 리디렉트 올리기

파괴적

CSV로 리디렉트를 새 버전으로 올려요(1만 줄, 5MB까지). 한 줄에 원래 주소,보낼 주소[,상태 코드(기본 308)[,쿼리 유지 true|false]]. 원래 주소는 /경로나 도메인/경로, 보낼 주소는 /경로나 http(s) 주소예요. activate가 true면 바로 적용하고, 아니면 activate_bulk_redirects로 적용해요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
csvstring예CSV 내용. 예: "/old,/new,301\n/blog/a,https://blog.example.com/a"
notestring, max length 200아니요버전 메모.
activateboolean아니요true면 올리자마자 적용해요. 기본 false.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "csv": {
      "type": "string",
      "description": "CSV 내용. 예: \"/old,/new,301\\n/blog/a,https://blog.example.com/a\""
    },
    "note": {
      "type": "string",
      "maxLength": 200,
      "description": "버전 메모."
    },
    "activate": {
      "type": "boolean",
      "description": "true면 올리자마자 적용해요. 기본 false."
    }
  },
  "required": [
    "ref",
    "csv"
  ],
  "additionalProperties": false
}

activate_bulk_redirects 대량 리디렉트 적용

파괴적

올린 버전 하나를 적용하거나(set_id), null로 대량 리디렉트를 꺼요. 1분 안에 모든 서버에 적용돼요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
set_idstring예get_bulk_redirects의 sets[].id. null이면 꺼요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "set_id": {
      "type": [
        "integer",
        "null"
      ],
      "description": "get_bulk_redirects의 sets[].id. null이면 꺼요."
    }
  },
  "required": [
    "ref",
    "set_id"
  ],
  "additionalProperties": false
}

get_skew_protection 스큐 보호 보기

읽기 전용

스큐 보호(새 배포가 나가도 이미 열린 탭은 처음 배포의 스크립트와 데이터를 받음)가 켜졌는지와 최대 유지 기간(초)을 돌려줘요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_skew_protection 스큐 보호 바꾸기

파괴적

스큐 보호를 켜거나 끄고 최대 유지 기간을 정해요. 그보다 오래된 배포에는 고정하지 않아요. 빠진 항목은 그대로예요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
enabledboolean아니요true면 켜고 false면 꺼요.
max_age_secondsinteger, 300 | 1800 | 3600 | 21600 | 43200 | 86400 | 259200 | 604800아니요최대 유지 기간(초): 300, 1800, 3600, 21600, 43200, 86400, 259200, 604800.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "enabled": {
      "type": "boolean",
      "description": "true면 켜고 false면 꺼요."
    },
    "max_age_seconds": {
      "type": "integer",
      "enum": [
        300,
        1800,
        3600,
        21600,
        43200,
        86400,
        259200,
        604800
      ],
      "description": "최대 유지 기간(초): 300, 1800, 3600, 21600, 43200, 86400, 259200, 604800."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

list_remote_cache_tokens 원격 캐시 토큰 목록

읽기 전용

Turborepo 원격 캐시 토큰(이름, 만든 시각, 마지막 사용)과 turbo에 넣을 api, team을 돌려줘요. 토큰 값은 만들 때 한 번만 보여요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_remote_cache_token 원격 캐시 토큰 만들기

추가만 함

CI나 터미널의 turbo가 이 프로젝트의 원격 캐시를 쓰는 토큰을 만들어요. 값과 넣을 환경 변수(env)는 이 응답에서만 보여요. 20개까지이고 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring, min length 1, max length 80예어디에 쓰는 토큰인지. 예: github-actions.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 80,
      "description": "어디에 쓰는 토큰인지. 예: github-actions."
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

revoke_remote_cache_token 원격 캐시 토큰 폐기

파괴적

토큰을 없애요. 그 토큰을 쓰는 turbo는 바로 캐시를 못 써요. 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_remote_cache_tokens의 id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_remote_cache_tokens의 id."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

get_build_settings 빌드 설정 더 보기

읽기 전용

앱마다 update_app 밖의 빌드 설정을 돌려줘요: 개발 명령(dev_command), Node.js 버전, 빌드 건너뛰기(ignored_build_step), 빌드 머신, 프로덕션 먼저(production_first), 필요한 검사(required_checks), Git LFS, 서명된 커밋만(verified_commits). 시스템 환경 변수를 넣는지(expose_system_env)도 함께 와요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_build_dev_settings 개발 명령·Node.js 버전

파괴적

앱의 개발 명령(oneend dev가 실행)과 빌드에 쓸 Node.js 메이저 버전을 정해요. 프레임워크와 빌드·설치·출력은 update_app이에요. 빠진 항목은 그대로, null은 자동 감지예요. 다음 빌드부터 적용되고 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
appstring예list_apps의 name.
dev_commandstring, max length 1024아니요한 줄 명령. 예: npm run dev. null이면 프리셋 기본값.
node_versionstring, 18 | 20 | 22 | 24 | null아니요Node.js 메이저 버전: 18, 20, 22, 24. null이면 package.json의 engines나 기본값.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "app": {
      "type": "string",
      "description": "list_apps의 name."
    },
    "dev_command": {
      "type": [
        "string",
        "null"
      ],
      "maxLength": 1024,
      "description": "한 줄 명령. 예: npm run dev. null이면 프리셋 기본값."
    },
    "node_version": {
      "type": [
        "integer",
        "null"
      ],
      "enum": [
        18,
        20,
        22,
        24,
        null
      ],
      "description": "Node.js 메이저 버전: 18, 20, 22, 24. null이면 package.json의 engines나 기본값."
    }
  },
  "required": [
    "ref",
    "app"
  ],
  "additionalProperties": false
}

set_ignored_build_step 빌드 건너뛰기

파괴적

어떤 push를 빌드할지 정해요. mode: automatic(기본, 모노레포에서 다른 앱 폴더만 바뀐 push는 건너뜀), every(모든 push), production(프로덕션만), preview(프리뷰만), folder(folder 아래 파일이 바뀌었을 때만), command(command가 0으로 끝나면 건너뜀). 건너뛴 push도 배포 기록에 남아요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
appstring예list_apps의 name.
modestring, automatic | every | production | preview | folder | command예건너뛰는 방식.
folderstring아니요mode가 folder일 때 살펴볼 폴더(저장소 안의 상대 경로, 예: apps/web).
commandstring, max length 1024아니요mode가 command일 때 빌드 환경에서 실행할 한 줄 명령. 0으로 끝나면 건너뛰어요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "app": {
      "type": "string",
      "description": "list_apps의 name."
    },
    "mode": {
      "type": "string",
      "enum": [
        "automatic",
        "every",
        "production",
        "preview",
        "folder",
        "command"
      ],
      "description": "건너뛰는 방식."
    },
    "folder": {
      "type": "string",
      "description": "mode가 folder일 때 살펴볼 폴더(저장소 안의 상대 경로, 예: apps/web)."
    },
    "command": {
      "type": "string",
      "maxLength": 1024,
      "description": "mode가 command일 때 빌드 환경에서 실행할 한 줄 명령. 0으로 끝나면 건너뛰어요."
    }
  },
  "required": [
    "ref",
    "app",
    "mode"
  ],
  "additionalProperties": false
}

set_production_first 프로덕션 빌드 먼저

파괴적

대기열에서 프로덕션 빌드를 프리뷰보다 먼저 돌릴지 정해요. 빌드 머신 크기는 update_app의 build_machine이에요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
appstring예list_apps의 name.
enabledboolean예true면 프로덕션 먼저(기본), false면 들어온 순서.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "app": {
      "type": "string",
      "description": "list_apps의 name."
    },
    "enabled": {
      "type": "boolean",
      "description": "true면 프로덕션 먼저(기본), false면 들어온 순서."
    }
  },
  "required": [
    "ref",
    "app",
    "enabled"
  ],
  "additionalProperties": false
}

set_git_checks 필요한 검사·Git LFS

파괴적

프로덕션으로 나가기 전에 통과해야 할 GitHub 검사 이름(required_checks, 20개까지), Git LFS 파일을 받을지, 서명된 커밋만 빌드할지 정해요. 필요한 검사와 서명된 커밋은 GitHub 저장소에만 돼요. 빠진 항목은 그대로예요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
appstring예list_apps의 name.
required_checksarray<string>, max items 20아니요GitHub 검사 이름. 예: ["test", "lint"]. []이면 모두 지워요.
git_lfsboolean아니요true면 빌드할 때 Git LFS 파일을 받아요.
verified_commitsboolean아니요true면 GitHub가 확인한 서명 커밋만 빌드해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "app": {
      "type": "string",
      "description": "list_apps의 name."
    },
    "required_checks": {
      "type": "array",
      "items": {
        "type": "string",
        "maxLength": 200
      },
      "maxItems": 20,
      "description": "GitHub 검사 이름. 예: [\"test\", \"lint\"]. []이면 모두 지워요."
    },
    "git_lfs": {
      "type": "boolean",
      "description": "true면 빌드할 때 Git LFS 파일을 받아요."
    },
    "verified_commits": {
      "type": "boolean",
      "description": "true면 GitHub가 확인한 서명 커밋만 빌드해요."
    }
  },
  "required": [
    "ref",
    "app"
  ],
  "additionalProperties": false
}

set_expose_system_env 시스템 환경 변수

파괴적

빌드와 서버에 BLACKWALL_ENV, BLACKWALL_URL, BLACKWALL_GIT_COMMIT_SHA 같은 시스템 환경 변수를 넣을지 정해요. 지금 값은 list_environments의 expose_system_env예요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
enabledboolean예true면 넣고 false면 빼요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "enabled": {
      "type": "boolean",
      "description": "true면 넣고 false면 빼요."
    }
  },
  "required": [
    "ref",
    "enabled"
  ],
  "additionalProperties": false
}

set_directory_listing 폴더 목록 보이기

파괴적

정적 사이트에서 index.html이 없는 폴더를 열면 파일 목록을 보여 줄지(true), 404로 답할지(false) 정해요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
enabledboolean예true면 목록을 보여 줘요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "enabled": {
      "type": "boolean",
      "description": "true면 목록을 보여 줘요."
    }
  },
  "required": [
    "ref",
    "enabled"
  ],
  "additionalProperties": false
}

get_deployment_security 배포 보안 보기

읽기 전용

빌드 로그와 배포 출력(소스)을 누가 보는지(members, writers, admins), 포크의 PR을 승인 없이 빌드하지 않는지(fork_protection), OIDC 토큰을 주는지와 발급자 방식을 돌려줘요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_deployment_security 배포 보안 바꾸기

파괴적

빌드 로그(logs_access)와 배포 출력(source_access)을 볼 수 있는 사람(members: 모든 멤버, writers: 개발자 이상, admins: 소유자·관리자), 포크 보호, OIDC(빌드와 서버에 클라우드가 믿는 토큰을 줌, oidc_issuer_mode team 또는 global)를 정해요. 빠진 항목은 그대로예요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
logs_accessstring, members | writers | admins아니요빌드 로그를 볼 수 있는 사람.
source_accessstring, members | writers | admins아니요배포 출력 파일을 볼 수 있는 사람.
fork_protectionboolean아니요true면 포크에서 온 PR은 승인 전까지 빌드하지 않아요(환경 변수가 새지 않게).
oidc_enabledboolean아니요true면 빌드와 서버에 OIDC 토큰을 줘요.
oidc_issuer_modestring, team | global아니요발급자. team은 조직 전용, global은 플랫폼 공용 발급자예요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "logs_access": {
      "type": "string",
      "enum": [
        "members",
        "writers",
        "admins"
      ],
      "description": "빌드 로그를 볼 수 있는 사람."
    },
    "source_access": {
      "type": "string",
      "enum": [
        "members",
        "writers",
        "admins"
      ],
      "description": "배포 출력 파일을 볼 수 있는 사람."
    },
    "fork_protection": {
      "type": "boolean",
      "description": "true면 포크에서 온 PR은 승인 전까지 빌드하지 않아요(환경 변수가 새지 않게)."
    },
    "oidc_enabled": {
      "type": "boolean",
      "description": "true면 빌드와 서버에 OIDC 토큰을 줘요."
    },
    "oidc_issuer_mode": {
      "type": "string",
      "enum": [
        "team",
        "global"
      ],
      "description": "발급자. team은 조직 전용, global은 플랫폼 공용 발급자예요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

get_routing_rules 라우팅 규칙 보기

읽기 전용

콘솔에서 정한 리디렉트·리라이트·헤더 규칙의 버전들(최근 30개)과 적용 중인 버전(active, null이면 없음), 도메인 리디렉트를 돌려줘요. 규칙은 각 배포의 blackwall.json보다 먼저 적용돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

save_routing_rules 라우팅 규칙 저장

파괴적

blackwall.json과 같은 모양의 규칙을 새 버전으로 저장하고 바로 적용해요. 빌드가 blackwall.json을 검사하는 규칙 그대로 검사해요. 규칙 전체를 보내요(빠진 목록은 비어요). 이전 버전은 activate_routing_rules로 되돌려요. 리디렉트가 수백 개면 upload_bulk_redirects예요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
redirectsarray<object>아니요예: [{"source": "/old/:path*", "destination": "/new/:path*", "statusCode": 308}]. statusCode 301·302·307·308, 빼면 permanent(true 308, 기본 307).
rewritesarray<object>아니요예: [{"source": "/docs/:path*", "destination": "/help/:path*"}]
headersarray<object>아니요예: [{"source": "/:path*", "headers": [{"key": "X-Frame-Options", "value": "DENY"}]}]
notestring, max length 200아니요버전 메모.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "redirects": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "예: [{\"source\": \"/old/:path*\", \"destination\": \"/new/:path*\", \"statusCode\": 308}]. statusCode 301·302·307·308, 빼면 permanent(true 308, 기본 307)."
    },
    "rewrites": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "예: [{\"source\": \"/docs/:path*\", \"destination\": \"/help/:path*\"}]"
    },
    "headers": {
      "type": "array",
      "items": {
        "type": "object"
      },
      "description": "예: [{\"source\": \"/:path*\", \"headers\": [{\"key\": \"X-Frame-Options\", \"value\": \"DENY\"}]}]"
    },
    "note": {
      "type": "string",
      "maxLength": 200,
      "description": "버전 메모."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

activate_routing_rules 라우팅 규칙 버전 적용

파괴적

저장한 버전 하나를 다시 적용하거나, null로 콘솔의 규칙을 꺼요(배포의 blackwall.json만 따름). 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
versionstring, min 1예get_routing_rules의 versions[].version. null이면 꺼요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "version": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 1,
      "description": "get_routing_rules의 versions[].version. null이면 꺼요."
    }
  },
  "required": [
    "ref",
    "version"
  ],
  "additionalProperties": false
}

purge_edge_cache_item 캐시 일부 비우기

파괴적

엣지 캐시에서 경로 하나(끝의 *는 그 아래 전부)나 Cache-Tag 하나만 버려요. 둘 중 하나만 줘요. 캐시 전체는 purge_edge_cache예요. 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
pathstring, max length 512아니요/로 시작하는 경로. 예: /blog/* 또는 /index.html.
tagstring, max length 512아니요응답의 Cache-Tag 헤더에 넣은 태그 하나.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "path": {
      "type": "string",
      "maxLength": 512,
      "description": "/로 시작하는 경로. 예: /blog/* 또는 /index.html."
    },
    "tag": {
      "type": "string",
      "maxLength": 512,
      "description": "응답의 Cache-Tag 헤더에 넣은 태그 하나."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_job_retention 예약 작업 기록 보관 기간

파괴적

예약 작업의 실행 기록을 며칠 둘지 정해요: 1, 3, 7, 14, 30, 90일, null이면 요금제 기본값. 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
daysstring, 1 | 3 | 7 | 14 | 30 | 90 | null예보관 일수. null이면 기본값.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "days": {
      "type": [
        "integer",
        "null"
      ],
      "enum": [
        1,
        3,
        7,
        14,
        30,
        90,
        null
      ],
      "description": "보관 일수. null이면 기본값."
    }
  },
  "required": [
    "ref",
    "days"
  ],
  "additionalProperties": false
}

get_storage_settings 저장소 설정 보기

읽기 전용

프로젝트 전체의 파일 하나 최대 크기(file_size_limit, null이면 서버 한도 host_max_bytes), 이미지 변환을 켰는지와 허용 크기, S3 주소를 켰는지, 버킷마다 이전 버전을 남기는지(versioning)를 돌려줘요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_storage_settings 저장소 설정 바꾸기

파괴적

프로젝트 전체의 파일 하나 최대 크기와 이미지 변환(켜기, 허용할 너비 목록)을 정해요. 버킷 하나의 한도는 update_bucket이에요. 빠진 항목은 그대로예요. 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
file_size_limitstring아니요바이트 수나 5MB 같은 크기. null이면 서버 한도까지.
image_transformboolean아니요true면 ?width= 같은 이미지 변환을 해 줘요.
image_sizesarray<integer>, max items 20아니요변환을 허락할 너비(px) 목록. []이면 모든 크기.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "file_size_limit": {
      "type": [
        "string",
        "integer",
        "null"
      ],
      "description": "바이트 수나 5MB 같은 크기. null이면 서버 한도까지."
    },
    "image_transform": {
      "type": "boolean",
      "description": "true면 ?width= 같은 이미지 변환을 해 줘요."
    },
    "image_sizes": {
      "type": "array",
      "items": {
        "type": "integer",
        "minimum": 1,
        "maximum": 2500
      },
      "maxItems": 20,
      "description": "변환을 허락할 너비(px) 목록. []이면 모든 크기."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_s3_enabled S3 주소 켜기·끄기

파괴적

S3 호환 주소가 요청을 받을지 정해요. 끄면 S3 키(list_s3_keys)로 오는 요청을 모두 거절하고, 키는 남아요. 비밀 키를 볼 수 있는 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
enabledboolean예true면 켜고 false면 꺼요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "enabled": {
      "type": "boolean",
      "description": "true면 켜고 false면 꺼요."
    }
  },
  "required": [
    "ref",
    "enabled"
  ],
  "additionalProperties": false
}

set_bucket_versioning 버킷 버전 보관

파괴적

버킷이 덮어쓰거나 지운 파일을 이전 버전으로 남길지, 며칠 둘지 정해요. 빠진 항목은 그대로예요. 이전 버전도 저장 용량에 들어가요. 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
bucketstring예list_buckets의 버킷 이름.
enabledboolean아니요true면 이전 버전을 남겨요.
noncurrent_daysstring, min 1, max 3650아니요이전 버전을 둘 일수. null이면 지울 때까지.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "bucket": {
      "type": "string",
      "description": "list_buckets의 버킷 이름."
    },
    "enabled": {
      "type": "boolean",
      "description": "true면 이전 버전을 남겨요."
    },
    "noncurrent_days": {
      "type": [
        "integer",
        "null"
      ],
      "minimum": 1,
      "maximum": 3650,
      "description": "이전 버전을 둘 일수. null이면 지울 때까지."
    }
  },
  "required": [
    "ref",
    "bucket"
  ],
  "additionalProperties": false
}

list_object_versions 파일 이전 버전 목록

읽기 전용

버킷의 이전 버전을 최근 것부터 200개까지 돌려줘요. name을 주면 그 파일의 버전만이에요. deleted가 true면 지워진 파일의 마지막 버전이에요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
bucketstring예list_buckets의 버킷 이름.
namestring, max length 1024아니요버킷 안의 파일 경로. 예: avatars/a.png.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "bucket": {
      "type": "string",
      "description": "list_buckets의 버킷 이름."
    },
    "name": {
      "type": "string",
      "maxLength": 1024,
      "description": "버킷 안의 파일 경로. 예: avatars/a.png."
    }
  },
  "required": [
    "ref",
    "bucket"
  ],
  "additionalProperties": false
}

restore_object_version 파일 이전 버전으로 되돌리기

파괴적

이전 버전을 그 이름의 지금 파일로 되돌려요. 그 이름에 있던 파일은 버킷 설정대로 이전 버전이 돼요. 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_object_versions의 id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_object_versions의 id."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

remove_object_version 파일 이전 버전 영구 삭제

파괴적

이전 버전 하나를 영구히 지워요. 지금 파일은 그대로예요. 되돌릴 수 없으니 confirm에 파일 이름(name)을 그대로 넣어야 해요. 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_object_versions의 id.
confirmstring예지울 버전의 파일 이름(list_object_versions의 name).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_object_versions의 id."
    },
    "confirm": {
      "type": "string",
      "description": "지울 버전의 파일 이름(list_object_versions의 name)."
    }
  },
  "required": [
    "ref",
    "id",
    "confirm"
  ],
  "additionalProperties": false
}

list_bucket_connections 배포에 연결한 버킷

읽기 전용

배포에 연결한 버킷마다 접두어, 들어가는 환경, 쓰는 S3 키, 넣는 환경 변수 이름을 돌려줘요. targets는 고를 수 있는 환경이에요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

connect_bucket 버킷을 배포에 연결

파괴적

이 버킷 하나만 여는 S3 키를 만들어 고른 환경의 배포에 <접두어>_BUCKET, _ENDPOINT, _REGION, _ACCESS_KEY_ID, _SECRET_ACCESS_KEY로 넣어요. S3 주소도 켜져요. 다음 배포부터 들어가요. 개발자 이상이 할 수 있고, production에 넣는 건 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
bucketstring예list_buckets의 버킷 이름.
prefixstring, pattern ^[A-Za-z][A-Za-z0-9_]{0,30}$아니요환경 변수 접두어. 대문자로 바뀌어요. 기본 BLOB, BLACKWALL로 시작할 수 없어요.
targetsarray<string>, min items 1예넣을 환경: production, preview, development, env:<환경 이름>. list_bucket_connections의 targets.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "bucket": {
      "type": "string",
      "description": "list_buckets의 버킷 이름."
    },
    "prefix": {
      "type": "string",
      "pattern": "^[A-Za-z][A-Za-z0-9_]{0,30}$",
      "description": "환경 변수 접두어. 대문자로 바뀌어요. 기본 BLOB, BLACKWALL로 시작할 수 없어요."
    },
    "targets": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "description": "넣을 환경: production, preview, development, env:<환경 이름>. list_bucket_connections의 targets."
    }
  },
  "required": [
    "ref",
    "bucket",
    "targets"
  ],
  "additionalProperties": false
}

disconnect_bucket 버킷 연결 끊기

파괴적

연결의 S3 키를 바로 폐기하고, 다음 배포부터 변수를 빼요. 그 변수를 쓰는 코드는 실패하니 confirm에 접두어를 그대로 넣어야 해요. production에 연결된 것은 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_bucket_connections의 id.
confirmstring예연결의 접두어(prefix).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_bucket_connections의 id."
    },
    "confirm": {
      "type": "string",
      "description": "연결의 접두어(prefix)."
    }
  },
  "required": [
    "ref",
    "id",
    "confirm"
  ],
  "additionalProperties": false
}

list_storage_policies 파일 접근 규칙 목록

읽기 전용

파일 표(objects)와 버킷 표(buckets)의 접근 규칙: 동작, 대상, 조건식, 플랫폼 기본 규칙인지(built_in). 데이터 표의 규칙은 list_policies예요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_storage_policy 파일 접근 규칙 만들기

추가만 함

콘솔의 틀로 파일 접근 규칙을 만들어요. template: public-read(누구나 읽기), signed-in-read(로그인한 사람만 읽기), signed-in-upload(로그인한 사람이 올리기), own-folder(사람마다 자기 폴더), images-only(이미지만 올리기), custom(command, roles, using, check를 직접). 틀은 bucket이 필요해요. auth.uid()는 uid()로 바꿔 써요. run_sql로는 파일 표에 규칙을 만들 수 없어요. 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
templatestring, public-read | signed-in-read | signed-in-upload | own-folder | images-only | custom아니요규칙 틀. 기본 custom.
bucketstring아니요틀을 적용할 버킷(custom 말고는 필요).
namestring, max length 63아니요규칙 이름. 비우면 틀의 이름.
tablestring, objects | buckets아니요custom일 때 표. 기본 objects, buckets에는 select만.
commandstring, select | insert | update | delete | all아니요custom일 때 동작.
rolesarray<string>, anon | authenticated아니요custom일 때 대상.
restrictiveboolean아니요true면 제한 규칙(다른 규칙과 AND).
usingstring아니요custom일 때 using 조건식. 예: bucket_id = 'avatars' and owner = uid()
checkstring아니요custom일 때 with check 조건식.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "template": {
      "type": "string",
      "enum": [
        "public-read",
        "signed-in-read",
        "signed-in-upload",
        "own-folder",
        "images-only",
        "custom"
      ],
      "description": "규칙 틀. 기본 custom."
    },
    "bucket": {
      "type": "string",
      "description": "틀을 적용할 버킷(custom 말고는 필요)."
    },
    "name": {
      "type": "string",
      "maxLength": 63,
      "description": "규칙 이름. 비우면 틀의 이름."
    },
    "table": {
      "type": "string",
      "enum": [
        "objects",
        "buckets"
      ],
      "description": "custom일 때 표. 기본 objects, buckets에는 select만."
    },
    "command": {
      "type": "string",
      "enum": [
        "select",
        "insert",
        "update",
        "delete",
        "all"
      ],
      "description": "custom일 때 동작."
    },
    "roles": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "anon",
          "authenticated"
        ]
      },
      "description": "custom일 때 대상."
    },
    "restrictive": {
      "type": "boolean",
      "description": "true면 제한 규칙(다른 규칙과 AND)."
    },
    "using": {
      "type": "string",
      "description": "custom일 때 using 조건식. 예: bucket_id = 'avatars' and owner = uid()"
    },
    "check": {
      "type": "string",
      "description": "custom일 때 with check 조건식."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

remove_storage_policy 파일 접근 규칙 삭제

파괴적

프로젝트가 만든 파일 접근 규칙을 지워요. 기본 규칙(built_in)은 지울 수 없어요. confirm에 규칙 이름을 그대로 넣어야 해요. 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
tablestring, objects | buckets아니요규칙이 있는 표. 기본 objects.
namestring예list_storage_policies의 name.
confirmstring예규칙 이름. name과 같아야 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "table": {
      "type": "string",
      "enum": [
        "objects",
        "buckets"
      ],
      "description": "규칙이 있는 표. 기본 objects."
    },
    "name": {
      "type": "string",
      "description": "list_storage_policies의 name."
    },
    "confirm": {
      "type": "string",
      "description": "규칙 이름. name과 같아야 해요."
    }
  },
  "required": [
    "ref",
    "name",
    "confirm"
  ],
  "additionalProperties": false
}

get_realtime_settings 실시간 설정 보기

읽기 전용

실시간을 켰는지, 공개 채널을 허용하는지, 동시 연결 수·초당 메시지·초당 프레즌스·메시지 최대 크기 한도와 각 범위(bounds)를 돌려줘요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_realtime_settings 실시간 설정 바꾸기

파괴적

실시간 켜기·끄기, 공개 채널 허용, 프로젝트 전체의 한도를 바꿔요. 준 값만 바꾸고 나머지는 그대로예요. allow_public을 끄면 비공개 채널(realtime_messages 표의 규칙을 통과한 사람)만 쓸 수 있어요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
enabledboolean아니요끄면 새 연결을 받지 않아요.
allow_publicboolean아니요공개 채널을 허용할지.
max_clientsinteger, min 1, max 10000아니요동시 연결 수. 1~10000.
max_events_per_secondinteger, min 1, max 10000아니요초당 브로드캐스트 수. 1~10000.
max_presence_per_secondinteger, min 1, max 1000아니요초당 프레즌스 갱신 수. 1~1000.
max_payload_kbinteger, min 1, max 3072아니요메시지 최대 크기(KB). 1~3072.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "enabled": {
      "type": "boolean",
      "description": "끄면 새 연결을 받지 않아요."
    },
    "allow_public": {
      "type": "boolean",
      "description": "공개 채널을 허용할지."
    },
    "max_clients": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10000,
      "description": "동시 연결 수. 1~10000."
    },
    "max_events_per_second": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10000,
      "description": "초당 브로드캐스트 수. 1~10000."
    },
    "max_presence_per_second": {
      "type": "integer",
      "minimum": 1,
      "maximum": 1000,
      "description": "초당 프레즌스 갱신 수. 1~1000."
    },
    "max_payload_kb": {
      "type": "integer",
      "minimum": 1,
      "maximum": 3072,
      "description": "메시지 최대 크기(KB). 1~3072."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

list_realtime_policies 비공개 채널 규칙 보기

읽기 전용

비공개 채널에 누가 들어오고 보낼 수 있는지 정하는 realtime_messages 표의 규칙과, 고를 수 있는 규칙 틀(templates)을 돌려줘요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_realtime_messages_table 비공개 채널 규칙 표 만들기

추가만 함

비공개 채널의 규칙을 적는 realtime_messages 표를 행 단위 보안을 켠 채로 만들어요. 이미 있으면 그대로 둬요. 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

add_realtime_policy 비공개 채널 규칙 더하기

추가만 함

자주 쓰는 규칙을 realtime_messages 표에 더해요(표가 없으면 먼저 만들어요). template: signed-in-read(로그인한 사람이 비공개 채널에 들어오기), signed-in-write(로그인한 사람이 보내기), own-channel(user:<자기 id> 채널만). 다른 규칙은 run_sql로 써요. 개발자 이상이 할 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
templatestring, signed-in-read | signed-in-write | own-channel예
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "template": {
      "type": "string",
      "enum": [
        "signed-in-read",
        "signed-in-write",
        "own-channel"
      ]
    }
  },
  "required": [
    "ref",
    "template"
  ],
  "additionalProperties": false
}

get_passkey_settings 패스키 설정 보기

읽기 전용

가입자가 패스키로 로그인할 수 있는지, RP 이름·RP ID·허용 출처(origins), 사용자 확인(require_user_verification)을 돌려줘요. RP ID를 비우면 Site URL의 호스트를 써요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_passkey_settings 패스키 설정 바꾸기

파괴적

가입자의 패스키 로그인을 켜거나 끄고, RP 이름·RP ID·허용 출처를 바꿔요. 준 값만 바꿔요. 출처는 모두 RP ID(없으면 Site URL의 호스트) 아래의 https 주소여야 해요. RP ID를 바꾸면 이미 등록한 패스키는 쓸 수 없게 돼요. 소유자·관리자·개발자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
enabledboolean아니요패스키 로그인을 켤지.
rp_namestring아니요브라우저가 보여 주는 서비스 이름.
rp_idstring아니요패스키가 묶이는 도메인(예: example.com). 비우면 Site URL의 호스트.
originsarray<string>아니요패스키를 쓸 https 출처들(예: ["https://app.example.com"]). 비우면 Site URL.
require_user_verificationboolean아니요지문·PIN 같은 사용자 확인을 반드시 요구할지.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "enabled": {
      "type": "boolean",
      "description": "패스키 로그인을 켤지."
    },
    "rp_name": {
      "type": "string",
      "description": "브라우저가 보여 주는 서비스 이름."
    },
    "rp_id": {
      "type": "string",
      "description": "패스키가 묶이는 도메인(예: example.com). 비우면 Site URL의 호스트."
    },
    "origins": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "패스키를 쓸 https 출처들(예: [\"https://app.example.com\"]). 비우면 Site URL."
    },
    "require_user_verification": {
      "type": "boolean",
      "description": "지문·PIN 같은 사용자 확인을 반드시 요구할지."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

list_user_factors 가입자의 2단계 인증·패스키 보기

읽기 전용

가입자 한 명이 등록한 2단계 인증 수단(factors: totp·phone)과 패스키(passkeys)를 돌려줘요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_users의 id (UUID).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_users의 id (UUID)."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

remove_user_factors 가입자의 2단계 인증 지우기

파괴적

휴대폰을 잃어버린 가입자처럼, 한 명의 2단계 인증 수단을 모두 지워요. 다시 등록할 때까지 비밀번호만으로 로그인해요. confirm에 그 가입자의 이메일(또는 id)을 넣어요. 사용자가 요청할 때만 쓰세요. 소유자·관리자·개발자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_users의 id (UUID).
confirmstring예가입자의 이메일(또는 id)을 그대로.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_users의 id (UUID)."
    },
    "confirm": {
      "type": "string",
      "description": "가입자의 이메일(또는 id)을 그대로."
    }
  },
  "required": [
    "ref",
    "id",
    "confirm"
  ],
  "additionalProperties": false
}

remove_user_passkey 가입자의 패스키 지우기

파괴적

가입자 한 명의 패스키 하나를 지워요. 그 패스키로는 더 로그인할 수 없어요. 소유자·관리자·개발자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
idstring예list_users의 id (UUID).
passkey_idstring예list_user_factors의 passkeys[].id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "id": {
      "type": "string",
      "description": "list_users의 id (UUID)."
    },
    "passkey_id": {
      "type": "string",
      "description": "list_user_factors의 passkeys[].id."
    }
  },
  "required": [
    "ref",
    "id",
    "passkey_id"
  ],
  "additionalProperties": false
}

list_oauth_apps OAuth 앱 목록

읽기 전용

이 프로젝트를 OAuth 서버로 써서 "이 서비스로 로그인"하는 다른 앱(클라이언트)과, OAuth 서버가 켜졌는지, 인가·토큰·사용자 정보 주소(endpoints)를 돌려줘요. 시크릿은 돌려주지 않아요. 켜고 끄는 건 update_auth_config의 OAUTH_SERVER_ENABLED예요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_oauth_app OAuth 앱 만들기

추가만 함

이 프로젝트로 로그인할 앱(클라이언트)을 등록해요. public이 false(기본)면 client_secret을 응답에 한 번만 줘요. public이 true면 시크릿 없이 PKCE로 로그인하는 모바일·SPA 앱이에요. 리디렉션 URI는 https, localhost의 http, 앱 고유 스킴(com.example.app:)만 돼요. 소유자·관리자·개발자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
namestring, min length 1, max length 120예로그인 화면에 보이는 앱 이름.
redirect_urisarray<string>, min items 1, max items 20예로그인 뒤 돌아갈 주소들.
publicboolean아니요true면 시크릿 없는 공개 클라이언트. 기본 false.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 120,
      "description": "로그인 화면에 보이는 앱 이름."
    },
    "redirect_uris": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "maxItems": 20,
      "description": "로그인 뒤 돌아갈 주소들."
    },
    "public": {
      "type": "boolean",
      "description": "true면 시크릿 없는 공개 클라이언트. 기본 false."
    }
  },
  "required": [
    "ref",
    "name",
    "redirect_uris"
  ],
  "additionalProperties": false
}

reset_oauth_app_secret OAuth 앱 시크릿 새로 만들기

파괴적

앱의 client_secret을 새로 만들어 한 번만 보여 줘요. 예전 시크릿은 바로 쓸 수 없어 그 앱의 설정도 바꿔야 해요. 소유자·관리자·개발자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
client_idstring예list_oauth_apps의 client_id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "client_id": {
      "type": "string",
      "description": "list_oauth_apps의 client_id."
    }
  },
  "required": [
    "ref",
    "client_id"
  ],
  "additionalProperties": false
}

remove_oauth_app OAuth 앱 삭제

파괴적

앱 등록을 지워요. 그 앱으로는 더 로그인할 수 없어요. confirm에 앱 이름(client_name)을 넣어요. 소유자·관리자·개발자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
client_idstring예list_oauth_apps의 client_id.
confirmstring예앱 이름(client_name)을 그대로.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "client_id": {
      "type": "string",
      "description": "list_oauth_apps의 client_id."
    },
    "confirm": {
      "type": "string",
      "description": "앱 이름(client_name)을 그대로."
    }
  },
  "required": [
    "ref",
    "client_id",
    "confirm"
  ],
  "additionalProperties": false
}

list_shared_env_vars 공유 환경 변수 목록

읽기 전용

조직이 여러 프로젝트에 함께 주는 환경 변수와 값(sensitive는 값을 숨겨요), 대상(production·preview), 연결한 프로젝트를 돌려줘요. 소유자·관리자·개발자가 볼 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_shared_env_var 공유 환경 변수 만들기

추가만 함

조직의 여러 프로젝트에 함께 들어갈 환경 변수를 만들어요. 연결한 프로젝트의 다음 배포부터 들어가고, 같은 이름의 프로젝트 변수가 있으면 그쪽이 이겨요. projects에는 내가 열 수 있는 프로젝트만 연결돼요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
keystring예이름(영문자·숫자·_).
valuestring예값.
targetsarray<string>, production | preview아니요기본 둘 다.
sensitiveboolean아니요true면 값을 다시 보여 주지 않아요. 한 번 켜면 끌 수 없어요.
notestring아니요메모(200자까지).
projectsarray<string>아니요연결할 프로젝트의 ref들.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "key": {
      "type": "string",
      "description": "이름(영문자·숫자·_)."
    },
    "value": {
      "type": "string",
      "description": "값."
    },
    "targets": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "production",
          "preview"
        ]
      },
      "description": "기본 둘 다."
    },
    "sensitive": {
      "type": "boolean",
      "description": "true면 값을 다시 보여 주지 않아요. 한 번 켜면 끌 수 없어요."
    },
    "note": {
      "type": "string",
      "description": "메모(200자까지)."
    },
    "projects": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "연결할 프로젝트의 ref들."
    }
  },
  "required": [
    "ref",
    "key",
    "value"
  ],
  "additionalProperties": false
}

update_shared_env_var 공유 환경 변수 바꾸기

파괴적

공유 변수의 값, 대상, 메모, 연결한 프로젝트를 바꿔요. 준 것만 바꾸고, value를 빼면 값은 그대로예요. projects는 전체 목록이고, 내가 열 수 없는 프로젝트의 연결은 그대로 둬요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
idstring예list_shared_env_vars의 id.
valuestring아니요새 값.
targetsarray<string>, production | preview아니요대상 전체.
sensitiveboolean아니요true면 값을 숨겨요. 끌 수는 없어요.
notestring아니요메모.
projectsarray<string>아니요연결할 프로젝트의 ref 전체.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "id": {
      "type": "string",
      "description": "list_shared_env_vars의 id."
    },
    "value": {
      "type": "string",
      "description": "새 값."
    },
    "targets": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "production",
          "preview"
        ]
      },
      "description": "대상 전체."
    },
    "sensitive": {
      "type": "boolean",
      "description": "true면 값을 숨겨요. 끌 수는 없어요."
    },
    "note": {
      "type": "string",
      "description": "메모."
    },
    "projects": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "연결할 프로젝트의 ref 전체."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

remove_shared_env_var 공유 환경 변수 삭제

파괴적

공유 변수를 지워요. 연결한 프로젝트의 다음 배포부터 빠져요. confirm에 변수 이름을 넣어요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
idstring예list_shared_env_vars의 id.
confirmstring예변수 이름(key)을 그대로.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "id": {
      "type": "string",
      "description": "list_shared_env_vars의 id."
    },
    "confirm": {
      "type": "string",
      "description": "변수 이름(key)을 그대로."
    }
  },
  "required": [
    "ref",
    "id",
    "confirm"
  ],
  "additionalProperties": false
}

list_access_groups 접근 그룹 목록

읽기 전용

조직 구성원을 묶어 프로젝트마다 역할(developer·billing·viewer)을 주는 접근 그룹과, 그 구성원(이메일)·프로젝트를 돌려줘요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_access_group 접근 그룹 만들기

추가만 함

빈 접근 그룹을 만들어요. 구성원과 프로젝트는 update_access_group으로 더해요. 조직마다 50개까지. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
namestring, min length 1, max length 60예그룹 이름.
descriptionstring아니요설명(300자까지).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "description": "그룹 이름."
    },
    "description": {
      "type": "string",
      "description": "설명(300자까지)."
    }
  },
  "required": [
    "ref",
    "name"
  ],
  "additionalProperties": false
}

update_access_group 접근 그룹 바꾸기

파괴적

그룹의 이름, 설명, 구성원, 프로젝트별 역할을 바꿔요. 준 것만 바꿔요. members는 조직 구성원의 이메일 전체 목록이고, projects는 {ref: 역할} 전체예요(역할은 developer·billing·viewer, 빠진 프로젝트는 주지 않아요). 그룹은 소유자·관리자 역할을 줄 수 없어요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
idstring예list_access_groups의 id.
namestring, min length 1, max length 60아니요새 이름.
descriptionstring아니요새 설명.
membersarray<string>아니요구성원 이메일 전체. list_team에 있는 사람만.
projectsobject아니요예: {"abcdefghijklmnopqrst": "developer"}.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "id": {
      "type": "string",
      "description": "list_access_groups의 id."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "description": "새 이름."
    },
    "description": {
      "type": "string",
      "description": "새 설명."
    },
    "members": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "구성원 이메일 전체. list_team에 있는 사람만."
    },
    "projects": {
      "type": "object",
      "additionalProperties": {
        "type": "string",
        "enum": [
          "developer",
          "billing",
          "viewer"
        ]
      },
      "description": "예: {\"abcdefghijklmnopqrst\": \"developer\"}."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

remove_access_group 접근 그룹 삭제

파괴적

접근 그룹을 지워요. 이 그룹으로 프로젝트를 열던 사람은 그 권한을 잃어요. confirm에 그룹 이름을 넣어요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
idstring예list_access_groups의 id.
confirmstring예그룹 이름을 그대로.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "id": {
      "type": "string",
      "description": "list_access_groups의 id."
    },
    "confirm": {
      "type": "string",
      "description": "그룹 이름을 그대로."
    }
  },
  "required": [
    "ref",
    "id",
    "confirm"
  ],
  "additionalProperties": false
}

get_member_access 구성원의 프로젝트 접근 보기

읽기 전용

구성원 한 명이 조직의 모든 프로젝트를 여는지(scoped false), 고른 프로젝트만 여는지(scoped true)와 프로젝트별 역할, 들어 있는 접근 그룹을 돌려줘요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
emailstring예list_team의 구성원 이메일.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "email": {
      "type": "string",
      "description": "list_team의 구성원 이메일."
    }
  },
  "required": [
    "ref",
    "email"
  ],
  "additionalProperties": false
}

set_member_access 구성원의 프로젝트 접근 바꾸기

파괴적

scoped false면 구성원이 조직 역할로 모든 프로젝트를 열어요. scoped true면 projects({ref: developer·billing·viewer})와 접근 그룹이 주는 프로젝트만 열어요. 소유자·관리자는 좁힐 수 없어요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
emailstring예list_team의 구성원 이메일.
scopedboolean예true면 고른 프로젝트만.
projectsobject아니요scoped true일 때 {ref: 역할} 전체.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "email": {
      "type": "string",
      "description": "list_team의 구성원 이메일."
    },
    "scoped": {
      "type": "boolean",
      "description": "true면 고른 프로젝트만."
    },
    "projects": {
      "type": "object",
      "additionalProperties": {
        "type": "string",
        "enum": [
          "developer",
          "billing",
          "viewer"
        ]
      },
      "description": "scoped true일 때 {ref: 역할} 전체."
    }
  },
  "required": [
    "ref",
    "email",
    "scoped"
  ],
  "additionalProperties": false
}

list_audit_drains 감사 기록 내보내기 목록

읽기 전용

조직의 감사 기록을 보안 도구(https, Datadog, Splunk, syslog)로 보내는 곳과, 밀린 수(behind), 실패, https의 서명 키(signing_secret), 요금제가 허용하는지(allowed)를 돌려줘요. 소유자·관리자만 볼 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_audit_drain 감사 기록 내보내기 만들기

추가만 함 외부로 나감

이제부터 쌓이는 감사 기록을 보낼 곳을 더해요. kind: https(서명한 JSON), datadog(secret에 API 키), splunk(HEC 주소, secret에 토큰), syslog(syslog+tls://호스트:포트). 조직마다 5개까지이고 요금제에 있어야 해요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
namestring, min length 1, max length 60예이름.
kindstring, https | datadog | splunk | syslog예보낼 곳의 종류.
urlstring예보낼 주소.
secretstring아니요datadog·splunk의 키나 토큰. 저장 뒤 끝 네 글자만 보여요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "description": "이름."
    },
    "kind": {
      "type": "string",
      "enum": [
        "https",
        "datadog",
        "splunk",
        "syslog"
      ],
      "description": "보낼 곳의 종류."
    },
    "url": {
      "type": "string",
      "description": "보낼 주소."
    },
    "secret": {
      "type": "string",
      "description": "datadog·splunk의 키나 토큰. 저장 뒤 끝 네 글자만 보여요."
    }
  },
  "required": [
    "ref",
    "name",
    "kind",
    "url"
  ],
  "additionalProperties": false
}

set_audit_drain_enabled 감사 기록 내보내기 켜기·끄기

파괴적

보내기를 멈추거나 다시 켜요. 다시 켜면 멈춘 곳부터 보내요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
idstring예list_audit_drains의 id.
enabledboolean예켤지 끌지.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "id": {
      "type": "string",
      "description": "list_audit_drains의 id."
    },
    "enabled": {
      "type": "boolean",
      "description": "켤지 끌지."
    }
  },
  "required": [
    "ref",
    "id",
    "enabled"
  ],
  "additionalProperties": false
}

test_audit_drain 감사 기록 내보내기 시험

추가만 함 외부로 나감

만든 시험 기록 하나를 지금 보내고 받는 쪽의 답(HTTP 상태)을 돌려줘요. 실제 기록은 건드리지 않아요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
idstring예list_audit_drains의 id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "id": {
      "type": "string",
      "description": "list_audit_drains의 id."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

remove_audit_drain 감사 기록 내보내기 삭제

파괴적

보낼 곳을 지워요. 이미 보낸 기록은 받는 쪽에 남아요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
idstring예list_audit_drains의 id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "id": {
      "type": "string",
      "description": "list_audit_drains의 id."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

list_org_webhooks 조직 웹훅 목록

읽기 전용

조직의 알림(배포, 도메인, 사용량, 결제)을 보내는 웹훅과 서명 키(signing_secret), 고를 수 있는 이벤트(events)를 돌려줘요. 프로젝트 하나의 웹훅은 list_project_webhooks예요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

create_org_webhook 조직 웹훅 만들기

추가만 함 외부로 나감

조직의 알림을 공개 https 주소로 보내는 웹훅을 만들어요. events를 비우면 모든 이벤트, projects를 비우면 모든 프로젝트와 조직 자체의 알림이에요. 알림 채널과 합쳐 조직마다 20개까지. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
namestring, min length 1, max length 60예이름.
urlstring예공개된 https 주소.
eventsarray<string>, deployments.deploy-failed | deployments.deploy-ready | deployments.deploy-succeeded | domains.domain-verified | domains.domain-unverified | domains.domain-tls | domains.domain-cert-expiring | usage.usage | billing.charge-paid | billing.charge-failed | billing.no-card | billing.plan | billing.subscription아니요보낼 이벤트. 비우면 전부.
projectsarray<string>아니요이 프로젝트들의 알림만. 비우면 전부.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "name": {
      "type": "string",
      "minLength": 1,
      "maxLength": 60,
      "description": "이름."
    },
    "url": {
      "type": "string",
      "description": "공개된 https 주소."
    },
    "events": {
      "type": "array",
      "items": {
        "type": "string",
        "enum": [
          "deployments.deploy-failed",
          "deployments.deploy-ready",
          "deployments.deploy-succeeded",
          "domains.domain-verified",
          "domains.domain-unverified",
          "domains.domain-tls",
          "domains.domain-cert-expiring",
          "usage.usage",
          "billing.charge-paid",
          "billing.charge-failed",
          "billing.no-card",
          "billing.plan",
          "billing.subscription"
        ]
      },
      "description": "보낼 이벤트. 비우면 전부."
    },
    "projects": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "이 프로젝트들의 알림만. 비우면 전부."
    }
  },
  "required": [
    "ref",
    "name",
    "url"
  ],
  "additionalProperties": false
}

set_org_webhook_enabled 조직 웹훅 켜기·끄기

파괴적

조직 웹훅을 멈추거나 다시 보내게 해요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
idstring예list_org_webhooks의 id.
enabledboolean예켤지 끌지.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "id": {
      "type": "string",
      "description": "list_org_webhooks의 id."
    },
    "enabled": {
      "type": "boolean",
      "description": "켤지 끌지."
    }
  },
  "required": [
    "ref",
    "id",
    "enabled"
  ],
  "additionalProperties": false
}

test_org_webhook 조직 웹훅 시험

추가만 함 외부로 나감

서명한 시험 이벤트를 하나 보내요. 결과는 list_org_webhook_deliveries에 나와요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
idstring예list_org_webhooks의 id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "id": {
      "type": "string",
      "description": "list_org_webhooks의 id."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

list_org_webhook_deliveries 조직 웹훅 전달 기록

읽기 전용

조직 웹훅이 보낸 최근 100건: 이벤트, 프로젝트, 상태(pending·sent·failed), 시도 횟수, 실패 이유. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
idstring예list_org_webhooks의 id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "id": {
      "type": "string",
      "description": "list_org_webhooks의 id."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

retry_org_webhook_delivery 조직 웹훅 다시 보내기

추가만 함 외부로 나감

끝난 전달 하나를 새 전달로 다시 보내요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
delivery_idinteger, min 1예list_org_webhook_deliveries의 id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "delivery_id": {
      "type": "integer",
      "minimum": 1,
      "description": "list_org_webhook_deliveries의 id."
    }
  },
  "required": [
    "ref",
    "delivery_id"
  ],
  "additionalProperties": false
}

remove_org_webhook 조직 웹훅 삭제

파괴적

조직 웹훅을 지워요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
idstring예list_org_webhooks의 id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "id": {
      "type": "string",
      "description": "list_org_webhooks의 id."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

get_committer_settings 외부 커미터 설정 보기

읽기 전용

조직 밖의 사람이 커밋한 프리뷰를 바로 빌드할지(policy: auto), 승인을 기다릴지(require), 믿는 커미터 목록(trusted), 내가 답할 수 있는 기다리는 프리뷰(waiting)를 돌려줘요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_committer_policy 외부 커미터 정책 바꾸기

파괴적

auto면 누가 커밋했든 프리뷰를 빌드해요. require면 구성원도 믿는 커미터도 아닌 사람의 프리뷰는 승인을 기다려요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
policystring, auto | require예auto 또는 require.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "policy": {
      "type": "string",
      "enum": [
        "auto",
        "require"
      ],
      "description": "auto 또는 require."
    }
  },
  "required": [
    "ref",
    "policy"
  ],
  "additionalProperties": false
}

trust_committer 커미터 믿기

추가만 함

이 이메일로 커밋한 프리뷰는 승인 없이 빌드돼요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
emailstring예커밋의 작성자 이메일.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "email": {
      "type": "string",
      "description": "커밋의 작성자 이메일."
    }
  },
  "required": [
    "ref",
    "email"
  ],
  "additionalProperties": false
}

remove_trusted_committer 믿는 커미터에서 빼기

파괴적

이 이메일의 다음 프리뷰부터 다시 승인을 기다려요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
emailstring예get_committer_settings의 trusted[].email.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "email": {
      "type": "string",
      "description": "get_committer_settings의 trusted[].email."
    }
  },
  "required": [
    "ref",
    "email"
  ],
  "additionalProperties": false
}

answer_preview_approval 기다리는 프리뷰에 답하기

파괴적

외부 커미터의 프리뷰를 approve(빌드), trust(빌드하고 작성자를 믿는 커미터로), decline(취소)해요. 남의 코드를 빌드하는 일이니 코드를 확인한 뒤에만 승인하세요. 그 프로젝트에 쓸 수 있는 사람(개발자 이상)만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
idstring예get_committer_settings의 waiting[]의 id.
verdictstring, approve | trust | decline예approve, trust, decline.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "id": {
      "type": "string",
      "description": "get_committer_settings의 waiting[]의 id."
    },
    "verdict": {
      "type": "string",
      "enum": [
        "approve",
        "trust",
        "decline"
      ],
      "description": "approve, trust, decline."
    }
  },
  "required": [
    "ref",
    "id",
    "verdict"
  ],
  "additionalProperties": false
}

get_org_sso 조직 SSO 보기

읽기 전용

구성원이 회사 ID 제공자(Okta, Entra 등, OpenID Connect)로 콘솔에 로그인하는 설정(시크릿은 끝 네 글자만), 콜백 주소, 도메인과 확인용 TXT 레코드를 돌려줘요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_org_sso 조직 SSO 설정하기

파괴적 외부로 나감

조직의 OpenID Connect 로그인을 만들거나 바꿔요. 준 것만 바꾸고, client_secret을 빼면 지금 것을 유지해요. issuer나 discovery_url을 주면 나머지 주소는 제공자 문서에서 읽어요. require_sso를 켜면 구성원은 SSO로만 로그인해요. ID 제공자에는 get_org_sso의 callback_url을 등록하세요. 요금제에 있어야 해요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
issuerstring아니요발급자 주소(https).
discovery_urlstring아니요…/.well-known/openid-configuration 주소.
authorization_urlstring아니요인가 주소. 보통 비워 둬요.
token_urlstring아니요토큰 주소. 보통 비워 둬요.
userinfo_urlstring아니요사용자 정보 주소. 보통 비워 둬요.
jwks_urlstring아니요서명 키 주소. 보통 비워 둬요.
client_idstring아니요클라이언트 ID.
client_secretstring아니요클라이언트 시크릿. 처음엔 필요해요.
scopesstring아니요스코프(공백으로). openid가 있어야 해요. 기본 openid email profile.
default_rolestring, admin | developer | billing | viewer아니요SSO로 처음 들어온 사람의 역할.
jitboolean아니요처음 온 사람에게 계정을 만들지. 기본 true.
require_ssoboolean아니요구성원은 SSO로만 로그인할지. 기본 false.
enabledboolean아니요SSO 로그인을 켤지. 기본 true.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "issuer": {
      "type": "string",
      "description": "발급자 주소(https)."
    },
    "discovery_url": {
      "type": "string",
      "description": "…/.well-known/openid-configuration 주소."
    },
    "authorization_url": {
      "type": "string",
      "description": "인가 주소. 보통 비워 둬요."
    },
    "token_url": {
      "type": "string",
      "description": "토큰 주소. 보통 비워 둬요."
    },
    "userinfo_url": {
      "type": "string",
      "description": "사용자 정보 주소. 보통 비워 둬요."
    },
    "jwks_url": {
      "type": "string",
      "description": "서명 키 주소. 보통 비워 둬요."
    },
    "client_id": {
      "type": "string",
      "description": "클라이언트 ID."
    },
    "client_secret": {
      "type": "string",
      "description": "클라이언트 시크릿. 처음엔 필요해요."
    },
    "scopes": {
      "type": "string",
      "description": "스코프(공백으로). openid가 있어야 해요. 기본 openid email profile."
    },
    "default_role": {
      "type": "string",
      "enum": [
        "admin",
        "developer",
        "billing",
        "viewer"
      ],
      "description": "SSO로 처음 들어온 사람의 역할."
    },
    "jit": {
      "type": "boolean",
      "description": "처음 온 사람에게 계정을 만들지. 기본 true."
    },
    "require_sso": {
      "type": "boolean",
      "description": "구성원은 SSO로만 로그인할지. 기본 false."
    },
    "enabled": {
      "type": "boolean",
      "description": "SSO 로그인을 켤지. 기본 true."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

remove_org_sso 조직 SSO 지우기

파괴적

조직의 SSO 연결을 지워요. 구성원은 비밀번호나 다른 로그인으로 들어와요. confirm에 issuer를 넣어요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
confirmstring예get_org_sso의 connection.issuer를 그대로.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "confirm": {
      "type": "string",
      "description": "get_org_sso의 connection.issuer를 그대로."
    }
  },
  "required": [
    "ref",
    "confirm"
  ],
  "additionalProperties": false
}

add_org_sso_domain 조직 SSO 도메인 더하기

추가만 함

이 도메인의 이메일로 로그인하는 사람을 조직의 SSO로 보내요. 응답의 txt_record를 DNS에 더한 뒤 verify_org_sso_domain으로 확인해야 쓰여요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
domainstring예예: example.com.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "domain": {
      "type": "string",
      "description": "예: example.com."
    }
  },
  "required": [
    "ref",
    "domain"
  ],
  "additionalProperties": false
}

verify_org_sso_domain 조직 SSO 도메인 확인

파괴적 외부로 나감

DNS에서 TXT 레코드를 찾아 도메인을 확인해요. 확인되면 이 도메인의 사람은 조직의 SSO로 로그인해요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
idstring예get_org_sso의 domains[]의 id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "id": {
      "type": "string",
      "description": "get_org_sso의 domains[]의 id."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

remove_org_sso_domain 조직 SSO 도메인 지우기

파괴적

도메인을 지워요. 이 도메인의 사람은 SSO로 보내지지 않아요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
idstring예get_org_sso의 domains[]의 id.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "id": {
      "type": "string",
      "description": "get_org_sso의 domains[]의 id."
    }
  },
  "required": [
    "ref",
    "id"
  ],
  "additionalProperties": false
}

get_org_policies 조직 배포 정책 보기

읽기 전용

새 프로젝트의 기본 배포 보호(default_protection, default_scope), 배포를 시작할 수 있는 길(allow_git·cli·api·hooks), 브랜치 미리보기, 프리뷰 도메인(preview_suffix)과 확인용 TXT 레코드를 돌려줘요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_org_policies 조직 배포 정책 바꾸기

파괴적

조직의 배포 정책을 바꿔요. 준 것만 바꿔요. default_protection·default_scope는 새 프로젝트의 기본값이고 기존 프로젝트는 그대로예요. allow_*를 끄면 그 길로 시작한 배포는 거부돼요(allow_api는 MCP도 포함, 콘솔의 배포 버튼은 언제나 돼요). 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
default_protectionstring, members | off아니요새 프로젝트의 프리뷰를 누가 볼지.
default_scopestring, previews | generated | all아니요새 프로젝트에서 보호할 주소.
allow_gitboolean아니요Git 푸시로 배포.
allow_cliboolean아니요CLI로 배포.
allow_apiboolean아니요API·MCP로 배포.
allow_hooksboolean아니요배포 훅으로 배포.
branch_previewsboolean아니요브랜치 푸시마다 미리보기 빌드.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "default_protection": {
      "type": "string",
      "enum": [
        "members",
        "off"
      ],
      "description": "새 프로젝트의 프리뷰를 누가 볼지."
    },
    "default_scope": {
      "type": "string",
      "enum": [
        "previews",
        "generated",
        "all"
      ],
      "description": "새 프로젝트에서 보호할 주소."
    },
    "allow_git": {
      "type": "boolean",
      "description": "Git 푸시로 배포."
    },
    "allow_cli": {
      "type": "boolean",
      "description": "CLI로 배포."
    },
    "allow_api": {
      "type": "boolean",
      "description": "API·MCP로 배포."
    },
    "allow_hooks": {
      "type": "boolean",
      "description": "배포 훅으로 배포."
    },
    "branch_previews": {
      "type": "boolean",
      "description": "브랜치 푸시마다 미리보기 빌드."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

set_preview_suffix 프리뷰 도메인 정하기

파괴적

조직의 프리뷰를 내 도메인 아래(예: preview.example.com)에서도 열어요. 응답의 preview_suffix_record를 DNS에 더한 뒤 verify_preview_suffix로 확인해야 쓰여요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
suffixstring예예: preview.example.com.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    },
    "suffix": {
      "type": "string",
      "description": "예: preview.example.com."
    }
  },
  "required": [
    "ref",
    "suffix"
  ],
  "additionalProperties": false
}

verify_preview_suffix 프리뷰 도메인 확인

파괴적 외부로 나감

DNS에서 TXT 레코드를 찾아 프리뷰 도메인을 확인해요. 아직 없으면 몇 분 뒤 다시 부르세요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

remove_preview_suffix 프리뷰 도메인 지우기

파괴적

프리뷰 도메인을 지워요. 프리뷰는 플랫폼의 주소로만 열려요. 소유자·관리자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "조직의 프로젝트 하나의 ID(ref). 그 프로젝트의 조직을 바꿔요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

get_server 전용 서버

읽기 전용

프로젝트의 전용 서버를 봐요: 크기(tier), 위치, 상태, 주소, 한 달 금액, 대기 서버, 자동 전환, 되돌리기 기간, 다음 위치 옮기기 날짜, 진행 중인 작업(jobs). server가 null이면 공용 서버를 써요. offered가 false면 아직 열리지 않았어요.

이름설명
토큰 범위read
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요
RESTGET /projects/{ref}/server

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    }
  },
  "required": [
    "ref"
  ],
  "additionalProperties": false
}

request_server 전용 서버 빌리기

파괴적

이 프로젝트만 쓰는 서버를 빌려요. 크기와 위치별 월 금액은 list_server_sizes로 먼저 보여 주고 사용자가 고른 것만 넣으세요. 보통 10분 안에 준비되고 데이터베이스와 앱을 옮긴 뒤 주소를 바꿔요. Pro부터, 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/server

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
tierstring, pattern ^[0-9]+gb$예서버 크기. list_server_sizes의 tier(예: 4gb).
regionstring, pattern ^[a-z]{2}-[a-z]+-[0-9]$아니요위치. 없으면 프로젝트 위치. list_server_sizes의 region.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "tier": {
      "type": "string",
      "pattern": "^[0-9]+gb$",
      "description": "서버 크기. list_server_sizes의 tier(예: 4gb)."
    },
    "region": {
      "type": "string",
      "pattern": "^[a-z]{2}-[a-z]+-[0-9]$",
      "description": "위치. 없으면 프로젝트 위치. list_server_sizes의 region."
    }
  },
  "required": [
    "ref",
    "tier"
  ],
  "additionalProperties": false
}

resize_server 서버 크기 바꾸기

파괴적

전용 서버의 크기를 바꿔요. when=now는 지금, tonight는 서버 위치 시간 새벽 3~5시. 대기 서버가 없으면 3~5분 응답하지 않고, 있으면 전환하는 몇 초만 멈춰요. 크기 바꾸기는 무료이고 월 금액은 새 크기 값이에요(list_server_sizes). 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPATCH /projects/{ref}/server

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
tierstring, pattern ^[0-9]+gb$예서버 크기. list_server_sizes의 tier(예: 4gb).
whenstring, now | tonight아니요now(지금, 기본) 또는 tonight(새벽 3~5시).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "tier": {
      "type": "string",
      "pattern": "^[0-9]+gb$",
      "description": "서버 크기. list_server_sizes의 tier(예: 4gb)."
    },
    "when": {
      "type": "string",
      "enum": [
        "now",
        "tonight"
      ],
      "description": "now(지금, 기본) 또는 tonight(새벽 3~5시)."
    }
  },
  "required": [
    "ref",
    "tier"
  ],
  "additionalProperties": false
}

set_standby 대기 서버

파괴적

같은 위치·같은 크기의 대기 서버를 켜거나 꺼요. 데이터베이스를 계속 복제하고, 월 금액은 그 크기 값과 같아요(list_server_sizes). auto_failover=true면 주 서버가 60초 응답하지 않을 때 대기 서버로 저절로 바꿔요(대기 서버가 있어야 해요). 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/server/standby

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
standbyboolean예대기 서버를 둘지.
auto_failoverboolean아니요자동 전환. 기본 false.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "standby": {
      "type": "boolean",
      "description": "대기 서버를 둘지."
    },
    "auto_failover": {
      "type": "boolean",
      "description": "자동 전환. 기본 false."
    }
  },
  "required": [
    "ref",
    "standby"
  ],
  "additionalProperties": false
}

move_server 서버 위치 옮기기

파괴적

전용 서버를 다른 위치로 옮겨요. 무료이고 한 달에 한 번이에요(next_move_at). 새 위치에 서버를 만들어 복제하고 주소를 바꾸는 순간 쓰기가 몇 초 멈춰요. 옛 서버는 7일 남겨요. 월 금액은 새 위치 값이에요(list_server_sizes). 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPOST /projects/{ref}/server/move

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
regionstring, pattern ^[a-z]{2}-[a-z]+-[0-9]$예위치. list_server_sizes의 region(예: kr-seoul-1).
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "region": {
      "type": "string",
      "pattern": "^[a-z]{2}-[a-z]+-[0-9]$",
      "description": "위치. list_server_sizes의 region(예: kr-seoul-1)."
    }
  },
  "required": [
    "ref",
    "region"
  ],
  "additionalProperties": false
}

release_server 전용 서버 반납

파괴적

전용 서버를 반납해요: 마지막 백업을 받고 데이터베이스와 앱을 공용 서버로 옮긴 뒤 서버(와 대기 서버)를 지워요. 옮기는 동안 쓰기가 멈춰요. 사용자가 요청할 때만 쓰고 confirm에 ref를 그대로 넣으세요. 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTDELETE /projects/{ref}/server

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
confirmstring예프로젝트 ID(ref). ref와 같아야 해요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "confirm": {
      "type": "string",
      "description": "프로젝트 ID(ref). ref와 같아야 해요."
    }
  },
  "required": [
    "ref",
    "confirm"
  ],
  "additionalProperties": false
}

set_restore_days 되돌리기 기간

파괴적

특정 시각으로 되돌릴 수 있는 기간을 7일 또는 28일로 정해요. 28일은 전용 서버에서만 되고 월 추가 요금이 있어요(get_server의 options, get_billing). 소유자·관리자만 돼요.

이름설명
토큰 범위write
역할project.admin 소유자·관리자
콘솔 도우미 확인묻지 않아요
RESTPUT /projects/{ref}/server/restore-days

입력

이름형식필수설명
refstring, pattern ^[a-z]{20}$예프로젝트 ID(ref). list_projects로 확인해요.
daysinteger, 7 | 28예7 또는 28.
JSON 스키마
{
  "type": "object",
  "properties": {
    "ref": {
      "type": "string",
      "pattern": "^[a-z]{20}$",
      "description": "프로젝트 ID(ref). list_projects로 확인해요."
    },
    "days": {
      "type": "integer",
      "enum": [
        7,
        28
      ],
      "description": "7 또는 28."
    }
  },
  "required": [
    "ref",
    "days"
  ],
  "additionalProperties": false
}

list_platform_settings 플랫폼 설정 목록

읽기 전용

재배포 없이 바꾸는 플랫폼 설정마다 set, source(env 또는 stored), stored, updated_at, updated_by를 돌려줘요. 값은 절대 돌려주지 않아요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

입력이 없어요.

JSON 스키마
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

set_platform_setting 플랫폼 설정 저장

파괴적

플랫폼 설정 값 하나를 암호화해 저장해요. 30초 안에 적용되고, 서버 환경에 같은 설정이 있으면 그 값이 먼저예요(source). 값은 다시 안 보여 주고 누가 바꿨는지만 감사 기록에 남아요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
keystring, BLACKWALL_IMPORT_SUPABASE_CLIENT_ID | BLACKWALL_IMPORT_SUPABASE_CLIENT_SECRET | BLACKWALL_SERVER_REQUESTS | BLACKWALL_SERVER_NIGHT_UPSCALE | BLACKWALL_SERVER_REQUESTS_REPO | BLACKWALL_POOL_URL | BLACKWALL_POOL_SECRET | BLACKWALL_POOL_LABEL | BLACKWALL_CI_POOL | BLACKWALL_FUNCTION_AGENTS | BLACKWALL_FUNCTION_HOST | BLACKWALL_APP_AGENTS | BLACKWALL_APP_HOST | BLACKWALL_PROJECT_NETWORKS | BLACKWALL_PROJECT_DISK_LIMITS | BLACKWALL_PROJECT_SLICES | BLACKWALL_SERVER_AUTOSCALE | BLACKWALL_PROJECT_READS_PER_MINUTE | BLACKWALL_PROJECT_WRITES_PER_MINUTE | BLACKWALL_PARKING_HOSTS | BLACKWALL_BUILD_CACHE_BUCKET예설정 이름. list_platform_settings가 돌려줘요.
valuestring, min length 1, max length 2000예저장할 값. 공백 없이 한 줄.
JSON 스키마
{
  "type": "object",
  "properties": {
    "key": {
      "type": "string",
      "enum": [
        "BLACKWALL_IMPORT_SUPABASE_CLIENT_ID",
        "BLACKWALL_IMPORT_SUPABASE_CLIENT_SECRET",
        "BLACKWALL_SERVER_REQUESTS",
        "BLACKWALL_SERVER_NIGHT_UPSCALE",
        "BLACKWALL_SERVER_REQUESTS_REPO",
        "BLACKWALL_POOL_URL",
        "BLACKWALL_POOL_SECRET",
        "BLACKWALL_POOL_LABEL",
        "BLACKWALL_CI_POOL",
        "BLACKWALL_FUNCTION_AGENTS",
        "BLACKWALL_FUNCTION_HOST",
        "BLACKWALL_APP_AGENTS",
        "BLACKWALL_APP_HOST",
        "BLACKWALL_PROJECT_NETWORKS",
        "BLACKWALL_PROJECT_DISK_LIMITS",
        "BLACKWALL_PROJECT_SLICES",
        "BLACKWALL_SERVER_AUTOSCALE",
        "BLACKWALL_PROJECT_READS_PER_MINUTE",
        "BLACKWALL_PROJECT_WRITES_PER_MINUTE",
        "BLACKWALL_PARKING_HOSTS",
        "BLACKWALL_BUILD_CACHE_BUCKET"
      ],
      "description": "설정 이름. list_platform_settings가 돌려줘요."
    },
    "value": {
      "type": "string",
      "minLength": 1,
      "maxLength": 2000,
      "description": "저장할 값. 공백 없이 한 줄."
    }
  },
  "required": [
    "key",
    "value"
  ],
  "additionalProperties": false
}

clear_platform_setting 플랫폼 설정 지우기

파괴적

저장한 값을 지워요. 서버 환경에 같은 설정이 있으면 그 값은 그대로 쓰여요. 저장한 값이 없으면 바꾸는 게 없어요. 운영자만 쓸 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
keystring, BLACKWALL_IMPORT_SUPABASE_CLIENT_ID | BLACKWALL_IMPORT_SUPABASE_CLIENT_SECRET | BLACKWALL_SERVER_REQUESTS | BLACKWALL_SERVER_NIGHT_UPSCALE | BLACKWALL_SERVER_REQUESTS_REPO | BLACKWALL_POOL_URL | BLACKWALL_POOL_SECRET | BLACKWALL_POOL_LABEL | BLACKWALL_CI_POOL | BLACKWALL_FUNCTION_AGENTS | BLACKWALL_FUNCTION_HOST | BLACKWALL_APP_AGENTS | BLACKWALL_APP_HOST | BLACKWALL_PROJECT_NETWORKS | BLACKWALL_PROJECT_DISK_LIMITS | BLACKWALL_PROJECT_SLICES | BLACKWALL_SERVER_AUTOSCALE | BLACKWALL_PROJECT_READS_PER_MINUTE | BLACKWALL_PROJECT_WRITES_PER_MINUTE | BLACKWALL_PARKING_HOSTS | BLACKWALL_BUILD_CACHE_BUCKET예설정 이름. list_platform_settings가 돌려줘요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "key": {
      "type": "string",
      "enum": [
        "BLACKWALL_IMPORT_SUPABASE_CLIENT_ID",
        "BLACKWALL_IMPORT_SUPABASE_CLIENT_SECRET",
        "BLACKWALL_SERVER_REQUESTS",
        "BLACKWALL_SERVER_NIGHT_UPSCALE",
        "BLACKWALL_SERVER_REQUESTS_REPO",
        "BLACKWALL_POOL_URL",
        "BLACKWALL_POOL_SECRET",
        "BLACKWALL_POOL_LABEL",
        "BLACKWALL_CI_POOL",
        "BLACKWALL_FUNCTION_AGENTS",
        "BLACKWALL_FUNCTION_HOST",
        "BLACKWALL_APP_AGENTS",
        "BLACKWALL_APP_HOST",
        "BLACKWALL_PROJECT_NETWORKS",
        "BLACKWALL_PROJECT_DISK_LIMITS",
        "BLACKWALL_PROJECT_SLICES",
        "BLACKWALL_SERVER_AUTOSCALE",
        "BLACKWALL_PROJECT_READS_PER_MINUTE",
        "BLACKWALL_PROJECT_WRITES_PER_MINUTE",
        "BLACKWALL_PARKING_HOSTS",
        "BLACKWALL_BUILD_CACHE_BUCKET"
      ],
      "description": "설정 이름. list_platform_settings가 돌려줘요."
    }
  },
  "required": [
    "key"
  ],
  "additionalProperties": false
}

list_platform_servers 플랫폼 서버 목록

읽기 전용

우리 서버(서비스 서버·빌드 서버·검사 실행 묶음·상시 검사 기계·데이터베이스 대기 서버·고정 출구 서버·백업 저장소)마다 지금 크기, 최근 24시간 사용률, 월 원가(USD), 올리기·내리기가 요청할 변경(raise, lower), 진행 중인 요청과 최근 요청을 돌려줘요. 기계는 구글에서 바로 읽어요(machines: 이름·zone·상태·크기·마지막 켜짐). source가 unread면 구글이 답하지 않은 줄이고 read_error에 이유가 있어요. quota는 프로젝트의 CPU 할당량과 쓰는 양(전체 리전, asia-northeast3, us-west1)이에요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

입력이 없어요.

JSON 스키마
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

get_platform_cpu_history 서비스 서버 CPU 기록

읽기 전용

서비스 서버의 최근 CPU를 분 단위 기록에서 읽어요(host_samples). 구간마다 평균·최고(buckets), 그리고 80%·95% 이상이었던 분 수, 따로 일어난 횟수, 가장 길게 이어진 시간과 시작 시각(over)을 돌려줘요. "몇 번, 얼마나 오래"를 보고 서버를 올릴지 판단할 때 써요. samples가 expected_samples보다 많이 적으면 그 시간에는 기록이 없었던 거예요. 기록은 48시간만 남아요. 운영자만 쓸 수 있어요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
hoursinteger, min 1, max 48아니요몇 시간 전부터. 기본 24.
bucket_minutesinteger, min 1, max 60아니요구간 길이(분). 기본 5.
JSON 스키마
{
  "type": "object",
  "properties": {
    "hours": {
      "type": "integer",
      "minimum": 1,
      "maximum": 48,
      "description": "몇 시간 전부터. 기본 24."
    },
    "bucket_minutes": {
      "type": "integer",
      "minimum": 1,
      "maximum": 60,
      "description": "구간 길이(분). 기본 5."
    }
  },
  "additionalProperties": false
}

request_platform_server_change 플랫폼 서버 변경 요청

파괴적

서버 하나의 변경을 요청해요: 서비스 서버 크기(main, resize), 빌드 서버 켜기·끄기·크기(build), 데이터베이스 대기 서버 켜기·끄기(standby), 백업 다른 지역 사본(backup, replica), 기계 하나를 이름으로 켜기·끄기·크기(vm), 상시 검사 기계 끄기(runner, retire: 다섯 저장소 RUNNER 변수를 먼저 지우고 확인한 뒤 끔), 검사 실행 묶음 정리(pool, reset: 켜져 있지만 검사를 돌리지 않는 기계를 모두 끔), 검사 기계 이미지 굽기(pool, bake: 임시 기계를 startup.sh로 준비해 이미지 묶음 oneserver-pool로 만들고 기계는 지움), Cloud NAT 만들기(network, nat: region의 라우터와 NAT가 없으면 만듦), 빌드 기계 이미지 굽기(build-image, bake: 임시 기계에 docker·node·플랫폼·빌드 이미지를 설치해 이미지 묶음 blackwall-build로 만들고 기계는 지움. 새 빌드 기계가 그 이미지로 빨리 켜짐). 리컨사일러가 deploy 워크플로로, vm·runner·pool·network·build-image는 이 서버의 서비스 계정으로 실행해요. 서비스 서버 크기 변경은 모든 사이트가 3~5분 멈춰서 confirm=true가 있어야 하고, 기본 시각은 tonight(한국 시간 03:00~05:00)이에요. 서버마다 끝나지 않은 요청은 하나만 돼요. BLACKWALL_SERVER_REQUESTS=on일 때만 돼요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
serverstring, main | build | standby | backup | vm | runner | pool | network | build-image예바꿀 서버. vm은 기계 하나를 이름으로, runner는 상시 검사 기계 끄기, pool은 검사 실행 묶음, network는 Cloud NAT, build-image는 빌드 기계 이미지.
actionstring, resize | on | off | replica | start | stop | retire | reset | nat | bake예main은 resize, build는 on·off·resize, standby는 on·off, backup은 replica, vm은 start·stop·resize, runner는 retire, pool은 reset·bake, network는 nat, build-image는 bake.
regionstring, us-west1아니요network nat의 지역. 기본 us-west1(검사 실행 묶음의 지역).
tostring, e2-medium | e2-standard-2 | e2-standard-4 | e2-standard-8아니요resize의 새 크기.
instancestring아니요vm의 기계 이름: blackwall-build, blackwall-db-standby, oneserver-runner, oneserver-pool-1~6.
zonestring아니요vm의 zone. 비우면 그 기계의 기본 zone.
reposarray<string>아니요runner retire에서 RUNNER를 지울 저장소(owner/name). 비우면 다섯 저장소.
whenstring, now | tonight아니요now 또는 tonight(한국 시간 03:00~05:00). main은 tonight가 기본, 나머지는 now가 기본.
confirmboolean아니요main resize에 필요해요: 3~5분 멈춤을 알고 요청한다는 뜻.
no_downtimeboolean아니요main resize를 멈춤 없이. 건강한 대기 서버와 사이트를 받는 두 번째 서버가 있어야 해서, 지금은 거절돼요.
locationstring아니요backup replica의 지역. 기본 us-west1(오리건), none이면 사본을 멈춰요.
reasonstring, max length 300아니요왜 바꾸는지. 감사 기록에 남아요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "server": {
      "type": "string",
      "enum": [
        "main",
        "build",
        "standby",
        "backup",
        "vm",
        "runner",
        "pool",
        "network",
        "build-image"
      ],
      "description": "바꿀 서버. vm은 기계 하나를 이름으로, runner는 상시 검사 기계 끄기, pool은 검사 실행 묶음, network는 Cloud NAT, build-image는 빌드 기계 이미지."
    },
    "action": {
      "type": "string",
      "enum": [
        "resize",
        "on",
        "off",
        "replica",
        "start",
        "stop",
        "retire",
        "reset",
        "nat",
        "bake"
      ],
      "description": "main은 resize, build는 on·off·resize, standby는 on·off, backup은 replica, vm은 start·stop·resize, runner는 retire, pool은 reset·bake, network는 nat, build-image는 bake."
    },
    "region": {
      "type": "string",
      "enum": [
        "us-west1"
      ],
      "description": "network nat의 지역. 기본 us-west1(검사 실행 묶음의 지역)."
    },
    "to": {
      "type": "string",
      "enum": [
        "e2-medium",
        "e2-standard-2",
        "e2-standard-4",
        "e2-standard-8"
      ],
      "description": "resize의 새 크기."
    },
    "instance": {
      "type": "string",
      "description": "vm의 기계 이름: blackwall-build, blackwall-db-standby, oneserver-runner, oneserver-pool-1~6."
    },
    "zone": {
      "type": "string",
      "description": "vm의 zone. 비우면 그 기계의 기본 zone."
    },
    "repos": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "description": "runner retire에서 RUNNER를 지울 저장소(owner/name). 비우면 다섯 저장소."
    },
    "when": {
      "type": "string",
      "enum": [
        "now",
        "tonight"
      ],
      "description": "now 또는 tonight(한국 시간 03:00~05:00). main은 tonight가 기본, 나머지는 now가 기본."
    },
    "confirm": {
      "type": "boolean",
      "description": "main resize에 필요해요: 3~5분 멈춤을 알고 요청한다는 뜻."
    },
    "no_downtime": {
      "type": "boolean",
      "description": "main resize를 멈춤 없이. 건강한 대기 서버와 사이트를 받는 두 번째 서버가 있어야 해서, 지금은 거절돼요."
    },
    "location": {
      "type": "string",
      "description": "backup replica의 지역. 기본 us-west1(오리건), none이면 사본을 멈춰요."
    },
    "reason": {
      "type": "string",
      "maxLength": 300,
      "description": "왜 바꾸는지. 감사 기록에 남아요."
    }
  },
  "required": [
    "server",
    "action"
  ],
  "additionalProperties": false
}

get_platform_server_request 플랫폼 서버 변경 요청 보기

읽기 전용

요청 하나의 상태(queued, dispatched, done, failed, refused, canceled)와 지금까지의 기록, 워크플로 실행 주소(run_url)를 돌려줘요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
idstring예요청 id. request_platform_server_change나 list_platform_servers가 돌려줘요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "요청 id. request_platform_server_change나 list_platform_servers가 돌려줘요."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}

cancel_platform_server_request 플랫폼 서버 변경 요청 취소

파괴적

아직 실행을 시작하지 않은(queued) 요청을 취소해요. 이미 시작한 요청은 GitHub의 실행 화면에서 멈춰야 해요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
idstring예요청 id. request_platform_server_change나 list_platform_servers가 돌려줘요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "요청 id. request_platform_server_change나 list_platform_servers가 돌려줘요."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}

list_github_variables GitHub 저장소 변수 목록

읽기 전용

플랫폼의 GitHub App이 설치된 저장소의 Actions 변수(vars.RUNNER 같은)를 이름·값·바뀐 때와 함께 돌려줘요. App에 Variables 읽기 권한이 없으면 그 권한을 주는 방법을 알려 줘요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
repostring, pattern ^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$예저장소 owner/name. 예: Blackkyle8/BlackAll.
JSON 스키마
{
  "type": "object",
  "properties": {
    "repo": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$",
      "description": "저장소 owner/name. 예: Blackkyle8/BlackAll."
    }
  },
  "required": [
    "repo"
  ],
  "additionalProperties": false
}

set_github_variable GitHub 저장소 변수 저장

파괴적

저장소의 Actions 변수 하나를 저장해요(없으면 만들어요). 누가 어느 저장소의 어떤 변수를 바꿨는지 감사 기록에 남아요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
repostring, pattern ^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$예저장소 owner/name. 예: Blackkyle8/BlackAll.
namestring, pattern ^[A-Za-z_][A-Za-z0-9_]*$예변수 이름. 예: RUNNER.
valuestring, max length 48000예값.
JSON 스키마
{
  "type": "object",
  "properties": {
    "repo": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$",
      "description": "저장소 owner/name. 예: Blackkyle8/BlackAll."
    },
    "name": {
      "type": "string",
      "pattern": "^[A-Za-z_][A-Za-z0-9_]*$",
      "description": "변수 이름. 예: RUNNER."
    },
    "value": {
      "type": "string",
      "maxLength": 48000,
      "description": "값."
    }
  },
  "required": [
    "repo",
    "name",
    "value"
  ],
  "additionalProperties": false
}

delete_github_variable GitHub 저장소 변수 지우기

파괴적

저장소의 Actions 변수 하나를 지워요. 예: RUNNER를 지우면 그 저장소 검사는 GitHub 기계(ubuntu-latest)로 가요. 감사 기록에 남아요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
repostring, pattern ^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$예저장소 owner/name. 예: Blackkyle8/BlackAll.
namestring, pattern ^[A-Za-z_][A-Za-z0-9_]*$예변수 이름. 예: RUNNER.
JSON 스키마
{
  "type": "object",
  "properties": {
    "repo": {
      "type": "string",
      "pattern": "^[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+$",
      "description": "저장소 owner/name. 예: Blackkyle8/BlackAll."
    },
    "name": {
      "type": "string",
      "pattern": "^[A-Za-z_][A-Za-z0-9_]*$",
      "description": "변수 이름. 예: RUNNER."
    }
  },
  "required": [
    "repo",
    "name"
  ],
  "additionalProperties": false
}

list_platform_operators 운영자 목록

읽기 전용

운영자 주소마다 source(env: 서버 환경 BLACKWALL_OPERATOR_EMAILS, stored: 운영자가 넣은 것), 누가 언제 넣었는지를 돌려줘요. 운영자 도구를 쓰려면 목록에 더해 그 계정에 2단계 인증이 켜져 있어야 해요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

입력이 없어요.

JSON 스키마
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

add_platform_operator 운영자 넣기

파괴적

주소 하나를 운영자 목록에 넣어요. 재배포 없이 30초 안에 적용되고 감사 기록에 남아요. 이미 있으면 바꾸는 게 없어요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
emailstring, max length 320예주소. 예: [email protected].
JSON 스키마
{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "maxLength": 320,
      "description": "주소. 예: [email protected]."
    }
  },
  "required": [
    "email"
  ],
  "additionalProperties": false
}

remove_platform_operator 운영자 빼기

파괴적

운영자가 넣은(source stored) 주소 하나를 목록에서 빼요. 서버 환경에 있는 주소와 자기 주소는 뺄 수 없어요. 감사 기록에 남아요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
emailstring, max length 320예주소. 예: [email protected].
JSON 스키마
{
  "type": "object",
  "properties": {
    "email": {
      "type": "string",
      "maxLength": 320,
      "description": "주소. 예: [email protected]."
    }
  },
  "required": [
    "email"
  ],
  "additionalProperties": false
}

list_platform_runs 플랫폼 워크플로 실행 목록

읽기 전용

One Server 저장소의 checks, deploy, ops, static-egress 워크플로의 최근 실행을 새것부터 돌려줘요: id, status, conclusion, age_minutes, url. 15분 넘게 기계를 기다리는(queued) 실행은 stuck: true예요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
workflowstring, checks.yml | deploy.yml | ops.yml | static-egress.yml아니요한 워크플로만. 비우면 넷 다.
per_workflowinteger, min 1, max 20아니요워크플로마다 몇 개. 기본 5.
JSON 스키마
{
  "type": "object",
  "properties": {
    "workflow": {
      "type": "string",
      "enum": [
        "checks.yml",
        "deploy.yml",
        "ops.yml",
        "static-egress.yml"
      ],
      "description": "한 워크플로만. 비우면 넷 다."
    },
    "per_workflow": {
      "type": "integer",
      "minimum": 1,
      "maximum": 20,
      "description": "워크플로마다 몇 개. 기본 5."
    }
  },
  "additionalProperties": false
}

cancel_platform_run 플랫폼 워크플로 실행 취소

파괴적

끝나지 않은 실행 하나를 취소해요. 배포 중인 실행을 취소하면 그 배포는 반쯤 된 채로 남을 수 있어요. 감사 기록에 남아요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인항상 물어요

입력

이름형식필수설명
idinteger, min 1예실행 id. list_platform_runs가 돌려줘요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "minimum": 1,
      "description": "실행 id. list_platform_runs가 돌려줘요."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}

rerun_platform_run 플랫폼 워크플로 다시 실행

파괴적

끝난 실행 하나를 다시 돌려요. failed_only=true면 실패한 작업만이에요. 감사 기록에 남아요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
idinteger, min 1예실행 id. list_platform_runs가 돌려줘요.
failed_onlyboolean아니요실패한 작업만 다시. 기본 false.
JSON 스키마
{
  "type": "object",
  "properties": {
    "id": {
      "type": "integer",
      "minimum": 1,
      "description": "실행 id. list_platform_runs가 돌려줘요."
    },
    "failed_only": {
      "type": "boolean",
      "description": "실패한 작업만 다시. 기본 false."
    }
  },
  "required": [
    "id"
  ],
  "additionalProperties": false
}

list_platform_checks 플랫폼 검사 목록

읽기 전용

One Server가 GitHub Actions 없이 직접 돌리는 저장소 검사(BLACKWALL_OWN_CI)의 최근 실행을 새것부터 돌려줘요: kind(main, pr, merge), commit, state, 작업별 state·step·machine, broke_main(main을 깨뜨린 커밋), had_stuck(멈춘 기계를 다시 돌림). 지금 일하는 컨트롤러(controller: seoul 또는 tokyo)와 통과하면 병합 대기(merge_when_green)도 돌려줘요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
limitinteger, min 1, max 50아니요몇 개. 기본 20.
JSON 스키마
{
  "type": "object",
  "properties": {
    "limit": {
      "type": "integer",
      "minimum": 1,
      "maximum": 50,
      "description": "몇 개. 기본 20."
    }
  },
  "additionalProperties": false
}

set_merge_when_green 통과하면 병합

파괴적

플랫폼 저장소의 풀 리퀘스트 하나를 통과하면 병합 대기에 넣거나(enabled=true) 빼요(false). 대기 중인 풀 리퀘스트를 main 위에 함께 합쳐 검사하고, 통과하면 넣은 순서대로 병합해요. 실패하면 반씩 나눠 다시 검사해 원인 하나를 돌려보내고 나머지는 병합해요. main과 충돌하는 것은 충돌한 파일 이름과 함께 돌려보내요. 감사 기록에 남아요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
printeger, min 1예풀 리퀘스트 번호. 예: 431.
enabledboolean예true면 넣고 false면 빼요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "pr": {
      "type": "integer",
      "minimum": 1,
      "description": "풀 리퀘스트 번호. 예: 431."
    },
    "enabled": {
      "type": "boolean",
      "description": "true면 넣고 false면 빼요."
    }
  },
  "required": [
    "pr",
    "enabled"
  ],
  "additionalProperties": false
}

get_ci_machines 검사 기계

읽기 전용

검사와 배포를 돌리는 기계를 돌려줘요: 상시 배포 기계(oneserver-runner), 검사 실행 묶음(oneserver-pool-N), 우리 검사의 도쿄 대기 컨트롤러(oneserver-ci-standby). 기계마다 status, zone, last_start, registration(GitHub 러너 등록 상태), last_job(마지막으로 받은 작업)과, 지금 일하는 검사 컨트롤러(controller)예요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

입력이 없어요.

JSON 스키마
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

restart_ci_machine 검사 기계 다시 켜기

파괴적

검사 기계 하나를 다시 켜요(Google의 reset, 전원 버튼과 같아요). 그 기계에서 돌던 작업은 끊겨요. oneserver-runner, oneserver-pool-<번호>, oneserver-ci-standby만 되고, 다른 이름은 Google에 묻기 전에 거절해요. 감사 기록에 남아요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
namestring, pattern ^(oneserver-runner(-[a-z0-9-]+)?|oneserver-pool-[0-9]+|oneserver-ci-standby)$예기계 이름. 예: oneserver-runner. get_ci_machines가 돌려줘요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "pattern": "^(oneserver-runner(-[a-z0-9-]+)?|oneserver-pool-[0-9]+|oneserver-ci-standby)$",
      "description": "기계 이름. 예: oneserver-runner. get_ci_machines가 돌려줘요."
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}

renew_ci_registration 검사 기계 다시 등록

파괴적

기계의 GitHub 러너를 플랫폼의 GitHub App 토큰으로 다시 등록해요(개인 토큰 없이). oneserver-runner는 저장소마다 새 등록 토큰을 받아 다시 켜고, oneserver-pool-<번호>는 남은 등록을 지우고 꺼서 컨트롤러가 새로 등록하게 해요. 감사 기록에 남아요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
namestring, pattern ^(oneserver-runner(-[a-z0-9-]+)?|oneserver-pool-[0-9]+|oneserver-ci-standby)$예기계 이름. 예: oneserver-runner. get_ci_machines가 돌려줘요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "name": {
      "type": "string",
      "pattern": "^(oneserver-runner(-[a-z0-9-]+)?|oneserver-pool-[0-9]+|oneserver-ci-standby)$",
      "description": "기계 이름. 예: oneserver-runner. get_ci_machines가 돌려줘요."
    }
  },
  "required": [
    "name"
  ],
  "additionalProperties": false
}

set_up_build_cache_bucket 빌드 캐시 버킷 준비

파괴적

빌드 캐시 전용 Google Cloud Storage 버킷을 빌드 기계가 있는 지역에 만들고(없을 때만), 14일 뒤 지우는 규칙을 걸고, 빌드 기계의 서비스 계정에 만들기·읽기 권한만 주고(지우기는 안 줘요), 플랫폼 설정 BLACKWALL_BUILD_CACHE_BUCKET에 저장해요. 이름은 프로젝트와 지역으로 정해져요(직접 못 적어요). 지역은 asia-northeast1(도쿄)·asia-northeast3(서울)·us-west1(오레곤)뿐이에요. 다시 불러도 바뀌는 게 없어요. 본체 서버의 Google 계정에 버킷 만들기 권한이 없으면 403으로 멈추고 콘솔에서 줄 권한을 알려줘요. 빌드 기계가 쓸 수 있다고 확인되기 전에는 설정을 저장하지 않아요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
regionstring, asia-northeast1 | asia-northeast3 | us-west1예빌드 기계가 있는 지역. 지금 풀이 도쿄면 asia-northeast1.
service_accountstring, max length 320아니요권한을 줄 서비스 계정. 비우면 blackwall-build 원형 기계의 계정을 찾아 써요.
JSON 스키마
{
  "type": "object",
  "properties": {
    "region": {
      "type": "string",
      "enum": [
        "asia-northeast1",
        "asia-northeast3",
        "us-west1"
      ],
      "description": "빌드 기계가 있는 지역. 지금 풀이 도쿄면 asia-northeast1."
    },
    "service_account": {
      "type": "string",
      "maxLength": 320,
      "description": "권한을 줄 서비스 계정. 비우면 blackwall-build 원형 기계의 계정을 찾아 써요."
    }
  },
  "required": [
    "region"
  ],
  "additionalProperties": false
}

get_platform_overview 플랫폼 전체 상황

읽기 전용

플랫폼 전체를 한 번에 돌려줘요: 조직·프로젝트 수(상태별·요금제별), 준비되지 않은 프로젝트, 고객 서버와 그 작업(대기·실행·최근 7일 실패, id와 경과 분), 전용 디스크·전용 서버 요청(dedicated_requests: id, target disk·vm, 상태, 경과 분), 최근 24시간 배포(상태별, 실패, 30분 넘게 멈춘 것), 검사 기계 요약(ci_machines), 서버 판매 스위치, 그리고 손볼 것 목록(attention: what, id, detail, age_minutes, next_tool). 아무것도 바꾸지 않아요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

입력이 없어요.

JSON 스키마
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

find_customer 고객 찾기

읽기 전용

주소(이메일), 조직 id, 사용자 id, 프로젝트 ref·id, 도메인, 조직이나 프로젝트 이름으로 조직을 찾아요(최대 10개). 조직마다 matched_by, 소유자 주소, 요금제, 상태, 정지 여부와 프로젝트마다 상태, 지역, 마지막 배포, 도메인, 고객 서버, 진행 중인 전용 요청을 돌려줘요. 아무것도 바꾸지 않아요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
querystring, min length 2, max length 320예찾을 것. 예: [email protected], 프로젝트 ref, example.com, 조직 이름.
JSON 스키마
{
  "type": "object",
  "properties": {
    "query": {
      "type": "string",
      "minLength": 2,
      "maxLength": 320,
      "description": "찾을 것. 예: [email protected], 프로젝트 ref, example.com, 조직 이름."
    }
  },
  "required": [
    "query"
  ],
  "additionalProperties": false
}

list_parking_hosts 무료 서버

읽기 전용

무료 프로젝트를 모아 담는 지역별 무료 서버를 돌려줘요: 서버마다 지역, 기계 이름(machine), zone, 상태, 담은 프로젝트 수와 최대(projects, max_projects), 메모리(memory_used_mb, memory_mb), 아직 옮겨 오는 중인 수(moving), 유료로 바뀌어 전용 DB 서버로 옮겨야 하는 프로젝트(paid), 그리고 지역마다 자리를 기다리는 프로젝트 수(waiting)와 스위치(switch: BLACKWALL_PARKING_HOSTS). 아무것도 바꾸지 않아요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

입력이 없어요.

JSON 스키마
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

list_project_placements 프로젝트 위치

읽기 전용

프로젝트마다 운영 데이터베이스가 어디 있는지 돌려줘요: 프로젝트 지역(region), 놓인 곳(placed_on: machine 전용 DB 서버, free_server 무료 서버, disk 메인 서버의 전용 디스크, main_host 메인 서버, shared_cluster 공유 클러스터, none 아직 없음), 기계 이름(machine), zone과 그 zone의 지역(zone_region), 프로젝트 지역 안인지(in_region), 만드는 중인 전용 DB 서버의 zone(pending_zone). 그리고 zone마다 지역, 전용 DB 서버를 만드는지(machines), 놓인 프로젝트 수, 스위치(switch: machines_follow_region), 지역 밖 수(outside_region), 메인 서버에 남은 수(on_main_host). 아무것도 바꾸지 않아요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

입력이 없어요.

JSON 스키마
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

get_platform_server_pricing 고객 서버 크기와 가격

읽기 전용

고객 서버 판매 스위치(policy: customer_hosts, server_sizes_listed, customer_host_regions, krw_per_usd 등)와 크기마다 기계, 메모리, listed(고객에게 보이고 빌릴 수 있는지), plan, margin_floor, 빌려 쓰는 서버 수, 지역마다 기계 원가·전체 원가(USD), 가격(usd_minor 센트, krw_minor 원), 받는 돈(received_usd: 부가세·수수료 뺀 원·달러 중 낮은 쪽), 마진, for_sale을 돌려줘요. violations가 비어 있지 않으면 마진 하한 아래인 가격이 있다는 뜻이에요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

입력이 없어요.

JSON 스키마
{
  "type": "object",
  "properties": {},
  "additionalProperties": false
}

set_platform_server_pricing 고객 서버 판매 스위치 바꾸기

파괴적

server_pricing_policy의 항목을 하나 이상 바꿔요. 예: customer_hosts=true와 server_sizes_listed=true면 고객이 서버 크기를 보고 빌릴 수 있어요. 준 항목만 바뀌고 바로 적용돼요. 감사 기록에 누가 언제 어느 항목을 무엇에서 무엇으로 바꿨는지 남아요. 환율을 바꿔 마진 하한 아래로 내려가는 가격이 생기면 거절해요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
customer_hostsboolean아니요고객이 자기 서버를 빌릴 수 있어요. 끄면 새 요청을 거절해요.
server_sizes_listedboolean아니요서버 크기와 가격을 고객에게 보여 줘요(콘솔·CLI·MCP·REST).
region_ratesboolean아니요지역별 사용량 요금을 적용해요.
build_machine_plansboolean아니요향상·터보 빌드 기계를 Pro 이상에만 열어요.
customer_host_regionsarray<string>, min items 1, max items 20아니요서버를 빌려줄 지역 코드. 예: ["kr-seoul-1"]. 원가가 있는 지역만 돼요.
krw_per_usdnumber, min 100, max 10000아니요마진 검사와 원 가격 계산에 쓰는 환율(원/달러). 기본 1475.
customer_host_grace_daysinteger, min 1, max 30아니요결제가 끊긴 뒤 읽기 전용으로 두는 날 수.
customer_host_create_minutesinteger, min 3, max 60아니요기계가 이만큼 답하지 않으면 지우고 다시 만들어요(분).
customer_host_max_attemptsinteger, min 1, max 10아니요만들기를 몇 번까지 다시 해 보는지.
customer_host_disk_gbinteger, min 10, max 2000아니요새 서버의 디스크 크기(GB).
customer_host_move_daysinteger, min 1, max 365아니요서버 지역 옮기기 사이에 둬야 하는 날 수.
customer_host_retired_daysinteger, min 0, max 30아니요옮긴 뒤 옛 서버를 두는 날 수.
JSON 스키마
{
  "type": "object",
  "properties": {
    "customer_hosts": {
      "type": "boolean",
      "description": "고객이 자기 서버를 빌릴 수 있어요. 끄면 새 요청을 거절해요."
    },
    "server_sizes_listed": {
      "type": "boolean",
      "description": "서버 크기와 가격을 고객에게 보여 줘요(콘솔·CLI·MCP·REST)."
    },
    "region_rates": {
      "type": "boolean",
      "description": "지역별 사용량 요금을 적용해요."
    },
    "build_machine_plans": {
      "type": "boolean",
      "description": "향상·터보 빌드 기계를 Pro 이상에만 열어요."
    },
    "customer_host_regions": {
      "type": "array",
      "items": {
        "type": "string"
      },
      "minItems": 1,
      "maxItems": 20,
      "description": "서버를 빌려줄 지역 코드. 예: [\"kr-seoul-1\"]. 원가가 있는 지역만 돼요."
    },
    "krw_per_usd": {
      "type": "number",
      "minimum": 100,
      "maximum": 10000,
      "description": "마진 검사와 원 가격 계산에 쓰는 환율(원/달러). 기본 1475."
    },
    "customer_host_grace_days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 30,
      "description": "결제가 끊긴 뒤 읽기 전용으로 두는 날 수."
    },
    "customer_host_create_minutes": {
      "type": "integer",
      "minimum": 3,
      "maximum": 60,
      "description": "기계가 이만큼 답하지 않으면 지우고 다시 만들어요(분)."
    },
    "customer_host_max_attempts": {
      "type": "integer",
      "minimum": 1,
      "maximum": 10,
      "description": "만들기를 몇 번까지 다시 해 보는지."
    },
    "customer_host_disk_gb": {
      "type": "integer",
      "minimum": 10,
      "maximum": 2000,
      "description": "새 서버의 디스크 크기(GB)."
    },
    "customer_host_move_days": {
      "type": "integer",
      "minimum": 1,
      "maximum": 365,
      "description": "서버 지역 옮기기 사이에 둬야 하는 날 수."
    },
    "customer_host_retired_days": {
      "type": "integer",
      "minimum": 0,
      "maximum": 30,
      "description": "옮긴 뒤 옛 서버를 두는 날 수."
    }
  },
  "minProperties": 1,
  "additionalProperties": false
}

set_platform_server_size 고객 서버 크기 만들기·바꾸기

파괴적

고객 서버 크기 하나를 만들거나 바꿔요: 구글 기계(machine), 고객에게 보일지(listed), 요금제에 들어가는지(plan), 마진 하한(margin_floor), 지역마다 기계 원가와 가격(regions). 크기 이름은 메모리라서 기계의 메모리와 같아야 해요(1gb는 e2-micro). 새 크기는 listed=true를 주지 않으면 숨겨진 채로 만들어져요. 가격은 크기의 마진 하한을 넘어야 하고, 원가보다 싸게 팔려면 allow_loss=true가 필요해요(하한을 그만큼 낮추고 감사 기록에 남아요). 원 가격을 비우면 usd × krw_per_usd를 1,000원 단위로 올려요. 감사 기록에 무엇에서 무엇으로 바꿨는지 남아요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
sizestring, pattern ^[1-9][0-9]{0,3}gb$예크기 이름(메모리). 예: 1gb, 2gb.
machinestring, e2-micro | e2-small | e2-medium | e2-standard-2 | e2-standard-4 | e2-standard-8 | e2-standard-16 | e2-standard-32 | e2-highmem-2 | e2-highmem-4 | e2-highmem-8 | e2-highmem-16 | e2-highcpu-8 | e2-highcpu-16 | e2-highcpu-32아니요구글 기계. 새 크기에는 꼭 있어야 해요. 예: e2-micro.
listedboolean아니요고객에게 보이고 빌릴 수 있어요. 새 크기의 기본은 false예요.
planstring아니요이 크기가 들어 있는 요금제(예: pro). 그 요금제 청구서에서 이 크기 값을 빼 줘요. null이면 빼요.
margin_floornumber, min -1, max 1아니요가격이 넘어야 하는 마진(0.3은 30%). 0보다 낮으면 allow_loss=true가 필요해요.
allow_lossboolean아니요원가보다 싸게 파는 것을 알고 허용해요. 하한을 필요한 만큼 낮춰요.
regionsarray<object>, max items 20아니요지역마다 원가와 가격. 준 지역만 바뀌어요.
cost_sourcestring, max length 200아니요원가를 어디서 쟀는지. 예: gcp list price asia-northeast3 2026-10. 비우면 운영자 주소.
JSON 스키마
{
  "type": "object",
  "properties": {
    "size": {
      "type": "string",
      "pattern": "^[1-9][0-9]{0,3}gb$",
      "description": "크기 이름(메모리). 예: 1gb, 2gb."
    },
    "machine": {
      "type": "string",
      "enum": [
        "e2-micro",
        "e2-small",
        "e2-medium",
        "e2-standard-2",
        "e2-standard-4",
        "e2-standard-8",
        "e2-standard-16",
        "e2-standard-32",
        "e2-highmem-2",
        "e2-highmem-4",
        "e2-highmem-8",
        "e2-highmem-16",
        "e2-highcpu-8",
        "e2-highcpu-16",
        "e2-highcpu-32"
      ],
      "description": "구글 기계. 새 크기에는 꼭 있어야 해요. 예: e2-micro."
    },
    "listed": {
      "type": "boolean",
      "description": "고객에게 보이고 빌릴 수 있어요. 새 크기의 기본은 false예요."
    },
    "plan": {
      "type": [
        "string",
        "null"
      ],
      "description": "이 크기가 들어 있는 요금제(예: pro). 그 요금제 청구서에서 이 크기 값을 빼 줘요. null이면 빼요."
    },
    "margin_floor": {
      "type": "number",
      "minimum": -1,
      "maximum": 1,
      "description": "가격이 넘어야 하는 마진(0.3은 30%). 0보다 낮으면 allow_loss=true가 필요해요."
    },
    "allow_loss": {
      "type": "boolean",
      "description": "원가보다 싸게 파는 것을 알고 허용해요. 하한을 필요한 만큼 낮춰요."
    },
    "regions": {
      "type": "array",
      "maxItems": 20,
      "description": "지역마다 원가와 가격. 준 지역만 바뀌어요.",
      "items": {
        "type": "object",
        "properties": {
          "region": {
            "type": "string",
            "pattern": "^[a-z]{2}-[a-z]+-[0-9]+$",
            "description": "지역 코드. 예: kr-seoul-1. get_platform_server_pricing의 regions가 돌려줘요."
          },
          "machine_cost_usd": {
            "type": "number",
            "minimum": 0,
            "description": "구글 기계만의 월 원가(USD, 730시간 정가). 디스크·주소·백업 같은 서버마다의 원가는 지역 값에서 더해요."
          },
          "usd": {
            "type": "number",
            "exclusiveMinimum": 0,
            "description": "고객 월 가격(달러, 센트까지, 세금 별도). 예: 39."
          },
          "krw": {
            "type": "integer",
            "exclusiveMinimum": 0,
            "description": "고객 월 가격(원, 부가세 포함). 비우면 usd × 환율(krw_per_usd)을 1,000원 단위로 올려요."
          }
        },
        "required": [
          "region"
        ],
        "additionalProperties": false
      }
    },
    "cost_source": {
      "type": "string",
      "maxLength": 200,
      "description": "원가를 어디서 쟀는지. 예: gcp list price asia-northeast3 2026-10. 비우면 운영자 주소."
    }
  },
  "required": [
    "size"
  ],
  "additionalProperties": false
}

start_support_session 지원 세션 열기

파괴적

고객이 문의했을 때 그 고객 대신 일하려고 고객의 조직에 소유자로 들어가요. 연 동안 그 조직의 프로젝트가 list_projects에 보이고, 다른 모든 도구(배포·데이터베이스·도메인·결제·팀·프로젝트 옮기기 등)를 고객과 같은 권한으로 쓸 수 있어요. reason은 필수이고, 시작과 끝은 고객의 감사 기록에 운영자 주소와 함께 남아요. 기본 60분, 최대 480분이며 시간이 되면 저절로 끝나요. 이미 연 세션에 다시 부르면 시간을 늘려요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
targetstring, max length 320예고객의 조직을 찾는 값: 프로젝트 ID(ref), 조직 id, 또는 고객 이메일(조직을 하나만 가진 경우).
reasonstring, min length 4, max length 500예왜 들어가는지. 예: 문의 #123, 프로젝트 이전 요청. 고객의 감사 기록에 남아요.
minutesinteger, min 5, max 480아니요몇 분 동안. 비우면 60.
JSON 스키마
{
  "type": "object",
  "properties": {
    "target": {
      "type": "string",
      "maxLength": 320,
      "description": "고객의 조직을 찾는 값: 프로젝트 ID(ref), 조직 id, 또는 고객 이메일(조직을 하나만 가진 경우)."
    },
    "reason": {
      "type": "string",
      "minLength": 4,
      "maxLength": 500,
      "description": "왜 들어가는지. 예: 문의 #123, 프로젝트 이전 요청. 고객의 감사 기록에 남아요."
    },
    "minutes": {
      "type": "integer",
      "minimum": 5,
      "maximum": 480,
      "description": "몇 분 동안. 비우면 60."
    }
  },
  "required": [
    "target",
    "reason"
  ],
  "additionalProperties": false
}

end_support_session 지원 세션 끝내기

파괴적

지원 세션을 끝내고 고객 조직의 소유자 자리에서 나와요. id나 target 중 하나를 넣어요. 끝도 고객의 감사 기록에 남아요. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
idstring아니요지원 세션 id. start_support_session이나 list_support_sessions가 돌려줘요.
targetstring, max length 320아니요고객의 조직을 찾는 값: 프로젝트 ID(ref), 조직 id, 또는 고객 이메일(조직을 하나만 가진 경우).
JSON 스키마
{
  "type": "object",
  "properties": {
    "id": {
      "type": "string",
      "format": "uuid",
      "description": "지원 세션 id. start_support_session이나 list_support_sessions가 돌려줘요."
    },
    "target": {
      "type": "string",
      "maxLength": 320,
      "description": "고객의 조직을 찾는 값: 프로젝트 ID(ref), 조직 id, 또는 고객 이메일(조직을 하나만 가진 경우)."
    }
  },
  "additionalProperties": false
}

list_support_sessions 지원 세션 목록

읽기 전용

열린 지원 세션(모든 운영자의 것)을 고객 조직·운영자·사유·끝나는 시각과 함께 돌려줘요. all=true면 끝난 것도 최근 50개까지. 운영자만 돼요.

이름설명
토큰 범위없음
역할조직의 모든 구성원
콘솔 도우미 확인묻지 않아요

입력

이름형식필수설명
allboolean아니요끝난 세션도 함께. 기본 false.
JSON 스키마
{
  "type": "object",
  "properties": {
    "all": {
      "type": "boolean",
      "description": "끝난 세션도 함께. 기본 false."
    }
  },
  "additionalProperties": false
}