access_denied | 400 | no | The GitHub authorization was cancelled. |
bad_request | 400 | no | The request is malformed: a bad argument, duration or JSON. |
batch_unsupported | 400 | no | An MCP request sent as a JSON-RPC batch; send one message per request. |
code_invalid | 400 | no | GitHub sent no authorization code, or rejected it as used or expired. |
invalid_body | 400 | no | The request body isn't valid JSON for this call; the message says where. |
invalid_email | 400 | no | Not an email address. |
invalid_manifest | 400 | no | parity.yaml failed to parse or validate. |
invalid_org | 400 | no | An org slug outside lowercase letters, digits, -, _ and .. |
invalid_password | 400 | no | A password past 72 bytes. |
invalid_redirect | 400 | no | A sign-in redirect that isn't an http(s) URL. |
not_a_member | 400 | no | The user isn't a member of that org in the sandbox's auth. |
note_required | 400 | no | A freeze without a note. |
state_expired | 400 | no | The GitHub connect link expired. Start again from the console. |
state_mismatch | 400 | no | The GitHub connect link was started by another account. |
unknown_source | 400 | no | The project has no uploaded source with that digest. |
bad_signature | 401 | no | A webhook whose signature doesn't match. |
unauthorized | 401 | no | No token, or not a live one. |
bad_origin | 403 | no | A console write that didn't come from the console's own page. |
egress_not_approved | 403 | no | A sandbox token's sync allows an egress host that the promoted manifest doesn't. The allowlist comes from the promoted manifest. |
forbidden | 403 | no | The token or its role can't do this; permission names what's missing when it is a role. |
installation_not_admin | 403 | no | Only an owner of the GitHub account can connect it. |
installation_not_yours | 403 | no | GitHub didn't list this installation for the signed-in user. |
wrong_project | 403 | no | The token, the manifest, the path or the sandbox name different projects. |
wrong_sandbox | 403 | no | A sandbox token used on another sandbox, or on a sandbox recreated since the token was made. |
environment_not_found | 404 | no | No environment. |
installation_not_found | 404 | no | The GitHub account isn't connected to this organization. |
no_app | 404 | no | The project has no manifest yet: send its parity.yaml. |
no_auth | 404 | no | The sandbox has no auth resource. |
no_inbox | 404 | no | The sandbox has no mail resource. |
not_found | 404 | no | No such sandbox, record, proof, run or path that this token can read. |
not_frozen | 404 | no | Lifting a freeze on an environment that has none. |
project_not_found | 404 | no | No project with this name that the token can read. |
release_not_found | 404 | no | Release not found. |
step_not_found | 404 | no | No such step. |
user_not_found | 404 | no | No user with that email in the sandbox's auth. |
method_not_allowed | 405 | no | The path exists but not with this method. |
already_exists | 409 | no | A sandbox with this id exists in another project. (In the token's project, create converges it.) |
already_promoted | 409 | no | Already promoted. |
conflict | 409 | yes | A concurrent change, or an idempotent retry whose token was replaced. |
deploy_frozen | 409 | no | The environment is frozen. The message has the note, who froze it and since when; freeze in the body has the same. Lift it (parity unfreeze) or ask the person who set it. |
email_taken | 409 | no | A user with that email already exists in the sandbox's auth. |
environment_declared | 409 | no | Environment declared. |
environment_not_declared | 409 | no | Environment not declared. |
expiring | 409 | no | The sandbox is being torn down. |
installation_linked_elsewhere | 409 | no | The GitHub account is connected to another Parity organization. |
last_admin | 409 | no | The change would leave the organization without an Admin. Make someone else Admin first. |
managed_by_idp | 409 | no | The member is provisioned by the organization's IdP over SCIM. Unassign them from Parity in the IdP. |
max_ttl | 409 | no | An extend past the manifest's max_ttl. |
name_taken | 409 | no | A project with this name exists. |
no_history | 409 | no | Nothing to roll back to. |
no_source | 409 | no | The project has no repository connected. |
not_ready | 409 | yes | Services are still starting; Retry-After says when to look again. |
release_finished | 409 | no | Release finished. |
rollout_superseded | 409 | no | Rollout superseded. |
sandbox_failed | 409 | no | The sandbox failed to start. |
source_linked | 409 | no | This repository manifest already backs another project; project names it. |
step_not_waiting | 409 | no | Step not waiting. |
too_many_proofs | 409 | no | The sandbox already has the most proof bundles allowed (20). |
unexpected_mail | 409 | no | inbox/wait?none=true: a matching message arrived; message names it. |
upstream_not_ready | 409 | no | Upstream not ready. |
installation_gone | 410 | no | Parity was uninstalled from this GitHub account. |
too_large | 413 | no | A request body, a proof file or a proof bundle past its size limit. |
idempotency_mismatch | 422 | no | An Idempotency-Key reused for a different create. |
invalid_name | 422 | no | A name that isn't a lowercase DNS label: letters, digits and -, starting with a letter, at most 63 characters. |
invalid_path | 422 | no | A manifest path that isn't a path in the repository ending in .yaml or .yml. |
name_mismatch | 422 | no | The manifest sets a different project: than the name asked for. |
rejected | 422 | no | Parity refused the change as invalid. |
repo_unreachable | 422 | no | Parity couldn't read the repository or its manifest; the message says why. |
reserved_name | 422 | no | The name is reserved. |
token_failed | 422 | no | Parity couldn't create the project token. Retry. |
dependency_failed | 424 | no | A job failed; log_tail has its log. |
rate_limited | 429 | yes | Too many requests: this token's rate, too many invalid tokens from one address, or GitHub's rate limit. Retry-After says when. |
too_many_requests | 429 | yes | The token has too many requests in flight. |
too_many_waits | 429 | yes | The token, or the server as a whole, has too many long-polls open. |
internal | 500 | yes | Parity failed unexpectedly. Retry; if it persists, report the time and the call. |
revoke_failed | 500 | yes | The membership change is saved, but some of the person's tokens weren't revoked. Retry the same request. |
no_store | 501 | no | This server keeps no records of this kind. |
not_implemented | 501 | no | This server doesn't offer this call. |
not_recorded | 501 | no | This server has no egress report for the sandbox. |
auth_unreachable | 502 | yes | The sandbox's auth resource didn't answer. |
cluster_error | 502 | yes | Parity's backend failed; retry. |
exec_failed | 502 | yes | The exec stream failed before the command ran. |
github_unavailable | 502 | yes | GitHub answered with an error or not at all; the message has its status. |
inbox_unreachable | 502 | yes | The sandbox's mail resource didn't answer. |
inbox_unreadable | 502 | no | A message couldn't be parsed. |
activity_unavailable | 503 | yes | Parity can't record this change right now, so it refused it. Reads still work; retry after Retry-After. |
busy | 503 | yes | Too many source uploads in progress. Retry after Retry-After. |
github_not_configured | 503 | no | The Parity GitHub App isn't set up on this server. |
logs_unavailable | 503 | yes | The log store can't be read right now. Without q or until, recent logs still come from the running services. |
members_unavailable | 503 | yes | This Parity runs without the control database, so organizations and members can't be read or changed. |
redaction_unavailable | 503 | yes | Parity couldn't read this sandbox's generated secrets to redact the output, so it ran and returned nothing. Retry after Retry-After. |
store_error | 503 | yes | The record store failed. |
timeout | 504 | yes | A wait or a command reached its timeout or the server's cap. |