# Errors and validation

Source: https://www.jawsdeploy.net/rest-api/errors

How error responses are shaped and how to read them.

Every error response carries a small JSON body:

```
{
  "errorcode": "InvalidParameter",
  "error": "invalid project ID"
}
```

## Common error codes

| Code | Meaning |
|------|---------|
| `InvalidParameter` | A required field is missing, malformed, or references a resource the caller can't see. |
| `InsufficientPermissions` | The service account is authenticated but doesn't hold the required role. |
| `UnknownError` | Reserved for the rare unexpected failure path. |

## Validation errors

Endpoints that run DTO-level validation (FluentValidation) respond with `400` and a `validationErrors` object keyed by field name with an array of messages, in addition to the base `errorcode` / `error` pair.

## Resource limit conflicts

Deploy and promote endpoints can fail with `409 Conflict` and `errorcode = ResourceUsageLimitExceeded` plus a `resourceUsageErrors` array when the deploying organization has hit a plan limit.

