---
title: "🔒 Создание нового продукта в проекте с инициализацией базового контента."
method: POST
path: "/projects/product/create"
tags: ["Projects: Products"]
---

# 🔒 Создание нового продукта в проекте с инициализацией базового контента.

`POST /projects/product/create`

## Request

- Base URL: `http://localhost`
- URL: `http://localhost/projects/product/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:** `product:create` (все обязательны; без ресурса)

### TypeScript (copy-paste)

**`POST /projects/product/create`**

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

```typescript
export interface ProjectsProductCreateParams {
  skipCreateContent?: boolean | null
}
```

</details>

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

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

export interface ProjectsProductCreateBodyFields {
  cID?: string
  projectID?: string
  ID?: string
  logoFID?: string | null
  cardFID?: string | null
  analyticAssignee?: string
  platform?: Product_Platform
  title?: string
  techStack?: Array<string>
  leadUID?: string
  startD?: string
  isDeleted?: boolean | null
  /** Unix timestamp in milliseconds */
  deletedTS?: number | null
  isArchived?: boolean | null
  /** Unix timestamp in milliseconds */
  archivedTS?: number | null
  isDeployEnabled?: boolean | null
  team?: Record<string, any> | null
  git?: Record<string, any> | null
  design?: {
  fileUrl?: string | null
  uiKitUrl?: string | null
  refUrls?: Array<{
  title?: string | null
  url: string
}> | null
} | null
  /** Unix timestamp in milliseconds */
  ord?: number
  spec?: string
  /** Unix timestamp in milliseconds */
  updTS?: number
  updUID?: string
}
```

</details>

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

```typescript
export type ProjectsProductCreateResponse = IServerResponse<Product>

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

- `skipCreateContent` boolean, nullable

## Headers

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

## Request body

- ProjectsProductCreateBody: Partial body (Valid.Patch) for `projects/product/create` — все поля опциональны
  - `cID` string, uuid
  - `projectID` string, uuid
  - `ID` string, uuid
  - `logoFID` string, uuid, nullable
  - `cardFID` string, uuid, nullable
  - `analyticAssignee` string
  - `platform` 10 | 20 | 30 | 40 | 50 | 60: `webApp` = 10, `backend` = 20, `website` = 30, `ios` = 40, `android` = 50, `ai` = 60
  - `title` string
  - `techStack` string[]
  - `leadUID` string, uuid
  - `startD` string, date-time
  - `isDeleted` boolean, nullable
  - `deletedTS` integer, nullable: Unix timestamp in milliseconds
  - `isArchived` boolean, nullable
  - `archivedTS` integer, nullable: Unix timestamp in milliseconds
  - `isDeployEnabled` boolean, nullable
  - `team` object, nullable
  - `git` object, nullable
  - `design` object, nullable
    - `fileUrl` string, nullable
    - `uiKitUrl` string, nullable
    - `refUrls` object[], nullable
      - `title` string, nullable
      - `url` string, required
  - `ord` integer: Unix timestamp in milliseconds
  - `spec` string
  - `updTS` integer: Unix timestamp in milliseconds
  - `updUID` string

## Response `200`

OK — `IServerResponse<Product>`

- object
  - `code` integer, required
  - `data` Product, required: Entity `Product` (table: Product )
    - `cID` string, uuid, required
    - `projectID` string, uuid, required
    - `ID` string, uuid, required
    - `logoFID` string, uuid, nullable
    - `cardFID` string, uuid, nullable
    - `analyticAssignee` string, required
    - `platform` 10 | 20 | 30 | 40 | 50 | 60, required: `webApp` = 10, `backend` = 20, `website` = 30, `ios` = 40, `android` = 50, `ai` = 60
    - `title` string, required
    - `techStack` string[], required
    - `leadUID` string, uuid, required
    - `startD` string, date-time, required
    - `isDeleted` boolean, nullable
    - `deletedTS` integer, nullable: Unix timestamp in milliseconds
    - `isArchived` boolean, nullable
    - `archivedTS` integer, nullable: Unix timestamp in milliseconds
    - `isDeployEnabled` boolean, nullable
    - `team` object, nullable
    - `git` object, nullable
    - `design` object, nullable
      - `fileUrl` string, nullable
      - `uiKitUrl` string, nullable
      - `refUrls` object[], nullable
        - `title` string, nullable
        - `url` string, required
    - `ord` integer, required: Unix timestamp in milliseconds
    - `spec` string, required
    - `updTS` integer, required: Unix timestamp in milliseconds
    - `updUID` string, required
  - `srvTS` integer, required: Server timestamp (ms)
  - `rkey` string, required: Request key

## Other responses

- `400`: BadRequest: Required ID or projectID missing in request body
- `401`: Unauthorized: Active user session required
- `403`: AccessNotAllowed: Privilege product:create required
- `404`: NotFound: Parent project with specified projectID does not exist
- `406`: TimeResync — расхождение rts с сервером
- `422`: UnprocessableContent: Product with specified ID already exists

---

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