CHW-4001 | 400 | — | request payload failed validation; see endpoint documentation for the expected shape |
CHW-4002 | 400 | — | package coordinate could not be parsed; supply name, version, and (where required) namespace in the format the ecosystem expects |
CHW-4101 | 400 | — | signup payload failed validation; email, password, and org_name are required |
CHW-4102 | 409 | — | An account with this email already exists. Sign in instead. |
CHW-4103 | 400 | — | request payload was missing or malformed; see endpoint documentation for the expected JSON shape |
CHW-4104 | 400 | — | password must be at least 12 characters |
CHW-4105 | 400 | — | signup requires a business email address; personal / disposable providers are not accepted |
CHW-4106 | 400 | — | new password and confirmation do not match |
CHW-4107 | 400 | — | invalid or expired verification link |
CHW-4108 | 400 | — | this verification link has expired; please request a new one |
CHW-4109 | 400 | — | this verification link has already been used |
CHW-4110 | 400 | — | invalid or expired reset link |
CHW-4111 | 400 | — | this reset link has expired; please request a new one |
CHW-4112 | 400 | — | this reset link has already been used |
CHW-4113 | 400 | — | no TOTP setup in progress; call /api/settings/2fa/setup first |
CHW-4114 | 409 | — | two-factor authentication is already enabled; disable it before re-enrolling |
CHW-4115 | 400 | — | no TOTP setup in progress; start setup before verifying a code |
CHW-4116 | 400 | — | SSO configuration payload is missing required fields for the chosen protocol |
CHW-4117 | 404 | — | SSO is not configured for this organization |
CHW-4118 | 409 | — | a mapping for this group value already exists on this provider |
CHW-4119 | 404 | — | SSO group mapping not found |
CHW-4120 | 404 | — | member not found in your organization |
CHW-4121 | 400 | — | this member does not have two-factor authentication enabled |
CHW-4122 | 404 | — | this feature is not enabled on this instance |
CHW-4123 | 409 | — | An account already exists for the underlying email address. Sign in or use a different email. |
CHW-4124 | 409 | — | A workspace with this name already exists. Try a different name. |
CHW-4201 | 404 | — | organization not found; verify the org_id and that it has not been deleted |
CHW-4202 | 404 | — | user not found in this organization; verify the user_id and that the membership still exists |
CHW-4203 | 404 | — | group not found in this organization; verify the group_id |
CHW-4204 | 404 | — | role not found in this organization; verify the role slug or id |
CHW-4205 | 404 | — | invitation not found; verify the token or ask the inviter to re-issue |
CHW-4206 | 400 | — | invitation has expired; ask the inviter to re-issue it |
CHW-4207 | 400 | — | invitation has already been accepted; sign in with the invited email to access the org |
CHW-4208 | 409 | — | org slug is already in use; pick a different slug |
CHW-4209 | 409 | — | this email is already registered; invite by inviting the existing account or ask them to sign in and accept |
CHW-4210 | 409 | — | a pending invitation already exists for this email; revoke it before issuing a new one |
CHW-4211 | 409 | — | an account with this email already exists; sign in and then accept the invitation from the same session |
CHW-4212 | 409 | — | member limit reached — ask an owner to upgrade the organization’s plan |
CHW-4213 | 400 | — | unknown role; supply a built-in role slug or an existing custom role in this org |
CHW-4214 | 400 | — | built-in roles cannot be edited or deleted; create a custom role instead |
CHW-4215 | 409 | — | role is in use; reassign members, invitations, and SSO defaults before deleting |
CHW-4216 | 400 | — | the invitation’s role is no longer available; ask the inviter to re-issue with a current role |
CHW-4217 | 400 | — | email failed validation; use a business email address accepted by the org policy |
CHW-4218 | 400 | — | password must be at least 12 characters; supply a longer passphrase |
CHW-4301 | 404 | — | package not found; verify the package id and that it has not been deleted |
CHW-4302 | 404 | — | package version not found; verify the version string and that it has not been deleted |
CHW-4303 | 404 | — | package permission not found; verify the permission id and the caller’s org |
CHW-4304 | 409 | — | package slug already exists for this repository; pick a different package_name or update the existing slug |
CHW-4305 | 409 | — | package name already exists in the upstream registry; only names unused upstream can be registered as internal packages |
CHW-4306 | 404 | — | repository not found; verify the repository name and that it is configured for this org |
CHW-4307 | 400 | — | invalid repository path; use /repository/@{org-slug}/{repo}/{path} or /repository/{repo}/{path} |
CHW-4308 | 400 | — | missing package or permission identifier in URL; supply /api/packages/{id} or /api/package-permissions/{id} |
CHW-4309 | 400 | — | required fields are missing from the request body; see endpoint documentation for the expected shape |
CHW-4310 | 409 | — | package permission already exists for this client, pattern, and repository; edit the existing row instead of creating a duplicate |
CHW-4311 | 400 | — | client not found in this organization; verify the client_id or create the client credentials first |
CHW-4312 | 404 | — | exception policy not found; verify the exception id and that it has not been deleted |
CHW-4313 | 400 | — | only vulnerability-exception policies can be renewed; other policy types have no expiry to extend |
CHW-4314 | 400 | — | org-scoped URL required: /repository/@{org-slug}/{repo-name}/…; legacy URLs without the org slug are disabled on this instance |
CHW-4315 | 404 | — | finding not found; verify the id and that it belongs to the caller’s org |
CHW-4316 | 400 | — | finding status transition not allowed; see the finding state machine documentation for the legal moves |
CHW-4317 | 404 | — | scan subsystem not initialised on the server |
CHW-4318 | 400 | — | lockfile could not be parsed; verify the base64 payload and the lockfileType |
CHW-4319 | 400 | — | bulk request exceeds 500 items; split the request or lower maxResults |
CHW-4320 | 400 | — | unsupported lockfile type; valid values are “npm” and “pnpm” |
CHW-4321 | 400 | — | unsupported sbom output format; this server emits CycloneDX only (use ?format=cyclonedx or omit the parameter; for ecosystem filtering us… |
CHW-4322 | 400 | — | risk weight override malformed; expected body {“weights”:{“vulnerability”:0.5,…}} with numeric values |
CHW-4323 | 400 | — | risk weight override fails validation: weights must be non-negative, known categories, sum > 0, and no single weight above 0.8 |
CHW-4324 | 404 | — | no risk weight override set for this org; defaults apply until a PUT /api/v1/intel/weights is made |
CHW-4325 | 404 | — | tuning suggestion not found; verify the id and that it belongs to the caller’s org |
CHW-4326 | 409 | — | tuning suggestion is not in the ‘open’ state; only open suggestions can be accepted or dismissed (the next action must come from a new po… |
CHW-4327 | 400 | — | feedback action must be one of: false_positive, true_positive, retract; retract requires a referencing_event_id |
CHW-4401 | 400 | — | plan_id is not one of the allowed plan slugs; supply a current plan from /api/billing/plans |
CHW-4402 | 400 | — | billing_cycle must be either “month” or “year” |
CHW-4403 | 400 | — | the selected plan is not available on the requested billing cycle; pick a different cycle or contact support |
CHW-4404 | 400 | — | billing request body was missing or malformed; see /api/billing documentation for the expected shape |
CHW-4405 | 400 | — | Billy chat requires a non-empty message field |
CHW-4406 | 400 | — | unsupported Billy action type; supply one of the handler-registered action kinds |
CHW-4407 | 400 | — | Billy policy payload was missing or malformed; supply a decodable policy draft |
CHW-4408 | 400 | — | Billy action is missing its required target id or policy draft |
CHW-4409 | 404 | — | service token not found in this organization; verify the client id |
CHW-4410 | 400 | — | target client is not a service token; service_token.disable cannot apply to user-owned credentials |
CHW-4411 | 404 | — | policy not found in this organization; verify the policy id |
CHW-4412 | 400 | — | policy store rejected the draft; fix the validation issue and retry |
CHW-4413 | 429 | RATE_LIMITED | Billy chat rate limit exceeded — please wait and retry |
CHW-4501 | 409 | — | cannot delete this pricing plan: it is still assigned to one or more organisations; reassign those orgs to a different plan first |
CHW-4502 | 409 | — | another pricing plan is already marked as the default; clear the existing default before promoting a new one |
CHW-4503 | 400 | — | pricing plan features JSON failed validation; supply a JSON object whose keys match the documented feature flags |
CHW-4504 | 400 | — | plan assignment requires both orgId and planId in the request body |
CHW-4505 | 400 | — | user id segment is required on /api/usage/users/{userId} |
CHW-4506 | 400 | — | org_id query parameter is required for this admin endpoint |
CHW-4507 | 400 | — | saved traffic view requires a non-empty “name” field so it can be identified in the UI |
CHW-4508 | 400 | — | view id segment is required on DELETE /api/traffic/views/{id} |
CHW-4509 | 400 | — | violation id segment must be a numeric value; check the URL |
CHW-4510 | 404 | — | violation not found in this organisation; verify the id and that the violation has not been purged |
CHW-4511 | 400 | — | repository name segment is required on this endpoint |
CHW-4512 | 400 | — | vulnerabilities path must match {repository}/vulnerabilities; check the URL |
CHW-4513 | 400 | — | audit event payload was missing required fields or could not be decoded; check the request body shape |
CHW-4514 | 400 | — | scan request body could not be decoded or contained an empty packages list; supply {“packages”:[{“name”:"…",“version”:"…"},…]} |
CHW-4515 | 400 | — | attestation payload was missing required fields (device_id, ecosystems, direct_registry_egress) or could not be decoded; check the reques… |
CHW-4516 | 400 | — | coverage flag payload requires a non-empty client_id; check the request body shape |
CHW-4517 | 400 | — | bypass exemption payload requires a non-empty client_id and reason; check the request body shape |
CHW-4518 | 409 | — | this exemption cannot be resolved yet: bypass confidence has not stayed below threshold for the required 24h window |
CHW-4519 | 413 | — | audit export refused: this org has more rows than the in-memory export endpoint can safely return; use the (forthcoming) streaming /api/a… |
CHW-4601 | 400 | — | settings payload failed validation; check field types and ranges against the endpoint documentation |
CHW-4602 | 400 | — | settings payload contained no mutable fields; supply at least one field to update |
CHW-4603 | 400 | — | policy payload failed validation; check rule shape, action, and scope against the policy schema |
CHW-4604 | 409 | — | policy conflicts with an existing one (duplicate name or precedence); pick a unique identifier or precedence |
CHW-4605 | 404 | — | policy not found in this organisation |
CHW-4606 | 404 | — | proxy/repository not found in this organisation |
CHW-4607 | 400 | — | proxy update payload failed validation; check remote_url, cache_negative_ttl_seconds, and that at least one mutable field is supplied |
CHW-4608 | 400 | — | unknown data source; expected one of openssf, trivydb, epss, clamavdb |
CHW-4609 | 400 | — | cache purge path is malformed; expected /api/cache/repos/{repo}/packages/{package}/{version} |
CHW-4610 | 404 | — | no cached artifacts found for the supplied repository, package, and version |
CHW-4611 | 400 | — | cache purge-all requires a password in the request body |
CHW-4612 | 403 | — | incorrect password |
CHW-4613 | 404 | — | client not found in this organisation |
CHW-4614 | 400 | — | org_id is required for this endpoint; supply it as a query parameter or path segment |
CHW-4615 | 400 | — | unknown persona; supply a recognised persona slug or omit the field to clear it |
CHW-4616 | 400 | — | repo→team mapping payload failed validation; both repoPattern and team are required |
CHW-4617 | 404 | — | repo→team mapping not found in this organisation |
CHW-4618 | 409 | — | repo→team mapping with this pattern already exists in the organisation |
CHW-4701 | 400 | — | webhook request body was missing or malformed; supply a JSON object with url (and optionally enabled) fields |
CHW-4702 | 400 | — | webhook url is required |
CHW-4703 | 400 | — | webhook url was rejected; it must be an https URL pointing to a publicly routable host |
CHW-4704 | 400 | — | maximum of 5 webhooks per user; delete an existing webhook before creating a new one |
CHW-4705 | 400 | — | webhook id is required in the path; use /api/webhooks/{id} |
CHW-4706 | 404 | — | webhook not found |
CHW-4707 | 400 | — | SIEM integration id is required in the path; use /api/siem/integrations/{id} |
CHW-4708 | 404 | — | SIEM integration not found |
CHW-4709 | 400 | — | SIEM integration config failed validation; check name, provider, and provider-specific config fields |
CHW-4710 | 404 | — | SCIM token not found |
CHW-4711 | 400 | — | SCIM token request was malformed; see /api/orgs/{org_id}/scim/tokens docs for the expected shape |
CHW-4712 | 400 | — | organization slug is required in the path; use /api/auth/saml/metadata/{slug} |
CHW-4713 | 404 | — | SAML SSO is not configured for this organization |
CHW-4714 | 400 | — | the configured SSO provider for this organization is not SAML; use the OIDC metadata endpoint instead |
CHW-4715 | 400 | — | persona payload was missing or malformed; supply a JSON object with optional persona, inferred, and skipped fields |
CHW-4716 | 400 | — | persona value is not recognised; supported values are appsec, devsecops, enterprise_it |
CHW-4717 | 400 | — | could not read postmark webhook body; the request was truncated or the connection dropped mid-request |
CHW-4718 | 413 | — | postmark webhook body exceeded the 256 KiB limit |
CHW-4719 | 403 | — | email send skipped because the recipient is in the local postmark suppression ledger (hard bounce, spam complaint, or manual suppression) |
CHW-4801 | 400 | — | client identifier is required; supply it in the URL path (/api/clients/{client_id}) |
CHW-4802 | 400 | — | client credential payload could not be decoded; ensure the body is a JSON object matching the schema |
CHW-4803 | 400 | — | client credential fields are invalid or conflict with an existing record; verify client_id, client_type, and expiry_date |
CHW-4804 | 404 | — | client credential not found; verify the client id and that it has not been deleted |
CHW-4805 | 400 | — | quarantine action requires a package name segment in the path before /versions/ |
CHW-4806 | 400 | — | quarantine request body could not be decoded; supply a JSON object with optional reason and logical_paths fields |
CHW-4807 | 404 | — | no cached artifacts found for this package version; nothing to quarantine |
CHW-4808 | 400 | — | upload could not be parsed; verify the request body matches the ecosystem’s publish protocol |
CHW-4809 | 400 | — | could not determine package name and version from upload; include the package metadata expected by the ecosystem |
CHW-4810 | 403 | — | the uploaded package is not registered in this repository; ask an admin to create a package slug before publishing |
CHW-4811 | 403 | — | the client does not have write permission for this package on this repository; ask an admin to grant package-permissions.write |
CHW-4812 | 409 | — | this package version already exists; delete it first to republish, or publish a new version |
CHW-4813 | 400 | — | docker blob upload request is missing the upload UUID segment |
CHW-4814 | 404 | — | docker blob upload session not found; the session may have expired — re-initiate the push |
CHW-4815 | 400 | — | docker blob upload completion requires the ?digest= query parameter |
CHW-4816 | 400 | — | docker manifest push path is malformed; expected {name}/manifests/{reference} |
CHW-4817 | 400 | — | unsupported docker push operation; only blob upload and manifest push are implemented |
CHW-4818 | 400 | — | repository name is required in the path; use /api/repos/{repository}/… |
CHW-4819 | 404 | — | unsupported API route; see /api/openapi.yaml for the list of supported endpoints |
CHW-4820 | 400 | — | packages API path is invalid; expected /api/repos/{repository}/packages/{package…} |
CHW-4821 | 404 | — | repository not found; verify the repository name and the org context |
CHW-4822 | 404 | — | package not found in this repository; verify the package name |
CHW-4823 | 400 | — | FindPackagesById() requires the id query parameter |
CHW-4824 | 409 | — | Idempotency-Key was reused with a different request body; pick a fresh key or resend the original body to receive the cached response |
CHW-4825 | 400 | — | X-Chainsaw-Action-Source header value is not in the allowlist; valid sources are direct, inventory_view, coverage_silent, bypass_clients,… |
CHW-4826 | 400 | — | bulk action exceeded the maximum allowed items per request; split into smaller batches |
CHW-4827 | 400 | — | bulk action failed up-front validation; nothing was committed — see the response body for per-item details |
CHW-4828 | 409 | — | K8s Fail-mode hardening bundle is blocked: cluster has not soaked safely in Ignore mode yet — see the gate object in the response for w… |
CHW-4829 | 400 | — | admission shadow decision payload is malformed; required fields are org_id, cluster, and decision (one of would_allow, would_block, inter… |
CHW-4830 | 409 | — | this org requires a preview before saving risk weights — POST /api/v1/intel/weights/simulate first and submit the returned simulate_id … |
CHW-4831 | 409 | — | this org requires a preview before deletion — POST /api/orgs/{id}/delete/preview first and submit the returned simulate_id on the DELETE |
CHW-4832 | 409 | — | the org inventory drifted since the simulate was produced; re-run the preview before deleting |
CHW-4833 | 409 | — | the multi-key approval nonce is not valid — see the approval.reason field for the specific sub-reason (missing, expired, unsigned, self… |
CHW-4840 | 415 | — | Content-Type must be application/json; the cocoapods trunk only accepts JSON bodies |
CHW-4841 | 422 | — | podspec failed validation; verify the name, version, and source fields |
CHW-4842 | 404 | — | trunk repository not bound to a tenant; verify the request lands inside a hosted-trunk repo prefix |
CHW-4900 | 410 | UPSTREAM_DEPRECATED | rubygems /api/v1/dependencies was deprecated upstream in 2023; use the Compact Index (versions, names, info/{name}), /api/v1/versions/{na… |
CHW-4901 | 404 | — | action not found for this org; call list_recent_actions or /api/actions to find an id |
CHW-4902 | 409 | — | action already undone; retrying will not change the state |
CHW-4903 | 400 | — | undo is not supported for this action type; use the Web UI or delete+recreate the resource |
CHW-4904 | 400 | — | this action cannot be undone — the operation destroyed state (e.g. cleartext secret) that no surface can restore; mint a fresh credenti… |
CHW-4910 | 409 | — | quorum not met; collect additional approvals before emitting the hardening bundle |
CHW-4911 | 404 | — | harden proposal not found for this org (it may have expired or belong to another org); list current proposals in the admin hardening dash… |
CHW-4912 | 409 | — | harden bundle already emitted from this proposal; propose a new one to ship again |
CHW-4913 | 409 | — | proposer cannot self-approve when quorum >= 2; ask a different org admin to approve |
CHW-4914 | 409 | — | this user has already approved the proposal; quorum requires N distinct approvers |
CHW-4915 | 400 | — | action id is required in the URL path |
CHW-4920 | 400 | — | invalid key_type filter; expected ‘personal’ or ‘agent’ |
CHW-4921 | 400 | — | name is required |
CHW-4922 | 400 | — | key_type / agent_kind combination is invalid; personal keys must omit agent_kind and agent keys must supply it |
CHW-4923 | 400 | — | either preset or scopes is required; supply one of the canonical preset names or a concrete scopes object |
CHW-4924 | 400 | — | missing api key id |
CHW-4925 | 404 | — | api key not found |
CHW-4926 | 400 | — | name cannot be empty |
CHW-4927 | 409 | — | api key is not active; rotate is only permitted on active keys |
CHW-4928 | 409 | — | simulate snapshot stale; re-run –dry-run |
CHW-4929 | 409 | — | simulate_id was minted for a different action; mint a fresh one with chainsaw org delete --dry-run |
CHW-4940 | 400 | — | invalid nonce; expected a hex string of 16-128 characters |
CHW-4941 | 400 | — | port out of range; supply a loopback-accessible port between 1024 and 65535 |
CHW-4942 | 400 | — | missing or invalid device_code |
CHW-4943 | 404 | — | device code not found or expired; restart the chainsaw auth login flow |
CHW-4944 | 410 | — | device code has already been consumed; restart the chainsaw auth login flow |
CHW-4945 | 400 | — | user_code is required |
CHW-4946 | 404 | — | code not found or expired |
CHW-4947 | 409 | — | device grant state changed between lookup and approval; restart the chainsaw auth login flow |
CHW-4948 | 400 | — | missing or invalid exchange code |
CHW-4949 | 410 | — | exchange code not found, expired, or already used; restart the chainsaw auth login flow |