Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 92 additions & 0 deletions packages/spec/openapi.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -7962,6 +7962,98 @@ components:
- $ref: '#/components/schemas/ViewBlockTime'
- $ref: '#/components/schemas/ViewBlockFileInput'
description: Union-тип для всех возможных блоков представления
ViewSubmitWebhookFile:
type: object
required:
- name
- size
- url
properties:
name:
type: string
description: Название файла с расширением
example: request.png
size:
type: integer
format: int32
description: Размер файла в байтах
example: 19153
url:
type: string
description: Временная прямая ссылка на скачивание файла
example: https://files.example.com/request.png
description: Файл, загруженный пользователем в форме и переданный в исходящем вебхуке
ViewSubmitWebhookPayload:
type: object
required:
- type
- event
- user_id
- data
- webhook_timestamp
properties:
type:
type: string
enum:
- view
description: Тип объекта
example: view
x-enum-descriptions:
view: Для представлений всегда view
event:
type: string
enum:
- submit
description: Тип события
example: submit
x-enum-descriptions:
submit: Отправка формы
private_metadata:
type: string
description: Строка, заданная при открытии представления
example: '{"timeoff_id":4378}'
callback_id:
type: string
description: Идентификатор представления, заданный при открытии формы
example: timeoff_reguest_form
user_id:
type: integer
format: int32
description: Идентификатор пользователя, который заполнил форму
example: 1235523
data:
type: object
additionalProperties:
anyOf:
- type: string
- type: array
items:
type: string
- type: array
items:
$ref: '#/components/schemas/ViewSubmitWebhookFile'
nullable: true
description: JSON карта заполненных полей представления, где каждый ключ совпадает со значением `name` соответствующего блока. Значением может быть строка, массив строк, массив загруженных файлов или null.
example:
date_start: '2025-07-01'
date_end: '2025-07-14'
request_doc:
- name: request.png
size: 19153
url: https://files.example.com/request.png
accessibility: phone_only
info: Поеду в сибирь на свадьбу лучшего друга
newsletters:
- new_tasks
- project_updates
team: success
time: '22:00'
webhook_timestamp:
type: integer
format: int32
description: Дата и время отправки вебхука (UTC+0) в формате UNIX
example: 1755075544
description: Структура исходящего вебхука о заполнении формы
WebhookEvent:
type: object
required:
Expand Down
67 changes: 67 additions & 0 deletions packages/spec/typespec.tsp
Original file line number Diff line number Diff line change
Expand Up @@ -2796,6 +2796,73 @@ model ButtonWebhookPayload {
webhook_timestamp: int32;
}

@doc("Файл, загруженный пользователем в форме и переданный в исходящем вебхуке")
model ViewSubmitWebhookFile {
@doc("Название файла с расширением")
@example("request.png")
name: string;

@doc("Размер файла в байтах")
@example(19153)
size: int32;

@doc("Временная прямая ссылка на скачивание файла")
@example("https://files.example.com/request.png")
url: string;
}

@doc("Структура исходящего вебхука о заполнении формы")
model ViewSubmitWebhookPayload {
@doc("Тип объекта")
@example("view")
@extension("x-enum-descriptions", #{
view: "Для представлений всегда view"
})
type: "view";

@doc("Тип события")
@example("submit")
@extension("x-enum-descriptions", #{
submit: "Отправка формы"
})
event: "submit";

@doc("Строка, заданная при открытии представления")
@example("{\"timeoff_id\":4378}")
private_metadata?: string;

@doc("Идентификатор представления, заданный при открытии формы")
@example("timeoff_reguest_form")
callback_id?: string;

@doc("Идентификатор пользователя, который заполнил форму")
@example(1235523)
user_id: int32;

@doc("JSON карта заполненных полей представления, где каждый ключ совпадает со значением `name` соответствующего блока. Значением может быть строка, массив строк, массив загруженных файлов или null.")
@example(#{
date_start: "2025-07-01",
date_end: "2025-07-14",
request_doc: #[
#{
name: "request.png",
size: 19153,
url: "https://files.example.com/request.png"
}
],
accessibility: "phone_only",
info: "Поеду в сибирь на свадьбу лучшего друга",
newsletters: #["new_tasks", "project_updates"],
team: "success",
time: "22:00"
})
data: Record<string | string[] | ViewSubmitWebhookFile[] | null>;

@doc("Дата и время отправки вебхука (UTC+0) в формате UNIX")
@example(1755075544)
webhook_timestamp: int32;
}

@doc("Структура исходящего вебхука об участниках чата")
model ChatMemberWebhookPayload {
@doc("Тип объекта")
Expand Down
Loading