# Обновить OAuth-клиента

export default function Layout(props) {
  const { OpenAPIPage } = props.components ?? {};
  return (
    <>
      {props.children}
      ## Обновить OAuth-клиента

`PATCH /api/v1/security/oauth/clients/{id}`

**Авторизация:** dpop или oauth2: `security.clients:read`, `security.clients:write`

**Параметры**

| Имя | Где | Обязательный | Тип | Описание |
| --- | --- | --- | --- | --- |
| `id` | path | да | string | Внутренний идентификатор записи клиента |
| `idempotency-key` | header | нет | string | Ключ идемпотентности для безопасного повтора запроса: 8–255 символов из набора A-Za-z0-9_.:+/=-, ответ кэшируется на 24 ч |

**Тело запроса** (`application/json`, обязательное): UpdateOAuthClientBody
- `allowedAudiences`: массив string — Полный новый список разрешённых ресурсов (RFC 8707)
- `clientUri`: string (uri), nullable — Сайт приложения (null — удалить)
- `contacts`: массив string (email) — Полный новый список контактных email
- `description`: string, nullable — Новое описание (null — удалить)
- `isActive`: boolean — Активность клиента (false — выданные токены перестают действовать)
- `jwksUri`: string (uri), nullable — JWKS-URL клиента (null — удалить)
- `logoUri`: string (uri), nullable — Логотип приложения (null — удалить)
- `name`: string — Новое название клиента
- `policyUri`: string (uri), nullable — Политика конфиденциальности (null — удалить)
- `redirectUris`: массив string (uri) — Полный новый список redirect URI
- `requireDpop`: boolean — Требовать DPoP-привязку токенов
- `requirePkce`: boolean — Требовать PKCE для authorization_code
- `scopes`: массив string — Полный новый список scope
- `tosUri`: string (uri), nullable — Условия использования (null — удалить)

**Ответы**

- `200` — Клиент обновлён (`application/json`, OAuthClientWrap)
  - `client`: OAuthClient, обязательное
    - `allowedAudiences`: массив string, обязательное — Ресурсы (RFC 8707), для которых клиент может получать токены; пусто — все ресурсы платформы
    - `applicationType`: "web" | "native" | "spa" | null — Тип приложения: web, native или spa
    - `clientId`: string, обязательное — Публичный client_id для OAuth-запросов
    - `clientType`: "public" | "confidential", обязательное — Тип клиента: confidential — хранит секрет (сервер), public — без секрета (SPA, мобильные)
    - `clientUri`: string, nullable — Сайт приложения
    - `contacts`: массив string, обязательное — Контактные email ответственных
    - `createdAt`: string (date-time), обязательное — Когда создан, ISO 8601
    - `description`: string, nullable — Описание назначения клиента
    - `grantTypes`: массив string, обязательное — Разрешённые OAuth grant-типы
    - `id`: string, обязательное — Внутренний идентификатор записи клиента
    - `isActive`: boolean, обязательное — Активен ли клиент
    - `jwksUri`: string, nullable — JWKS-URL клиента для private_key_jwt
    - `lastUsedAt`: string (date-time), nullable — Последнее использование, ISO 8601
    - `logoUri`: string, nullable — Логотип приложения
    - `name`: string, обязательное — Название клиента
    - `policyUri`: string, nullable — Политика конфиденциальности приложения
    - `redirectUris`: массив string, обязательное — Разрешённые redirect URI для authorization_code
    - `requireDpop`: boolean, обязательное — Обязательна ли DPoP-привязка токенов
    - `requirePkce`: boolean, обязательное — Обязателен ли PKCE для authorization_code
    - `scopes`: массив string, обязательное — Разрешённые scope
    - `tokenEndpointAuthMethod`: string, nullable — Способ аутентификации на token endpoint (RFC 7591)
    - `tosUri`: string, nullable — Условия использования приложения
    - `updatedAt`: string (date-time), обязательное — Когда обновлён, ISO 8601
- `400` — Некорректный запрос: не прошла валидация параметров или тела (`application/problem+json`, ProblemDetails)
- `401` — Токен отсутствует, недействителен или истёк (`application/problem+json`, ProblemDetails)
- `403` — Недостаточно прав или scope (`application/problem+json`, ProblemDetails)
- `429` — Превышен лимит запросов, повторите через Retry-After секунд (`application/problem+json`, ProblemDetails)

    </>
  );
}
