# Toggle capability override for client (deprecated)

Source: https://business-api-docs.youhodler.com/docs/api/reference/capabilities/clients-capabilities-update

Deprecated. This endpoint always returns an error. Use role-based grants via `POST /role-assignments` instead.

## Request

**Request URL — PATCH**
```http
PATCH /clients/{client_id}/capabilities/{capability_name}
```

## Responses

**200 Operation succeeded**

Operation succeeded.

```json
{
  "capability": "withdrawals.create",
  "enabled": true
}
```

**400 Invalid request payload**

Invalid request payload, query, or parameter shape.

```json
{
  "code": "invalid_request",
  "message": "The request is invalid."
}
```

**401 Caller is not authenticated or the bearer token is invalid**

Caller is not authenticated or the bearer token is invalid.

```json
{
  "code": "unauthorized",
  "message": "Authentication required."
}
```

**403 Caller lacks the required capability or permitted scope**

Caller lacks the required capability or permitted scope.

```json
{
  "code": "forbidden_capability_scope",
  "details": {
    "reason": "missing_capability"
  },
  "message": "Insufficient capability for this operation."
}
```

**404 Resource not found**

Resource not found.

```json
{
  "code": "resource_not_found",
  "message": "Resource not found."
}
```

**409 State conflict — the request cannot be applied to the current resource state**

State conflict — the request cannot be applied to the current resource state.

```json
{
  "code": "state_conflict",
  "details": {
    "reason": "state_conflict"
  },
  "message": "The request cannot be applied to the current resource state."
}
```

**410 This endpoint has been removed**

This endpoint has been removed. Check the API changelog for the replacement.

```json
{
  "code": "deprecated_endpoint",
  "message": "PATCH /clients/:client_id/capabilities/:capability_name is deprecated; tracked in #318"
}
```

**412 If-Match check failed**

If-Match check failed; the resource has changed since the cached etag.

```json
{
  "code": "precondition_failed",
  "details": {
    "reason": "etag_mismatch"
  },
  "message": "If-Match check failed; the resource has changed since the cached etag."
}
```

**422 Operation is not admissible — it violates a business rule**

Operation is not admissible — it violates a business rule, policy constraint, or lifecycle precondition specific to this resource.

```json
{
  "code": "not_admissible",
  "details": {
    "reason": "not_admissible"
  },
  "message": "The operation is not admissible in the current state."
}
```

**429 Request rate limit exceeded**

Request rate limit exceeded. Retry after the delay indicated in the `details.retry_after_ms` field.

```json
{
  "code": "rate_limited",
  "details": {
    "retry_after_ms": 5000
  },
  "message": "Too many requests."
}
```

**502 Upstream service returned an unexpected error**

Upstream service returned an unexpected error.

```json
{
  "code": "upstream_error",
  "message": "An upstream service returned an unexpected error."
}
```

**503 Service is temporarily unavailable**

Service is temporarily unavailable; retry with backoff.

```json
{
  "code": "temporarily_unavailable",
  "details": {
    "reason": "service_temporarily_unavailable"
  },
  "message": "Service is temporarily unavailable."
}
```

**Related endpoints:**

- `GET` [List capabilities](/docs/api/reference/capabilities/capabilities-list) — Inspect the full capability vocabulary
- `GET` [Get client](/docs/api/reference/clients/clients-get) — Read the client being updated
