Problem types
Every refusal vcon-server answers with, as an RFC 9457 problem document whose type is one of these pages.
Every refusal is an application/problem+json document with type, title
and status:
{
"type": "https://vcon-server.com/problems/conflict",
"title": "Another vCon holds the uuid",
"status": 409
}
Act on type (or status), never on title's wording. No problem repeats
any part of the request, so a problem can be logged anywhere.
| Status | Type | Title |
|---|---|---|
| 422 | ambiguous-form | The body is both signed and encrypted |
| 503 | at-capacity | Too many tool calls are running |
| 503 | audit-failed | The audit record could not be written |
| 400 | bad-body | The body could not be read |
| 422 | bad-critical | critical or must_support is not a list of names |
| 422 | bad-gzip | The body is marked gzip but is not |
| 400 | bad-path-uuid | The path's uuid is not in RFC 9562 text form |
| 400 | bad-path-version | The path's version is not a version id |
| 422 | bad-payload | The signed payload cannot be read |
| 400 | bad-query | The query is not one this route takes |
| 422 | bad-scopes | A tenant key cannot hold these scopes |
| 422 | bad-uuid | The uuid is not in RFC 9562 text form |
| 409 | conflict | Another vCon holds the uuid |
| 500 | damaged | A stored version is damaged |
| 422 | duplicate-member | An object repeats a member |
| 403 | forbidden | The key does not allow this |
| 410 | gone | The vCon was deleted or purged |
| 409 | holds-vcons | The tenant holds vCons; removing them needs force |
| 409 | immutable | A signed or encrypted vCon is not replaced |
| 500 | internal | The server failed |
| 422 | invalid-arguments | The arguments do not fit the tool |
| 422 | invalid-body | The body is not one this route takes |
| 503 | limit-reached | The tenant key must be rotated |
| 503 | master-key-limit | The master key must be rotated |
| 422 | missing-created-at | The vCon has no created_at |
| 422 | missing-uuid | The vCon has no uuid |
| 409 | name-taken | Another tenant has the name |
| 422 | no-form | The body is in no vCon form |
| 422 | not-a-vcon | The body is not a vCon this server can read |
| 409 | not-deleted | The vCon is not deleted |
| 404 | not-found | No vCon has the uuid |
| 422 | not-json | The body is not one JSON object |
| 422 | path-uuid-mismatch | The body's uuid is not the one in the path |
| 412 | precondition-failed | If-Match does not name the current version |
| 428 | precondition-required | If-Match must name the current version |
| 429 | rate-limited | Too many tool calls from this key |
| 408 | timeout | The body did not arrive in time |
| 422 | too-deep | The body nests too deeply |
| 413 | too-large | The body is over the size limit |
| 401 | unauthorized | A valid bearer key is needed |
| 503 | unavailable | The service cannot answer now |
| 409 | under-hold | A vCon of the tenant is under a legal hold |
| 404 | unknown-key | No key has the id |
| 404 | unknown-tenant | No tenant has the id |
| 404 | unknown-tool | No tool has the name |
| 422 | unsupported-extension | An extension the vCon needs is not supported |
| 415 | unsupported-media-type | This media type is not taken |
| 422 | uuid-mismatch | A signature names another uuid |