---
title: "🔒 Создание связи между двумя сущностями (задача, баг, фича, митинг)."
method: POST
path: "/relation/create"
tags: ["Relations"]
---

# 🔒 Создание связи между двумя сущностями (задача, баг, фича, митинг).

`POST /relation/create`

## Request

- Base URL: `http://localhost`
- URL: `http://localhost/relation/create`
- Auth: one of:
  - API key in header `sid` and API key in header `rts` and API key in header `sig`
  - HTTP bearer

Создание связи между двумя сущностями (задача, баг, фича, митинг).

**Access:** `authorized` (10 ) · **Scope:** `write`

**Allows:** `task:relations`, `task:read`, `feature:update`, `feature:read`, `meeting:update`, `meeting:read` (все обязательны; проверка в команде по ресурсу из запроса)

### TypeScript (copy-paste)

**`POST /relation/create`**

<details open><summary><b>Body (Partial)</b></summary>

```typescript
// Patch-body: все поля опциональны (Valid.Patch)
export type RelationCreateBody = Partial<Relation>

export interface RelationCreateBodyFields {
  cID?: string
  ID?: string
  fromID?: string
  fromType?: string
  toID?: string
  toType?: string
  type?: RelationType
  note?: string | null
  meta?: Record<string, any> | null
  /** Unix timestamp in milliseconds */
  updTS?: number
  updUID?: string
}
```

</details>

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

```typescript
export type RelationCreateResponse = IServerResponse<Relation>

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)

## Headers

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

## Request body

- RelationCreateBody: Partial body (Valid.Patch) for `relation/create` — все поля опциональны
  - `cID` string, uuid
  - `ID` string, uuid
  - `fromID` string, uuid
  - `fromType` string
  - `toID` string, uuid
  - `toType` string
  - `type` 'blocker' | 'regression' | 'derived' | 'duplicate' | 'related': `blocker` = "blocker", `regression` = "regression", `derived` = "derived", `duplicate` = "duplicate", `related` = "related"
  - `note` string, nullable
  - `meta` object, nullable
  - `updTS` integer: Unix timestamp in milliseconds
  - `updUID` string

## Response `200`

OK — `IServerResponse<Relation>`

- object
  - `code` integer, required
  - `data` Relation, required: Schema Relation (inferred from ResponseData AST)
  - `srvTS` integer, required: Server timestamp (ms)
  - `rkey` string, required: Request key

## Other responses

- `400`: BadRequest / Validation — неверные params/body/headers
- `401`: Unauthorized: Active user session required
- `403`: AccessNotAllowed: privilegeRequired - relations of neither end or the other end is not visible (params.allow)
- `406`: TimeResync — расхождение rts с сервером
- `422`: UnprocessableContent: Missing required relation parameters or target entity does not exist

---

[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)
