---
title: "🔒 #26729 Решение на экране подключения ИИ-приложения: «Разрешить» для компании с действующим доступом (запись - отметкой) или «Отклонить». Записывается один раз; отдаёт адрес завершения с одноразовым билетом - код авторизации выдаётся только в браузере, начавшем подключение."
method: POST
path: "/oauth/connect/decide"
tags: ["Auth"]
---

# 🔒 #26729 Решение на экране подключения ИИ-приложения: «Разрешить» для компании с действующим доступом (запись - отметкой) или «Отклонить». Записывается один раз; отдаёт адрес завершения с одноразовым билетом - код авторизации выдаётся только в браузере, начавшем подключение.

`POST /oauth/connect/decide`

## Request

- Base URL: `http://localhost`
- URL: `http://localhost/oauth/connect/decide`
- Auth: API key in header `sid` and API key in header `rts` and API key in header `sig`

#26729 Решение на экране подключения ИИ-приложения: «Разрешить» для компании с действующим доступом (запись - отметкой) или «Отклонить». Записывается один раз; отдаёт адрес завершения с одноразовым билетом - код авторизации выдаётся только в браузере, начавшем подключение.

**Access:** `authorized` (10 ) · **allowNullCompany:** true · **Scope:** `write` · **только веб-сессия**

**Allows:** не требуются — own consent: connects an app on the user's own behalf, company checked for active access

### TypeScript (copy-paste)

**`POST /oauth/connect/decide`**

<details open><summary><b>Params</b></summary>

```typescript
export interface OauthConnectDecideParams {
  request: string
  allow: boolean
  cID?: string | null
  write?: boolean | null
}
```

</details>

<details open><summary><b>Response</b></summary>

```typescript
export type OauthConnectDecideResponse = IServerResponse<Resp_oauth_connect_decide>

export interface IServerResponse<T = any> {
  code: number
  data: T
  srvTS: number
  rkey: string
}
```

</details>

> Полный файл типов: [`/docs/types`](/docs/types) · raw: [`/docs/api-types.ts`](/docs/api-types.ts)

## Query parameters

- `request` string, uuid, required
- `allow` boolean, required
- `cID` string, uuid, nullable
- `write` boolean, nullable

## Headers

- `devID` string, uuid, required
- `tz` string, required
- `app` string, required
- `appVer` string, required
- `rKey` string

## Response `200`

OK — `IServerResponse<Resp_oauth_connect_decide>`

- object
  - `code` integer, required
  - `data` RespOauthConnectDecide, required: ResponseData for oauth/connect/decide
    - `url` string, required: Адрес завершения на MCP-сервере: веб-клиент переходит на него, MCP-сервер возвращает браузер в приложение
  - `srvTS` integer, required: Server timestamp (ms)
  - `rkey` string, required: Request key

## Other responses

- `400`: BadRequest: cID required
- `401`: Authorize — сессия отсутствует, истекла или невалидна
- `403`: AccessNotAllowed: no active access to the company
- `404`: NotFound: params.code - connect_request_expired
- `406`: TimeResync — расхождение rts с сервером
- `422`: UnprocessableContent: params.code - connect_request_used (already decided)

---

[API](https://skmtc.dev/kosmodrom/apis/kosmodrom-backend-api.md) · [All operations](https://skmtc.dev/kosmodrom/apis/kosmodrom-backend-api/llms.txt) · [OpenAPI document](https://skmtc.dev/kosmodrom/apis/kosmodrom-backend-api/revisions/a143b51ba29a?raw)
