# Решение пользователя по экрану согласия OAuth (выдача кода или отказ)

export default function Layout(props) {
  const { OpenAPIPage } = props.components ?? {};
  return (
    <>
      {props.children}
      ## Решение пользователя по экрану согласия OAuth (выдача кода или отказ)

`POST /oauth/authorize/decision`

**Авторизация:** dpop

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

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

**Тело запроса** (`application/json`, обязательное): OAuthAuthorizeDecisionRequest
- `approve`: boolean, обязательное — Решение пользователя: true — разрешить, false — отказать
- `client_id`: string, обязательное — client_id из authorize-запроса
- `code_challenge`: string, обязательное — PKCE challenge из authorize-запроса
- `code_challenge_method`: "S256" — Метод PKCE, только S256
- `dpop_jkt`: string — Отпечаток DPoP-ключа
- `nonce`: string — OIDC nonce из authorize-запроса
- `redirect_uri`: string, обязательное — redirect_uri из authorize-запроса
- `resource`: string — Целевой ресурс (RFC 8707)
- `scope`: string — Scope из authorize-запроса
- `state`: string — State из authorize-запроса

**Ответы**

- `200` — Адрес перенаправления (`application/json`, OAuthAuthorizeDecisionResponse)
  - `location`: string, обязательное — URL редиректа с code либо error для возврата клиенту
- `400` — Некорректный запрос (`application/json`, OAuthError)
- `401` — Токен отсутствует, недействителен или истёк (`application/problem+json`, ProblemDetails)
- `403` — Недостаточно прав или scope (`application/problem+json`, ProblemDetails)
- `429` — Превышен лимит запросов, повторите через Retry-After секунд (`application/problem+json`, ProblemDetails)

    </>
  );
}
