@faable/deploy-sdk 2.18.0 → 2.18.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/spec/openapi.json CHANGED
@@ -5982,7 +5982,7 @@
5982
5982
  },
5983
5983
  "ApiErrorCode": {
5984
5984
  "type": "string",
5985
- "description": "Machine-readable error code. One HTTP status per code.\n\n- `bad_request` (400): The request is malformed. `message` says what is wrong.\n- `validation_error` (400): The body, query or path failed schema validation. `details.issues` lists each failing field.\n- `unauthorized` (401): The request carries no valid credentials.\n- `payment_required` (402): The feature is not included in the current plan.\n- `forbidden` (403): The credentials are valid but do not allow this operation.\n- `not_found` (404): The resource does not exist, or not in the caller’s project.\n- `method_not_allowed` (405): The HTTP method is not supported on this path.\n- `conflict` (409): The request conflicts with the current state of the resource.\n- `payload_too_large` (413): The request body exceeds the size limit.\n- `unsupported_media_type` (415): The `Content-Type` is not accepted by this endpoint.\n- `unprocessable_entity` (422): The request is well-formed but cannot be processed.\n- `too_many_requests` (429): Rate limit exceeded. Honour the `Retry-After` header.\n- `internal_error` (500): Unexpected server error. Retry later; the request id is logged.\n- `gone` (410): The resource existed and is gone for good; retrying will not bring it back.\n- `bad_gateway` (502): An upstream the API depends on failed.\n- `service_unavailable` (503): The feature is not configured on this environment, or is temporarily out of service.\n- `database_unavailable` (503): Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.\n- `already_exists` (400): A resource with the same unique field already exists. `details.fields` names the field.\n- `invalid_id` (400): The id in the path is not a valid id for this resource.\n- `invalid_query` (400): The `?query=` FaableQL expression could not be parsed.\n- `invalid_expand` (400): An `?expand=` path is not allowed on this resource.\n- `search_not_supported` (400): This resource does not support `?q=`.\n- `access_denied` (401): The row exists but does not belong to the caller.\n- `invalid_token` (401): The bearer token is missing, malformed or expired.\n- `invalid_apikey` (401): The API key does not exist or has been revoked.\n- `apikey_expired` (401): The API key predates projects and must be recreated.\n- `invalid_build_token` (401): The build token is not valid for this deployment.\n- `build_token_expired` (401): The build token is past its lifetime.\n- `build_token_unusable` (401): The deployment reached a terminal phase, so its build token no longer works.\n- `build_token_app_missing` (401): The app the build token was minted for no longer exists.\n- `user_token_required` (401): The endpoint acts on behalf of a person and the credential carries no user (an API key or a service account).\n- `team_required` (400): The operation needs a project: send it in the `x-faable-project` header (`project_<id>`).\n- `team_or_scope_required` (401): Listing needs either a project in the `x-faable-project` header or a global scope on the token.\n- `auth_account_not_found` (404): There is no Faable Auth account with that id.\n- `tenant_token_not_issued` (404): Faable Auth does not issue a per-account management token for that account (the platform account).\n- `tenant_token_unavailable` (503): Faable Auth could not issue a management token for the account right now. Retry later.\n- `role_required` (403): Your role in the project does not allow this action. `details.required` names the role it needs and `details.role` the one you have.\n- `project_access_denied` (403): The caller is not a member of the project named in `x-faable-project`, or the credential belongs to another project.\n- `project_header_conflict` (400): The request names two different projects (`x-faable-project` and the deprecated `x-faable-team`, or a query param). Send only `x-faable-project`.\n- `invalid_project_id` (400): The project in `x-faable-project` is not a valid project id (`project_` followed by 24 hex characters).\n- `user_suspended` (403): The account is suspended. Contact support@faable.com.\n- `superadmin_only` (403): The operation is restricted to platform staff.\n- `project_not_found` (404): No project with that id for this caller.\n- `owner_only` (403): Only the project owner can manage collaborators.\n- `owner_not_removable` (400): The project owner cannot be removed. Delete the project instead.\n- `last_owner` (409): A project needs at least one owner: make someone else an owner first, or delete the project.\n- `member_not_found` (404): That user is not a member of the project.\n- `billing_owner_only` (403): Only the member who pays for the project can hand billing over.\n- `billing_receiver_not_owner` (409): Billing can only be handed to an owner of the project.\n- `billing_receiver_free_limit` (402): The receiver already has as many free projects as the plan allows.\n- `billing_transfer_requires_support` (409): The project has an active subscription; handing it over is done by support.\n- `billing_unavailable` (503): Billing is not answering; nothing was changed.\n- `billing_owner_not_removable` (409): The member who pays for the project cannot be removed or leave until billing is handed over.\n- `collaborator_not_found` (404): That user is not a collaborator on the project.\n- `invalid_project_name` (400): The project name is not acceptable. `message` says why.\n- `invalid_project_description` (400): The project description is not acceptable (a link, or over the length limit). `message` says why.\n- `owner_suspension_failed` (502): The project owner could not be (un)suspended in Faable Auth. No app was touched; retry.\n- `moderation_hold` (403): The project contains an app disabled by moderation and cannot be deleted. Contact support@faable.com.\n- `app_not_found` (404): No app with that id or slug in this project.\n- `repository_not_linked` (400): The app has no linked repository.\n- `repository_empty` (400): The repository has no commits on the deploy branch yet.\n- `branch_missing` (400): The deploy branch does not exist on the repository. `message` lists the branches that do.\n- `deploy_mode_conflict` (400): The app deploys from its own workflow, so the platform will not create a deployment for it.\n- `deploy_refused` (409): The deploy was refused by quota, plan or an in-flight deployment. `message` says which.\n- `invalid_root_dir` (400): The Root Directory must be a path inside the repository — no leading `/` and no `..`.\n- `root_dir_not_found` (400): The Root Directory does not exist on that ref of the repository.\n- `root_dir_mismatch` (400): The workflow deploys from one directory and platform builds would run from another. Declare `rootDir` in faable.json.\n- `no_workflows` (400): The repository has no GitHub Actions workflows, so a CI gate would never open.\n- `no_deploy_workflow` (400): No workflow in the repository runs `faable deploy`.\n- `invalid_secret_name` (400): Secret names are 1-255 printable ASCII characters and cannot contain '='.\n- `invalid_secret_context` (400): Secrets are scoped to an app or to a profile, nothing else.\n- `app_secrets_only` (400): Only app secrets can be written in bulk.\n- `secrets_access_denied` (401): The caller may not read or write the secrets of that app or profile.\n- `status_forbidden_resource` (403): Only a platform service writes app or domain status.\n- `status_forbidden_field` (403): That field of a deployment status is platform bookkeeping. `message` names it.\n- `status_forbidden_phase` (403): That phase is set by the platform, not by the client.\n- `github_identity_missing` (412): The user has not connected GitHub. Send them through `connect_github`.\n- `github_installation_missing` (412): The Faable GitHub App is not installed on any repository of theirs.\n- `github_repository_not_found` (404): The repository does not exist or the installation cannot see it.\n- `github_token_invalid` (401): The stored GitHub token was rejected; the user must reconnect.\n- `github_permission_denied` (403): The installation lacks a permission this operation needs.\n- `github_installation_suspended` (403): The GitHub App installation is suspended.\n- `github_installation_not_found` (412): The installation id is unknown or the App was uninstalled.\n- `github_repository_blocked` (403): GitHub refuses to serve the source of that repository (403 or 451).\n- `github_rate_limited` (429): GitHub is rate-limiting Faable. Transient: retry after a short wait.\n- `github_token_refresh_failed` (401): GitHub refused to refresh the stored authorization. The user has to reconnect.\n- `github_error` (502): GitHub failed upstream. `message` carries what it said.\n- `repository_already_linked` (409): The repository is already linked to another app. `details.app_id` / `details.app_name` name it.\n- `repository_taken_down` (409): An app built from this repository was taken down for abuse, so the repository cannot be linked again. Not a plan limit — upgrading does not lift it. Restoring the taken-down app does.\n- `invalid_installation_id` (400): The `installation_id` is not a number.\n- `oidc_untrusted` (401): The GitHub Actions OIDC token was rejected. `message` says why.\n- `app_repository_mismatch` (403): The app does not exist or is not linked to the repository the token comes from.\n- `no_app_for_repository` (404): No app is linked to that repository.\n- `ambiguous_app_for_repository` (400): Several apps are linked to that repository; pass `--app-slug`.\n- `rebuild_not_promoted` (409): Only the deployment the app is serving can be rebuilt: promoting a rebuild of anything older would bring back stale code.\n- `rebuild_no_source` (409): The deployment has no stored source (CAS manifest or git commit) to rebuild from.\n- `rebuild_in_flight` (409): A rebuild of this deployment is already queued or building. `details.deployment_id` is that rebuild.\n- `runtime_pin_unavailable` (409): The app has no shared runtime to version: docker and static apps bring their own, and an app that never built has nothing to move.\n- `runtime_repo_pinned` (409): The repository forces the runtime version (runtime.txt, engines.node…), which outranks this setting. `message` names the file; remove that pin and push to manage the version from the platform.\n- `unsupported_runtime_version` (400): The requested version has no runtime image in the platform catalogue. `message` lists the supported versions.\n- `app_disabled` (409): The app is disabled, so it cannot be deployed or provisioned. `message` says why when the reason is public.\n- `app_rate_limited` (429): A new account may only create a few apps in its first 24 hours.\n- `plan_required` (403): The build or feature needs a higher plan. `message` says which.\n- `remote_build_disabled` (409): Remote builds are off for this environment or this app. Deploy with a local build instead.\n- `artifact_deploy_disabled` (409): Artifact deploys are not enabled on this environment.\n- `artifact_too_large` (413): The artifact exceeds the size allowed for the plan.\n- `metrics_unavailable` (503): Traffic metrics are temporarily unavailable — this is not an app with no traffic.\n- `transfer_refused` (409): The app cannot be moved to that project. `message` lists the blockers.\n- `user_not_found` (400): No user with that id in Faable Auth.\n- `waf_rule_not_found` (404): No WAF rule with that pattern on this app.\n- `invite_limit_reached` (429): Too many invitations: a project has at most 20 pending, and a person can send at most 50 a day.\n- `invite_requires_verified_email` (403): Verify your email address before inviting people.\n- `invitation_not_found` (404): No pending invitation with that id in this project.\n- `invitation_invalid` (404): The invitation link is not valid (mistyped, or revoked and replaced).\n- `invitation_expired` (410): The invitation expired. Ask for a new one.\n- `invitation_used` (409): The invitation was already accepted or revoked.\n- `invitation_email_mismatch` (403): The invitation is for another email address than the signed-in account. `details.invited_email` shows it masked.\n- `invitation_email_unverified` (403): The signed-in account has the invited email but hasn't verified it yet.\n- `project_rate_limited` (429): A new account may only create a few projects in its first hours. It opens with time, or with a plan.\n- `project_plan_limited` (402): The Free plan project cap is reached. Upgrade to create more.\n- `domain_invalid` (400): Not a valid hostname. No protocol, port or path.\n- `domain_reserved` (403): Hostnames under that domain are assigned by Faable.\n- `domain_taken` (409): That hostname is already registered on Faable.\n- `invalid_json` (400): The request body is not valid JSON.\n- `missing_github_event` (400): The `x-github-event` header is missing.",
5985
+ "description": "Machine-readable error code. One HTTP status per code.\n\n- `bad_request` (400): The request is malformed. `message` says what is wrong.\n- `validation_error` (400): The body, query or path failed schema validation. `details.issues` lists each failing field.\n- `unauthorized` (401): The request carries no valid credentials.\n- `payment_required` (402): The feature is not included in the current plan.\n- `forbidden` (403): The credentials are valid but do not allow this operation.\n- `not_found` (404): The resource does not exist, or not in the caller’s project.\n- `method_not_allowed` (405): The HTTP method is not supported on this path.\n- `conflict` (409): The request conflicts with the current state of the resource.\n- `payload_too_large` (413): The request body exceeds the size limit.\n- `unsupported_media_type` (415): The `Content-Type` is not accepted by this endpoint.\n- `unprocessable_entity` (422): The request is well-formed but cannot be processed.\n- `too_many_requests` (429): Rate limit exceeded. Honour the `Retry-After` header.\n- `internal_error` (500): Unexpected server error. Retry later; the request id is logged.\n- `gone` (410): The resource existed and is gone for good; retrying will not bring it back.\n- `bad_gateway` (502): An upstream the API depends on failed.\n- `watch_unavailable` (503): The watch cache is not ready (filling or resyncing). Retry with backoff.\n- `watch_expired` (410): The resourceVersion is older than the change log, or from another cache generation. List again and watch from the new resourceVersion.\n- `too_many_watchers` (429): Too many open watches on this server. Retry with backoff.\n- `service_unavailable` (503): The feature is not configured on this environment, or is temporarily out of service.\n- `database_unavailable` (503): Faable cannot reach its database right now. Transient: retry after the `Retry-After` header.\n- `already_exists` (400): A resource with the same unique field already exists. `details.fields` names the field.\n- `invalid_id` (400): The id in the path is not a valid id for this resource.\n- `invalid_query` (400): The `?query=` FaableQL expression could not be parsed.\n- `invalid_expand` (400): An `?expand=` path is not allowed on this resource.\n- `search_not_supported` (400): This resource does not support `?q=`.\n- `access_denied` (401): The row exists but does not belong to the caller.\n- `invalid_token` (401): The bearer token is missing, malformed or expired.\n- `invalid_apikey` (401): The API key does not exist or has been revoked.\n- `apikey_expired` (401): The API key predates projects and must be recreated.\n- `invalid_build_token` (401): The build token is not valid for this deployment.\n- `build_token_expired` (401): The build token is past its lifetime.\n- `build_token_unusable` (401): The deployment reached a terminal phase, so its build token no longer works.\n- `build_token_app_missing` (401): The app the build token was minted for no longer exists.\n- `user_token_required` (401): The endpoint acts on behalf of a person and the credential carries no user (an API key or a service account).\n- `team_required` (400): The operation needs a project: send it in the `x-faable-project` header (`project_<id>`).\n- `team_or_scope_required` (401): Listing needs either a project in the `x-faable-project` header or a global scope on the token.\n- `auth_account_not_found` (404): There is no Faable Auth account with that id.\n- `tenant_token_unavailable` (503): Faable Auth could not issue a management token for the account right now. Retry later.\n- `role_required` (403): Your role in the project does not allow this action. `details.required` names the role it needs and `details.role` the one you have.\n- `project_access_denied` (403): The caller is not a member of the project named in `x-faable-project`, or the credential belongs to another project.\n- `project_header_conflict` (400): The request names two different projects (`x-faable-project` and the deprecated `x-faable-team`, or a query param). Send only `x-faable-project`.\n- `invalid_project_id` (400): The project in `x-faable-project` is not a valid project id (`project_` followed by 24 hex characters).\n- `user_suspended` (403): The account is suspended. Contact support@faable.com.\n- `superadmin_only` (403): The operation is restricted to platform staff.\n- `project_not_found` (404): No project with that id for this caller.\n- `owner_only` (403): Only the project owner can manage collaborators.\n- `owner_not_removable` (400): The project owner cannot be removed. Delete the project instead.\n- `last_owner` (409): A project needs at least one owner: make someone else an owner first, or delete the project.\n- `member_not_found` (404): That user is not a member of the project.\n- `billing_owner_only` (403): Only the member who pays for the project can hand billing over.\n- `billing_receiver_not_owner` (409): Billing can only be handed to an owner of the project.\n- `billing_receiver_free_limit` (402): The receiver already has as many free projects as the plan allows.\n- `billing_transfer_requires_support` (409): The project has an active subscription; handing it over is done by support.\n- `billing_unavailable` (503): Billing is not answering; nothing was changed.\n- `billing_owner_not_removable` (409): The member who pays for the project cannot be removed or leave until billing is handed over.\n- `collaborator_not_found` (404): That user is not a collaborator on the project.\n- `invalid_project_name` (400): The project name is not acceptable. `message` says why.\n- `invalid_project_description` (400): The project description is not acceptable (a link, or over the length limit). `message` says why.\n- `owner_suspension_failed` (502): The project owner could not be (un)suspended in Faable Auth. No app was touched; retry.\n- `moderation_hold` (403): The project contains an app disabled by moderation and cannot be deleted. Contact support@faable.com.\n- `app_not_found` (404): No app with that id or slug in this project.\n- `repository_not_linked` (400): The app has no linked repository.\n- `repository_empty` (400): The repository has no commits on the deploy branch yet.\n- `branch_missing` (400): The deploy branch does not exist on the repository. `message` lists the branches that do.\n- `deploy_mode_conflict` (400): The app deploys from its own workflow, so the platform will not create a deployment for it.\n- `deploy_refused` (409): The deploy was refused by quota, plan or an in-flight deployment. `message` says which.\n- `invalid_root_dir` (400): The Root Directory must be a path inside the repository — no leading `/` and no `..`.\n- `root_dir_not_found` (400): The Root Directory does not exist on that ref of the repository.\n- `root_dir_mismatch` (400): The workflow deploys from one directory and platform builds would run from another. Declare `rootDir` in faable.json.\n- `no_workflows` (400): The repository has no GitHub Actions workflows, so a CI gate would never open.\n- `no_deploy_workflow` (400): No workflow in the repository runs `faable deploy`.\n- `invalid_secret_name` (400): Secret names are 1-255 printable ASCII characters and cannot contain '='.\n- `invalid_secret_context` (400): Secrets are scoped to an app or to a profile, nothing else.\n- `app_secrets_only` (400): Only app secrets can be written in bulk.\n- `secrets_access_denied` (401): The caller may not read or write the secrets of that app or profile.\n- `status_forbidden_resource` (403): Only a platform service writes app or domain status.\n- `status_forbidden_field` (403): That field of a deployment status is platform bookkeeping. `message` names it.\n- `status_forbidden_phase` (403): That phase is set by the platform, not by the client.\n- `github_identity_missing` (412): The user has not connected GitHub. Send them through `connect_github`.\n- `github_installation_missing` (412): The Faable GitHub App is not installed on any repository of theirs.\n- `github_repository_not_found` (404): The repository does not exist or the installation cannot see it.\n- `github_token_invalid` (401): The stored GitHub token was rejected; the user must reconnect.\n- `github_permission_denied` (403): The installation lacks a permission this operation needs.\n- `github_installation_suspended` (403): The GitHub App installation is suspended.\n- `github_installation_not_found` (412): The installation id is unknown or the App was uninstalled.\n- `github_repository_blocked` (403): GitHub refuses to serve the source of that repository (403 or 451).\n- `github_rate_limited` (429): GitHub is rate-limiting Faable. Transient: retry after a short wait.\n- `github_token_refresh_failed` (401): GitHub refused to refresh the stored authorization. The user has to reconnect.\n- `github_error` (502): GitHub failed upstream. `message` carries what it said.\n- `repository_already_linked` (409): The repository is already linked to another app. `details.app_id` / `details.app_name` name it.\n- `repository_taken_down` (409): An app built from this repository was taken down for abuse, so the repository cannot be linked again. Not a plan limit — upgrading does not lift it. Restoring the taken-down app does.\n- `invalid_installation_id` (400): The `installation_id` is not a number.\n- `oidc_untrusted` (401): The GitHub Actions OIDC token was rejected. `message` says why.\n- `app_repository_mismatch` (403): The app does not exist or is not linked to the repository the token comes from.\n- `no_app_for_repository` (404): No app is linked to that repository.\n- `ambiguous_app_for_repository` (400): Several apps are linked to that repository; pass `--app-slug`.\n- `rebuild_not_promoted` (409): Only the deployment the app is serving can be rebuilt: promoting a rebuild of anything older would bring back stale code.\n- `rebuild_no_source` (409): The deployment has no stored source (CAS manifest or git commit) to rebuild from.\n- `rebuild_in_flight` (409): A rebuild of this deployment is already queued or building. `details.deployment_id` is that rebuild.\n- `runtime_pin_unavailable` (409): The app has no shared runtime to version: docker and static apps bring their own, and an app that never built has nothing to move.\n- `runtime_repo_pinned` (409): The repository forces the runtime version (runtime.txt, engines.node…), which outranks this setting. `message` names the file; remove that pin and push to manage the version from the platform.\n- `unsupported_runtime_version` (400): The requested version has no runtime image in the platform catalogue. `message` lists the supported versions.\n- `app_disabled` (409): The app is disabled, so it cannot be deployed or provisioned. `message` says why when the reason is public.\n- `app_rate_limited` (429): A new account may only create a few apps in its first 24 hours.\n- `plan_required` (403): The build or feature needs a higher plan. `message` says which.\n- `remote_build_disabled` (409): Remote builds are off for this environment or this app. Deploy with a local build instead.\n- `artifact_deploy_disabled` (409): Artifact deploys are not enabled on this environment.\n- `artifact_too_large` (413): The artifact exceeds the size allowed for the plan.\n- `metrics_unavailable` (503): Traffic metrics are temporarily unavailable — this is not an app with no traffic.\n- `transfer_refused` (409): The app cannot be moved to that project. `message` lists the blockers.\n- `user_not_found` (400): No user with that id in Faable Auth.\n- `waf_rule_not_found` (404): No WAF rule with that pattern on this app.\n- `invite_limit_reached` (429): Too many invitations: a project has at most 20 pending, and a person can send at most 50 a day.\n- `invite_requires_verified_email` (403): Verify your email address before inviting people.\n- `invitation_not_found` (404): No pending invitation with that id in this project.\n- `invitation_invalid` (404): The invitation link is not valid (mistyped, or revoked and replaced).\n- `invitation_expired` (410): The invitation expired. Ask for a new one.\n- `invitation_used` (409): The invitation was already accepted or revoked.\n- `invitation_email_mismatch` (403): The invitation is for another email address than the signed-in account. `details.invited_email` shows it masked.\n- `invitation_email_unverified` (403): The signed-in account has the invited email but hasn't verified it yet.\n- `project_rate_limited` (429): A new account may only create a few projects in its first hours. It opens with time, or with a plan.\n- `project_plan_limited` (402): The Free plan project cap is reached. Upgrade to create more.\n- `domain_invalid` (400): Not a valid hostname. No protocol, port or path.\n- `domain_reserved` (403): Hostnames under that domain are assigned by Faable.\n- `domain_taken` (409): That hostname is already registered on Faable.\n- `invalid_json` (400): The request body is not valid JSON.\n- `missing_github_event` (400): The `x-github-event` header is missing.",
5986
5986
  "enum": [
5987
5987
  "bad_request",
5988
5988
  "validation_error",
@@ -5999,6 +5999,9 @@
5999
5999
  "internal_error",
6000
6000
  "gone",
6001
6001
  "bad_gateway",
6002
+ "watch_unavailable",
6003
+ "watch_expired",
6004
+ "too_many_watchers",
6002
6005
  "service_unavailable",
6003
6006
  "database_unavailable",
6004
6007
  "already_exists",
@@ -6018,7 +6021,6 @@
6018
6021
  "team_required",
6019
6022
  "team_or_scope_required",
6020
6023
  "auth_account_not_found",
6021
- "tenant_token_not_issued",
6022
6024
  "tenant_token_unavailable",
6023
6025
  "role_required",
6024
6026
  "project_access_denied",