{
  "components": {
    "parameters": {},
    "schemas": {
      "BookingCancelResponse": {
        "properties": {
          "cancelled": {
            "description": "Бронь отменена",
            "enum": [
              true
            ],
            "type": "boolean"
          }
        },
        "required": [
          "cancelled"
        ],
        "type": "object"
      },
      "BookingRescheduleBody": {
        "properties": {
          "end": {
            "description": "Новое окончание, ISO 8601",
            "type": "string"
          },
          "start": {
            "description": "Новое начало, ISO 8601",
            "type": "string"
          }
        },
        "required": [
          "start",
          "end"
        ],
        "type": "object"
      },
      "BookingRescheduleResponse": {
        "properties": {
          "end": {
            "description": "Новое окончание, ISO 8601",
            "type": "string"
          },
          "start": {
            "description": "Новое начало, ISO 8601",
            "type": "string"
          }
        },
        "required": [
          "start",
          "end"
        ],
        "type": "object"
      },
      "InterfaceActionResponse": {
        "properties": {
          "data": {
            "description": "Данные результата"
          },
          "status": {
            "description": "Итог действия",
            "type": "string"
          }
        },
        "required": [
          "status"
        ],
        "type": "object"
      },
      "InterfaceApiResponse": {
        "additionalProperties": true,
        "properties": {
          "description": {
            "description": "Описание",
            "type": [
              "string",
              "null"
            ]
          },
          "fields": {
            "description": "Поля формы с правилами видимости и валидации",
            "items": {
              "additionalProperties": true,
              "properties": {},
              "type": "object"
            },
            "type": "array"
          },
          "id": {
            "description": "Идентификатор интерфейса",
            "type": "string"
          },
          "publicSettings": {
            "additionalProperties": true,
            "description": "Настройки отображения",
            "properties": {},
            "type": "object"
          },
          "title": {
            "description": "Название",
            "type": "string"
          }
        },
        "required": [
          "id",
          "title",
          "fields"
        ],
        "type": "object"
      },
      "InterfaceApiSubmitRequest": {
        "properties": {
          "data": {
            "additionalProperties": true,
            "description": "Ответы формы: ключ поля → значение",
            "type": "object"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "InterfaceApiSubmitResponse": {
        "properties": {
          "bindingRecordId": {
            "description": "Созданная запись реестра; null — реестр не привязан",
            "type": [
              "string",
              "null"
            ]
          },
          "submissionId": {
            "description": "Идентификатор отправки",
            "type": "string"
          },
          "success": {
            "description": "Отправка принята",
            "type": "boolean"
          }
        },
        "required": [
          "success",
          "submissionId"
        ],
        "type": "object"
      },
      "InterfaceAvailability": {
        "properties": {
          "durationMin": {
            "description": "Длительность встречи в минутах",
            "exclusiveMinimum": 0,
            "type": "integer"
          },
          "slots": {
            "description": "Свободные интервалы",
            "items": {
              "$ref": "#/components/schemas/InterfaceBookingSlot"
            },
            "type": "array"
          }
        },
        "required": [
          "slots"
        ],
        "type": "object"
      },
      "InterfaceBookingSlot": {
        "properties": {
          "end": {
            "description": "Окончание слота, ISO 8601",
            "type": "string"
          },
          "start": {
            "description": "Начало слота, ISO 8601",
            "type": "string"
          }
        },
        "required": [
          "start",
          "end"
        ],
        "type": "object"
      },
      "InterfaceCondition": {
        "properties": {
          "operator": {
            "enum": [
              "is",
              "isNot",
              "isOneOf",
              "isNoneOf",
              "isFilled",
              "isEmpty",
              "contains",
              "notContains",
              "beginsWith",
              "endsWith",
              "gt",
              "gte",
              "lt",
              "lte",
              "between",
              "earlierThan",
              "laterThan",
              "on",
              "earlierThanOrOn",
              "laterThanOrOn"
            ],
            "type": "string"
          },
          "ref": {
            "minLength": 1,
            "type": "string"
          },
          "value": {
            "anyOf": [
              {
                "type": "string"
              },
              {
                "type": "number"
              },
              {
                "type": "boolean"
              },
              {
                "items": {
                  "anyOf": [
                    {
                      "type": "string"
                    },
                    {
                      "type": "number"
                    }
                  ]
                },
                "type": "array"
              }
            ]
          },
          "variable": {
            "minLength": 1,
            "type": "string"
          }
        },
        "required": [
          "variable",
          "operator"
        ],
        "type": "object"
      },
      "InterfaceList": {
        "items": {
          "$ref": "#/components/schemas/InterfaceObject"
        },
        "type": "array"
      },
      "InterfaceObject": {
        "additionalProperties": true,
        "properties": {
          "createdAt": {
            "description": "Когда создан, ISO 8601",
            "type": "string"
          },
          "createdBy": {
            "description": "Создатель",
            "type": "string"
          },
          "description": {
            "description": "Описание",
            "type": [
              "string",
              "null"
            ]
          },
          "fields": {
            "description": "Поля формы",
            "items": {
              "additionalProperties": true,
              "properties": {},
              "type": "object"
            },
            "type": "array"
          },
          "id": {
            "description": "Идентификатор интерфейса",
            "type": "string"
          },
          "templates": {
            "additionalProperties": true,
            "description": "Привязки и настройки (шаблон, реестр, календарь)",
            "properties": {},
            "type": [
              "object",
              "null"
            ]
          },
          "title": {
            "description": "Название интерфейса",
            "type": "string"
          },
          "updatedAt": {
            "description": "Когда обновлён, ISO 8601",
            "type": "string"
          }
        },
        "required": [
          "id",
          "title"
        ],
        "type": "object"
      },
      "InterfacePublicDocumentStatusResponse": {
        "properties": {
          "documentId": {
            "description": "Идентификатор документа; null — ещё генерируется",
            "type": [
              "string",
              "null"
            ]
          },
          "ready": {
            "description": "Готов ли сгенерированный документ",
            "type": "boolean"
          }
        },
        "required": [
          "ready",
          "documentId"
        ],
        "type": "object"
      },
      "InterfacePublicInterface": {
        "additionalProperties": true,
        "properties": {
          "calendar": {
            "additionalProperties": true,
            "description": "Настройки записи в календарь",
            "properties": {},
            "type": [
              "object",
              "null"
            ]
          },
          "description": {
            "description": "Описание",
            "type": [
              "string",
              "null"
            ]
          },
          "fields": {
            "description": "Поля формы с правилами видимости и валидации",
            "items": {
              "additionalProperties": true,
              "properties": {},
              "type": "object"
            },
            "type": "array"
          },
          "id": {
            "description": "Идентификатор интерфейса",
            "type": "string"
          },
          "publicSettings": {
            "additionalProperties": true,
            "description": "Оформление публичной страницы",
            "properties": {},
            "type": "object"
          },
          "title": {
            "description": "Название интерфейса",
            "type": "string"
          }
        },
        "required": [
          "id",
          "title",
          "fields"
        ],
        "type": "object"
      },
      "InterfacePublicRegistryResponse": {
        "properties": {
          "records": {
            "description": "Записи реестра, до 100",
            "items": {
              "properties": {
                "data": {
                  "additionalProperties": true,
                  "description": "Значения полей записи",
                  "type": "object"
                },
                "id": {
                  "description": "Идентификатор записи",
                  "type": "string"
                }
              },
              "required": [
                "id",
                "data"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "records"
        ],
        "type": "object"
      },
      "InterfacePublicSubmitRequest": {
        "properties": {
          "data": {
            "additionalProperties": true,
            "description": "Ответы формы: ключ поля → значение",
            "type": "object"
          }
        },
        "required": [
          "data"
        ],
        "type": "object"
      },
      "InterfacePublicSubmitResponse": {
        "properties": {
          "hasSession": {
            "description": "Создана ли сессия для отслеживания документа",
            "type": "boolean"
          },
          "message": {
            "description": "Сообщение для показа пользователю",
            "type": "string"
          },
          "submissionId": {
            "description": "Идентификатор отправки",
            "type": "string"
          },
          "success": {
            "description": "Отправка принята",
            "type": "boolean"
          }
        },
        "required": [
          "success",
          "submissionId",
          "hasSession",
          "message"
        ],
        "type": "object"
      },
      "InterfacePublicSuggestResponse": {
        "properties": {
          "suggestions": {
            "description": "Подсказки DaData",
            "items": {
              "additionalProperties": true,
              "properties": {},
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "suggestions"
        ],
        "type": "object"
      },
      "InterfacePublicUploadRequest": {
        "properties": {
          "file": {
            "description": "Загружаемый файл",
            "format": "binary",
            "type": "string"
          }
        },
        "required": [
          "file"
        ],
        "type": "object"
      },
      "InterfacePublicUploadResponse": {
        "additionalProperties": true,
        "properties": {
          "fileId": {
            "description": "Идентификатор файла для подстановки в ответы",
            "type": "string"
          }
        },
        "type": "object"
      },
      "InterfacePublishResponse": {
        "properties": {
          "channel": {
            "additionalProperties": true,
            "description": "Состояние публикации в канале",
            "properties": {
              "channel": {
                "description": "Канал публикации",
                "type": "string"
              },
              "enabled": {
                "description": "Включён ли публичный доступ",
                "type": "boolean"
              },
              "token": {
                "description": "Токен публичной ссылки",
                "type": "string"
              }
            },
            "type": "object"
          },
          "updatedAt": {
            "description": "Когда обновлён интерфейс, ISO 8601",
            "type": "string"
          }
        },
        "required": [
          "channel",
          "updatedAt"
        ],
        "type": "object"
      },
      "InterfaceRule": {
        "properties": {
          "conditions": {
            "default": [],
            "items": {
              "$ref": "#/components/schemas/InterfaceCondition"
            },
            "type": "array"
          },
          "groups": {
            "items": {
              "$ref": "#/components/schemas/InterfaceRule"
            },
            "type": "array"
          },
          "match": {
            "default": "all",
            "enum": [
              "all",
              "any"
            ],
            "type": "string"
          }
        },
        "type": "object"
      },
      "InterfaceSendTelegramRequest": {
        "properties": {
          "userId": {
            "description": "Получатель (пользователь с привязанным Telegram)",
            "type": "string"
          }
        },
        "required": [
          "userId"
        ],
        "type": "object"
      },
      "InterfaceSendTelegramResult": {
        "additionalProperties": true,
        "properties": {
          "success": {
            "description": "Доставлено ли сообщение",
            "type": "boolean"
          }
        },
        "required": [
          "success"
        ],
        "type": "object"
      },
      "InterfaceWebhookSecret": {
        "properties": {
          "rotatedAt": {
            "description": "Когда секрет выпущен, ISO 8601",
            "type": "string"
          },
          "secret": {
            "description": "Секрет подписи вебхука. Храните его только на сервере, который принимает ответы",
            "type": "string"
          }
        },
        "required": [
          "secret",
          "rotatedAt"
        ],
        "type": "object"
      },
      "InterfaceWebhookTestResult": {
        "properties": {
          "durationMs": {
            "description": "Время до ответа сервера в миллисекундах",
            "type": "integer"
          },
          "error": {
            "description": "Почему запрос не дошёл до сервера",
            "type": "string"
          },
          "ok": {
            "description": "Сервер принял тестовый ответ (код 2xx)",
            "type": "boolean"
          },
          "status": {
            "description": "HTTP-статус ответа сервера",
            "type": "integer"
          }
        },
        "required": [
          "ok",
          "durationMs"
        ],
        "type": "object"
      },
      "ProblemDetails": {
        "additionalProperties": true,
        "properties": {
          "code": {
            "description": "Стабильный машиночитаемый код ошибки",
            "type": "string"
          },
          "detail": {
            "description": "Пояснение для человека",
            "type": "string"
          },
          "errors": {
            "description": "Ошибки валидации по полям",
            "items": {
              "properties": {
                "name": {
                  "description": "Имя поля",
                  "type": "string"
                },
                "pointer": {
                  "description": "JSON Pointer на поле",
                  "type": "string"
                },
                "reason": {
                  "description": "Причина",
                  "type": "string"
                },
                "rule": {
                  "description": "Нарушенное правило",
                  "type": "string"
                }
              },
              "required": [
                "reason"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "instance": {
            "description": "Путь запроса, в котором возникла ошибка",
            "type": "string"
          },
          "request_id": {
            "description": "Идентификатор запроса для обращения в поддержку",
            "type": "string"
          },
          "status": {
            "description": "HTTP-статус",
            "type": "integer"
          },
          "title": {
            "description": "Краткое описание ошибки, соответствующее HTTP-статусу",
            "type": "string"
          },
          "trace_id": {
            "description": "Идентификатор трассы",
            "type": "string"
          },
          "type": {
            "description": "URI типа ошибки, ведёт на описание в документации",
            "format": "uri",
            "type": "string"
          }
        },
        "required": [
          "type",
          "title",
          "status",
          "code"
        ],
        "type": "object"
      }
    },
    "securitySchemes": {
      "dpop": {
        "bearerFormat": "JWT",
        "description": "Access token, привязанный к ключу клиента по RFC 9449: заголовок `Authorization: DPoP <token>` и заголовок `DPoP` с доказательством для каждого запроса. Сервер выдаёт `DPoP-Nonce`, который клиент включает в доказательство.",
        "scheme": "dpop",
        "type": "http"
      },
      "mutualTLS": {
        "description": "Access token, привязанный к клиентскому сертификату по RFC 8705: заголовок `Authorization: Bearer <token>` поверх mTLS-соединения тем же сертификатом.",
        "type": "mutualTLS"
      },
      "oauth2": {
        "flows": {
          "authorizationCode": {
            "authorizationUrl": "https://app.legalstack.ru/oauth/authorize",
            "scopes": {
              "interfaces:admin": "Full interfaces administration",
              "interfaces:read": "Read interfaces",
              "interfaces:submit": "Submit interface responses",
              "interfaces:write": "Manage interfaces"
            },
            "tokenUrl": "https://api.legalstack.ru/oauth/token"
          },
          "clientCredentials": {
            "scopes": {
              "interfaces:admin": "Full interfaces administration",
              "interfaces:read": "Read interfaces",
              "interfaces:submit": "Submit interface responses",
              "interfaces:write": "Manage interfaces"
            },
            "tokenUrl": "https://api.legalstack.ru/oauth/token"
          }
        },
        "type": "oauth2"
      }
    }
  },
  "info": {
    "title": "LegalStack Interface API",
    "version": "1.0.0"
  },
  "openapi": "3.1.0",
  "paths": {
    "/api/v1/interfaces": {
      "get": {
        "operationId": "get_api_v1_interfaces",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfaceList"
                }
              }
            },
            "description": "Интерфейсы команды"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Токен отсутствует, недействителен или истёк"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "security": [
          {
            "dpop": []
          },
          {
            "oauth2": [
              "interfaces:read"
            ]
          }
        ],
        "summary": "Список интерфейсов",
        "tags": [
          "interfaces"
        ]
      },
      "post": {
        "operationId": "post_api_v1_interfaces",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "actions": {
                    "additionalProperties": true,
                    "description": "Настройки действий интерфейса. Вебхук задаётся полями enabled и url; секрет подписи хранится отдельно и выдаётся через /{id}/webhook/secret",
                    "type": "object"
                  },
                  "calendar": {
                    "description": "Привязка к календарю",
                    "properties": {
                      "booking": {
                        "description": "Настройки бронирования (для booking)",
                        "properties": {
                          "bufferAfterMin": {
                            "description": "Буфер после встречи в минутах",
                            "minimum": 0,
                            "type": "integer"
                          },
                          "bufferBeforeMin": {
                            "description": "Буфер до встречи в минутах",
                            "minimum": 0,
                            "type": "integer"
                          },
                          "durationMin": {
                            "description": "Длительность встречи в минутах",
                            "exclusiveMinimum": 0,
                            "type": "integer"
                          },
                          "hideTimezone": {
                            "description": "Скрыть выбор часового пояса",
                            "type": "boolean"
                          },
                          "hosts": {
                            "description": "Хосты встречи",
                            "items": {
                              "properties": {
                                "scheduleId": {
                                  "description": "Расписание доступности хоста",
                                  "type": "string"
                                },
                                "userId": {
                                  "description": "Пользователь-хост",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "userId"
                              ],
                              "type": "object"
                            },
                            "type": "array"
                          },
                          "location": {
                            "description": "Место или ссылка на встречу",
                            "type": "string"
                          },
                          "minNoticeMin": {
                            "description": "Минимальное время до записи в минутах",
                            "minimum": 0,
                            "type": "integer"
                          },
                          "mode": {
                            "description": "Режим: single — один хост, round_robin — по очереди, collective — общий слот всех хостов",
                            "enum": [
                              "single",
                              "round_robin",
                              "collective"
                            ],
                            "type": "string"
                          },
                          "questions": {
                            "description": "Вопросы при записи",
                            "items": {
                              "properties": {
                                "key": {
                                  "description": "Ключ вопроса",
                                  "type": "string"
                                },
                                "label": {
                                  "description": "Текст вопроса",
                                  "type": "string"
                                },
                                "required": {
                                  "description": "Обязательность ответа",
                                  "type": "boolean"
                                },
                                "type": {
                                  "description": "Тип поля ответа",
                                  "enum": [
                                    "text",
                                    "email",
                                    "textarea"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "key",
                                "label",
                                "type",
                                "required"
                              ],
                              "type": "object"
                            },
                            "type": "array"
                          },
                          "stepMin": {
                            "description": "Шаг сетки слотов в минутах",
                            "exclusiveMinimum": 0,
                            "type": "integer"
                          },
                          "windowDays": {
                            "description": "Горизонт записи в днях",
                            "exclusiveMinimum": 0,
                            "type": "integer"
                          }
                        },
                        "required": [
                          "mode",
                          "hosts",
                          "durationMin"
                        ],
                        "type": "object"
                      },
                      "eventId": {
                        "description": "Событие календаря (для event_participation)",
                        "type": "string"
                      },
                      "mode": {
                        "description": "Режим: event_participation — запись на событие, booking — бронирование слота",
                        "enum": [
                          "event_participation",
                          "booking"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "mode"
                    ],
                    "type": "object"
                  },
                  "description": {
                    "description": "Описание интерфейса",
                    "type": "string"
                  },
                  "fields": {
                    "description": "Поля формы",
                    "items": {
                      "properties": {
                        "condition": {
                          "description": "Правило видимости поля",
                          "properties": {
                            "conditions": {
                              "default": [],
                              "items": {
                                "$ref": "#/components/schemas/InterfaceCondition"
                              },
                              "type": "array"
                            },
                            "groups": {
                              "items": {
                                "$ref": "#/components/schemas/InterfaceRule"
                              },
                              "type": "array"
                            },
                            "match": {
                              "default": "all",
                              "enum": [
                                "all",
                                "any"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dataType": {
                          "description": "Тип данных поля",
                          "type": "string"
                        },
                        "defaultValue": {
                          "description": "Значение по умолчанию"
                        },
                        "id": {
                          "description": "Идентификатор существующего поля (при обновлении)",
                          "type": "string"
                        },
                        "key": {
                          "description": "Машинный ключ поля",
                          "type": "string"
                        },
                        "name": {
                          "description": "Подпись поля в форме",
                          "type": "string"
                        },
                        "options": {
                          "additionalProperties": true,
                          "description": "Настройки поля (варианты списка и т.п.)",
                          "type": [
                            "object",
                            "null"
                          ]
                        },
                        "ordinal": {
                          "description": "Порядок поля в форме",
                          "type": "number"
                        },
                        "parent": {
                          "description": "Зависимость показа от значения другого поля",
                          "properties": {
                            "fieldKey": {
                              "description": "Ключ родительского поля",
                              "type": "string"
                            },
                            "optionValue": {
                              "description": "Значение родителя, при котором поле показывается",
                              "type": "string"
                            }
                          },
                          "required": [
                            "fieldKey",
                            "optionValue"
                          ],
                          "type": [
                            "object",
                            "null"
                          ]
                        },
                        "required": {
                          "description": "Обязательность заполнения",
                          "type": "boolean"
                        },
                        "requiredIf": {
                          "description": "Правило условной обязательности",
                          "properties": {
                            "conditions": {
                              "default": [],
                              "items": {
                                "$ref": "#/components/schemas/InterfaceCondition"
                              },
                              "type": "array"
                            },
                            "groups": {
                              "items": {
                                "$ref": "#/components/schemas/InterfaceRule"
                              },
                              "type": "array"
                            },
                            "match": {
                              "default": "all",
                              "enum": [
                                "all",
                                "any"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "validation": {
                          "additionalProperties": true,
                          "description": "Правила валидации значения",
                          "type": [
                            "object",
                            "null"
                          ]
                        },
                        "visible": {
                          "description": "Показывать ли поле",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key",
                        "name",
                        "dataType",
                        "ordinal"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "pipelineId": {
                    "format": "uuid",
                    "type": "string"
                  },
                  "publicSettings": {
                    "description": "Оформление публичной страницы",
                    "properties": {
                      "firstStepName": {
                        "description": "Название первого шага",
                        "type": "string"
                      },
                      "maxWidth": {
                        "description": "Максимальная ширина формы (CSS-значение)",
                        "type": "string"
                      },
                      "showDescription": {
                        "description": "Показывать описание",
                        "type": "boolean"
                      },
                      "showTitle": {
                        "description": "Показывать заголовок",
                        "type": "boolean"
                      },
                      "submitButtonText": {
                        "description": "Текст кнопки отправки",
                        "type": "string"
                      },
                      "successMessage": {
                        "description": "Сообщение после успешной отправки",
                        "type": "string"
                      },
                      "theme": {
                        "description": "Тема оформления",
                        "enum": [
                          "light",
                          "dark"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "registryTypeId": {
                    "description": "Реестр, куда сохраняются ответы",
                    "type": "string"
                  },
                  "smartdocTemplateId": {
                    "description": "Шаблон документа, создаваемого из ответов",
                    "type": "string"
                  },
                  "title": {
                    "default": "Новый интерфейс",
                    "description": "Название интерфейса",
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfaceObject"
                }
              }
            },
            "description": "Интерфейс создан"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Токен отсутствует, недействителен или истёк"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "security": [
          {
            "dpop": []
          },
          {
            "oauth2": [
              "interfaces:write"
            ]
          }
        ],
        "summary": "Создать интерфейс",
        "tags": [
          "interfaces"
        ]
      }
    },
    "/api/v1/interfaces/api/{token}": {
      "get": {
        "operationId": "get_api_v1_interfaces_api_token",
        "parameters": [
          {
            "description": "Токен API-канала интерфейса",
            "in": "path",
            "name": "token",
            "required": true,
            "schema": {
              "description": "Токен API-канала интерфейса",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfaceApiResponse"
                }
              }
            },
            "description": "Схема интерфейса"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "summary": "Схема интерфейса (API)",
        "tags": [
          "interfaces:api"
        ]
      }
    },
    "/api/v1/interfaces/api/{token}/submit": {
      "post": {
        "operationId": "post_api_v1_interfaces_api_token_submit",
        "parameters": [
          {
            "description": "Токен API-канала интерфейса",
            "in": "path",
            "name": "token",
            "required": true,
            "schema": {
              "description": "Токен API-канала интерфейса",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InterfaceApiSubmitRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfaceApiSubmitResponse"
                }
              }
            },
            "description": "Отправка принята"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Ресурс не найден"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "summary": "Отправить интерфейс (API)",
        "tags": [
          "interfaces:api"
        ]
      }
    },
    "/api/v1/interfaces/booking/{teamId}/{token}/cancel": {
      "post": {
        "operationId": "post_api_v1_interfaces_booking_teamId_token_cancel",
        "parameters": [
          {
            "description": "Команда, в которой сделана бронь",
            "in": "path",
            "name": "teamId",
            "required": true,
            "schema": {
              "description": "Команда, в которой сделана бронь",
              "type": "string"
            }
          },
          {
            "description": "Токен управления бронью из письма",
            "in": "path",
            "name": "token",
            "required": true,
            "schema": {
              "description": "Токен управления бронью из письма",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookingCancelResponse"
                }
              }
            },
            "description": "Бронь отменена"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "summary": "Отменить бронь",
        "tags": [
          "interfaces:public"
        ]
      }
    },
    "/api/v1/interfaces/booking/{teamId}/{token}/reschedule": {
      "post": {
        "operationId": "post_api_v1_interfaces_booking_teamId_token_reschedule",
        "parameters": [
          {
            "description": "Команда, в которой сделана бронь",
            "in": "path",
            "name": "teamId",
            "required": true,
            "schema": {
              "description": "Команда, в которой сделана бронь",
              "type": "string"
            }
          },
          {
            "description": "Токен управления бронью из письма",
            "in": "path",
            "name": "token",
            "required": true,
            "schema": {
              "description": "Токен управления бронью из письма",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/BookingRescheduleBody"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/BookingRescheduleResponse"
                }
              }
            },
            "description": "Бронь перенесена"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Конфликт с текущим состоянием ресурса"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "summary": "Перенести бронь",
        "tags": [
          "interfaces:public"
        ]
      }
    },
    "/api/v1/interfaces/pipelines": {
      "get": {
        "operationId": "get_api_v1_interfaces_pipelines",
        "parameters": [
          {
            "in": "query",
            "name": "entityId",
            "required": false,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "properties": {
                      "id": {
                        "format": "uuid",
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      },
                      "revision": {
                        "exclusiveMinimum": 0,
                        "type": "integer"
                      }
                    },
                    "required": [
                      "id",
                      "name",
                      "revision"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                }
              }
            },
            "description": "Пайплайны"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Токен отсутствует, недействителен или истёк"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "security": [
          {
            "dpop": []
          },
          {
            "oauth2": [
              "interfaces:read"
            ]
          }
        ],
        "summary": "Пайплайны команды или объекта",
        "tags": [
          "interfaces"
        ]
      },
      "post": {
        "operationId": "post_api_v1_interfaces_pipelines",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "id": {
                    "format": "uuid",
                    "type": "string"
                  },
                  "members": {
                    "items": {
                      "properties": {
                        "id": {
                          "format": "uuid",
                          "type": "string"
                        },
                        "kind": {
                          "enum": [
                            "document",
                            "interface",
                            "registry",
                            "automation"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "kind"
                      ],
                      "type": "object"
                    },
                    "maxItems": 100,
                    "minItems": 1,
                    "type": "array"
                  },
                  "name": {
                    "maxLength": 200,
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "id",
                  "name",
                  "members"
                ],
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "id": {
                      "format": "uuid",
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "revision": {
                      "exclusiveMinimum": 0,
                      "type": "integer"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "revision"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Пайплайн"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Токен отсутствует, недействителен или истёк"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Конфликт с текущим состоянием ресурса"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "security": [
          {
            "dpop": []
          },
          {
            "oauth2": [
              "interfaces:write"
            ]
          }
        ],
        "summary": "Создать пайплайн с явным составом",
        "tags": [
          "interfaces"
        ]
      }
    },
    "/api/v1/interfaces/pipelines/candidates": {
      "get": {
        "operationId": "get_api_v1_interfaces_pipelines_candidates",
        "parameters": [
          {
            "in": "query",
            "name": "kind",
            "required": true,
            "schema": {
              "enum": [
                "document",
                "interface",
                "registry",
                "automation"
              ],
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "maxLength": 200,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "items": {
                    "properties": {
                      "id": {
                        "format": "uuid",
                        "type": "string"
                      },
                      "kind": {
                        "enum": [
                          "document",
                          "interface",
                          "registry",
                          "automation"
                        ],
                        "type": "string"
                      },
                      "name": {
                        "type": "string"
                      }
                    },
                    "required": [
                      "id",
                      "kind",
                      "name"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                }
              }
            },
            "description": "Объекты"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Токен отсутствует, недействителен или истёк"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "security": [
          {
            "dpop": []
          },
          {
            "oauth2": [
              "interfaces:read"
            ]
          }
        ],
        "summary": "Доступные участники пайплайна",
        "tags": [
          "interfaces"
        ]
      }
    },
    "/api/v1/interfaces/pipelines/{id}": {
      "get": {
        "operationId": "get_api_v1_interfaces_pipelines_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "checkedAt": {
                      "type": "string"
                    },
                    "issues": {
                      "items": {
                        "properties": {
                          "code": {
                            "type": "string"
                          },
                          "entityId": {
                            "format": "uuid",
                            "type": "string"
                          },
                          "message": {
                            "type": "string"
                          },
                          "nodeId": {
                            "type": "string"
                          },
                          "severity": {
                            "enum": [
                              "error",
                              "warning",
                              "info"
                            ],
                            "type": "string"
                          }
                        },
                        "required": [
                          "code",
                          "message",
                          "entityId"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "links": {
                      "items": {
                        "properties": {
                          "configPath": {
                            "type": "string"
                          },
                          "enabled": {
                            "type": "boolean"
                          },
                          "id": {
                            "type": "string"
                          },
                          "relation": {
                            "enum": [
                              "uses_template",
                              "writes_to",
                              "triggered_by",
                              "reads_from",
                              "derived_from",
                              "invokes"
                            ],
                            "type": "string"
                          },
                          "source": {
                            "properties": {
                              "id": {
                                "format": "uuid",
                                "type": "string"
                              },
                              "kind": {
                                "enum": [
                                  "document",
                                  "interface",
                                  "registry",
                                  "automation"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "kind"
                            ],
                            "type": "object"
                          },
                          "state": {
                            "enum": [
                              "configured",
                              "outside",
                              "unavailable"
                            ],
                            "type": "string"
                          },
                          "target": {
                            "properties": {
                              "id": {
                                "format": "uuid",
                                "type": "string"
                              },
                              "kind": {
                                "enum": [
                                  "document",
                                  "interface",
                                  "registry",
                                  "automation"
                                ],
                                "type": "string"
                              }
                            },
                            "required": [
                              "id",
                              "kind"
                            ],
                            "type": "object"
                          }
                        },
                        "required": [
                          "id",
                          "source",
                          "target",
                          "relation",
                          "configPath",
                          "state"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "members": {
                      "items": {
                        "properties": {
                          "availability": {
                            "enum": [
                              "available",
                              "restricted",
                              "missing",
                              "unknown"
                            ],
                            "type": "string"
                          },
                          "executionStatus": {
                            "type": "string"
                          },
                          "id": {
                            "format": "uuid",
                            "type": "string"
                          },
                          "kind": {
                            "enum": [
                              "document",
                              "interface",
                              "registry",
                              "automation"
                            ],
                            "type": "string"
                          },
                          "name": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "revision": {
                            "type": [
                              "string",
                              "null"
                            ]
                          }
                        },
                        "required": [
                          "id",
                          "kind",
                          "name",
                          "availability",
                          "revision"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "pipeline": {
                      "properties": {
                        "id": {
                          "format": "uuid",
                          "type": "string"
                        },
                        "name": {
                          "type": "string"
                        },
                        "revision": {
                          "exclusiveMinimum": 0,
                          "type": "integer"
                        }
                      },
                      "required": [
                        "id",
                        "name",
                        "revision"
                      ],
                      "type": "object"
                    }
                  },
                  "required": [
                    "pipeline",
                    "members",
                    "links",
                    "issues",
                    "checkedAt"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Состояние пайплайна"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Токен отсутствует, недействителен или истёк"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Ресурс не найден"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "security": [
          {
            "dpop": []
          },
          {
            "oauth2": [
              "interfaces:read"
            ]
          }
        ],
        "summary": "Состав и проверенные связи пайплайна",
        "tags": [
          "interfaces"
        ]
      },
      "patch": {
        "operationId": "patch_api_v1_interfaces_pipelines_id",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "add": {
                    "default": [],
                    "items": {
                      "properties": {
                        "id": {
                          "format": "uuid",
                          "type": "string"
                        },
                        "kind": {
                          "enum": [
                            "document",
                            "interface",
                            "registry",
                            "automation"
                          ],
                          "type": "string"
                        }
                      },
                      "required": [
                        "id",
                        "kind"
                      ],
                      "type": "object"
                    },
                    "maxItems": 100,
                    "type": "array"
                  },
                  "name": {
                    "maxLength": 200,
                    "minLength": 1,
                    "type": "string"
                  },
                  "remove": {
                    "default": [],
                    "items": {
                      "format": "uuid",
                      "type": "string"
                    },
                    "maxItems": 100,
                    "type": "array"
                  },
                  "revision": {
                    "exclusiveMinimum": 0,
                    "type": "integer"
                  }
                },
                "required": [
                  "revision"
                ],
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "id": {
                      "format": "uuid",
                      "type": "string"
                    },
                    "name": {
                      "type": "string"
                    },
                    "revision": {
                      "exclusiveMinimum": 0,
                      "type": "integer"
                    }
                  },
                  "required": [
                    "id",
                    "name",
                    "revision"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Новая версия состава"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Токен отсутствует, недействителен или истёк"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Ресурс не найден"
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Конфликт с текущим состоянием ресурса"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "security": [
          {
            "dpop": []
          },
          {
            "oauth2": [
              "interfaces:write"
            ]
          }
        ],
        "summary": "Изменить состав пайплайна с проверкой версии",
        "tags": [
          "interfaces"
        ]
      }
    },
    "/api/v1/interfaces/pipelines/{id}/registry-routing": {
      "get": {
        "operationId": "get_api_v1_interfaces_pipelines_id_registry-routing",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "interfaceId",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "fields": {
                      "items": {
                        "properties": {
                          "dataType": {
                            "type": [
                              "string",
                              "null"
                            ]
                          },
                          "key": {
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          },
                          "required": {
                            "type": "boolean"
                          }
                        },
                        "required": [
                          "key",
                          "name",
                          "dataType",
                          "required"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "interfaceId": {
                      "format": "uuid",
                      "type": "string"
                    },
                    "registries": {
                      "items": {
                        "properties": {
                          "fields": {
                            "items": {
                              "properties": {
                                "dataType": {
                                  "type": [
                                    "string",
                                    "null"
                                  ]
                                },
                                "key": {
                                  "type": "string"
                                },
                                "name": {
                                  "type": "string"
                                },
                                "required": {
                                  "type": "boolean"
                                }
                              },
                              "required": [
                                "key",
                                "name",
                                "dataType",
                                "required"
                              ],
                              "type": "object"
                            },
                            "type": "array"
                          },
                          "id": {
                            "format": "uuid",
                            "type": "string"
                          },
                          "name": {
                            "type": "string"
                          }
                        },
                        "required": [
                          "id",
                          "name",
                          "fields"
                        ],
                        "type": "object"
                      },
                      "type": "array"
                    },
                    "targets": {
                      "items": {
                        "properties": {
                          "fieldMapping": {
                            "additionalProperties": {
                              "maxLength": 200,
                              "minLength": 1,
                              "type": "string",
                              "x-additionalPropertiesName": "registryField"
                            },
                            "type": "object"
                          },
                          "registryTypeId": {
                            "format": "uuid",
                            "type": "string"
                          }
                        },
                        "required": [
                          "registryTypeId"
                        ],
                        "type": "object"
                      },
                      "maxItems": 20,
                      "type": "array"
                    },
                    "version": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "interfaceId",
                    "version",
                    "fields",
                    "targets",
                    "registries"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Связи и поля"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Токен отсутствует, недействителен или истёк"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Ресурс не найден"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "security": [
          {
            "dpop": []
          },
          {
            "oauth2": [
              "interfaces:read"
            ]
          }
        ],
        "summary": "Настройки передачи ответов формы в реестры",
        "tags": [
          "interfaces"
        ]
      },
      "put": {
        "operationId": "put_api_v1_interfaces_pipelines_id_registry-routing",
        "parameters": [
          {
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "format": "uuid",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "interfaceId": {
                    "format": "uuid",
                    "type": "string"
                  },
                  "targets": {
                    "items": {
                      "properties": {
                        "fieldMapping": {
                          "additionalProperties": {
                            "maxLength": 200,
                            "minLength": 1,
                            "type": "string",
                            "x-additionalPropertiesName": "registryField"
                          },
                          "type": "object"
                        },
                        "registryTypeId": {
                          "format": "uuid",
                          "type": "string"
                        }
                      },
                      "required": [
                        "registryTypeId"
                      ],
                      "type": "object"
                    },
                    "maxItems": 20,
                    "type": "array"
                  },
                  "version": {
                    "minLength": 1,
                    "type": "string"
                  }
                },
                "required": [
                  "interfaceId",
                  "version",
                  "targets"
                ],
                "type": "object"
              }
            }
          }
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "success": {
                      "enum": [
                        true
                      ],
                      "type": "boolean"
                    }
                  },
                  "required": [
                    "success"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Связи сохранены"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Токен отсутствует, недействителен или истёк"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Ресурс не найден"
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Конфликт с текущим состоянием ресурса"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "security": [
          {
            "dpop": []
          },
          {
            "oauth2": [
              "interfaces:write"
            ]
          }
        ],
        "summary": "Сохранить рабочие связи формы с реестрами",
        "tags": [
          "interfaces"
        ]
      }
    },
    "/api/v1/interfaces/public/{token}": {
      "get": {
        "operationId": "get_api_v1_interfaces_public_token",
        "parameters": [
          {
            "description": "Токен публичной ссылки интерфейса",
            "in": "path",
            "name": "token",
            "required": true,
            "schema": {
              "description": "Токен публичной ссылки интерфейса",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfacePublicInterface"
                }
              }
            },
            "description": "Публичное описание интерфейса"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "summary": "Получить публичный интерфейс",
        "tags": [
          "interfaces:public"
        ]
      }
    },
    "/api/v1/interfaces/public/{token}/availability": {
      "get": {
        "operationId": "get_api_v1_interfaces_public_token_availability",
        "parameters": [
          {
            "description": "Токен публичной ссылки интерфейса",
            "in": "path",
            "name": "token",
            "required": true,
            "schema": {
              "description": "Токен публичной ссылки интерфейса",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfaceAvailability"
                }
              }
            },
            "description": "Свободные слоты"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "summary": "Свободные слоты интерфейса записи",
        "tags": [
          "interfaces:public"
        ]
      }
    },
    "/api/v1/interfaces/public/{token}/registry/{registryTypeId}": {
      "get": {
        "operationId": "get_api_v1_interfaces_public_token_registry_registryTypeId",
        "parameters": [
          {
            "description": "Токен публичной ссылки интерфейса",
            "in": "path",
            "name": "token",
            "required": true,
            "schema": {
              "description": "Токен публичной ссылки интерфейса",
              "type": "string"
            }
          },
          {
            "description": "Реестр, записи которого доступны интерфейсу",
            "in": "path",
            "name": "registryTypeId",
            "required": true,
            "schema": {
              "description": "Реестр, записи которого доступны интерфейсу",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfacePublicRegistryResponse"
                }
              }
            },
            "description": "Записи реестра"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "summary": "Записи реестра для публичного интерфейса",
        "tags": [
          "interfaces:public"
        ]
      }
    },
    "/api/v1/interfaces/public/{token}/submission/pdf": {
      "get": {
        "operationId": "get_api_v1_interfaces_public_token_submission_pdf",
        "parameters": [
          {
            "description": "Токен публичной ссылки интерфейса",
            "in": "path",
            "name": "token",
            "required": true,
            "schema": {
              "description": "Токен публичной ссылки интерфейса",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/pdf": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": "PDF сгенерированного документа"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Внутренняя ошибка сервера"
          }
        },
        "summary": "PDF сгенерированного документа для текущей сессии отправки",
        "tags": [
          "interfaces:public"
        ]
      }
    },
    "/api/v1/interfaces/public/{token}/submission/status": {
      "get": {
        "operationId": "get_api_v1_interfaces_public_token_submission_status",
        "parameters": [
          {
            "description": "Токен публичной ссылки интерфейса",
            "in": "path",
            "name": "token",
            "required": true,
            "schema": {
              "description": "Токен публичной ссылки интерфейса",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfacePublicDocumentStatusResponse"
                }
              }
            },
            "description": "Статус генерации документа"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "summary": "Статус сгенерированного документа для текущей сессии отправки",
        "tags": [
          "interfaces:public"
        ]
      }
    },
    "/api/v1/interfaces/public/{token}/submit": {
      "post": {
        "operationId": "post_api_v1_interfaces_public_token_submit",
        "parameters": [
          {
            "description": "Токен публичной ссылки интерфейса",
            "in": "path",
            "name": "token",
            "required": true,
            "schema": {
              "description": "Токен публичной ссылки интерфейса",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InterfacePublicSubmitRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfacePublicSubmitResponse"
                }
              }
            },
            "description": "Отправка принята"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Конфликт с текущим состоянием ресурса"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "summary": "Отправить публичный интерфейс",
        "tags": [
          "interfaces:public"
        ]
      }
    },
    "/api/v1/interfaces/public/{token}/suggest": {
      "get": {
        "operationId": "get_api_v1_interfaces_public_token_suggest",
        "parameters": [
          {
            "description": "Токен публичной ссылки интерфейса",
            "in": "path",
            "name": "token",
            "required": true,
            "schema": {
              "description": "Токен публичной ссылки интерфейса",
              "type": "string"
            }
          },
          {
            "description": "Строка поиска",
            "in": "query",
            "name": "q",
            "required": false,
            "schema": {
              "description": "Строка поиска",
              "type": "string"
            }
          },
          {
            "description": "Максимум подсказок",
            "in": "query",
            "name": "count",
            "required": false,
            "schema": {
              "description": "Максимум подсказок",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfacePublicSuggestResponse"
                }
              }
            },
            "description": "Подсказки"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "summary": "Подсказки DaData",
        "tags": [
          "interfaces:public"
        ]
      }
    },
    "/api/v1/interfaces/public/{token}/upload": {
      "post": {
        "operationId": "post_api_v1_interfaces_public_token_upload",
        "parameters": [
          {
            "description": "Токен публичной ссылки интерфейса",
            "in": "path",
            "name": "token",
            "required": true,
            "schema": {
              "description": "Токен публичной ссылки интерфейса",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "multipart/form-data": {
              "schema": {
                "$ref": "#/components/schemas/InterfacePublicUploadRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfacePublicUploadResponse"
                }
              }
            },
            "description": "Файл загружен"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          },
          "500": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Внутренняя ошибка сервера"
          }
        },
        "summary": "Загрузить файл в публичный интерфейс",
        "tags": [
          "interfaces:public"
        ]
      }
    },
    "/api/v1/interfaces/{id}": {
      "delete": {
        "operationId": "delete_api_v1_interfaces_id",
        "parameters": [
          {
            "description": "Идентификатор интерфейса",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Идентификатор интерфейса",
              "type": "string"
            }
          },
          {
            "description": "Если объект входит в пайплайны: refuse — не удалять (409, в ответе список pipelines), detach — убрать из пайплайнов и удалить",
            "in": "query",
            "name": "onPipelines",
            "required": false,
            "schema": {
              "default": "refuse",
              "description": "Если объект входит в пайплайны: refuse — не удалять (409, в ответе список pipelines), detach — убрать из пайплайнов и удалить",
              "enum": [
                "refuse",
                "detach"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "204": {
            "description": "Интерфейс удалён"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Токен отсутствует, недействителен или истёк"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "security": [
          {
            "dpop": []
          },
          {
            "oauth2": [
              "interfaces:write"
            ]
          }
        ],
        "summary": "Удалить интерфейс",
        "tags": [
          "interfaces"
        ]
      },
      "get": {
        "operationId": "get_api_v1_interfaces_id",
        "parameters": [
          {
            "description": "Идентификатор интерфейса",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Идентификатор интерфейса",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfaceObject"
                }
              }
            },
            "description": "Интерфейс"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Токен отсутствует, недействителен или истёк"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "security": [
          {
            "dpop": []
          },
          {
            "oauth2": [
              "interfaces:read"
            ]
          }
        ],
        "summary": "Получить интерфейс",
        "tags": [
          "interfaces"
        ]
      },
      "put": {
        "operationId": "put_api_v1_interfaces_id",
        "parameters": [
          {
            "description": "Идентификатор интерфейса",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Идентификатор интерфейса",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "actions": {
                    "additionalProperties": true,
                    "description": "Настройки действий интерфейса. Вебхук задаётся полями enabled и url; секрет подписи хранится отдельно и выдаётся через /{id}/webhook/secret",
                    "type": "object"
                  },
                  "calendar": {
                    "description": "Привязка к календарю (null — отвязать)",
                    "properties": {
                      "booking": {
                        "description": "Настройки бронирования (для booking)",
                        "properties": {
                          "bufferAfterMin": {
                            "description": "Буфер после встречи в минутах",
                            "minimum": 0,
                            "type": "integer"
                          },
                          "bufferBeforeMin": {
                            "description": "Буфер до встречи в минутах",
                            "minimum": 0,
                            "type": "integer"
                          },
                          "durationMin": {
                            "description": "Длительность встречи в минутах",
                            "exclusiveMinimum": 0,
                            "type": "integer"
                          },
                          "hideTimezone": {
                            "description": "Скрыть выбор часового пояса",
                            "type": "boolean"
                          },
                          "hosts": {
                            "description": "Хосты встречи",
                            "items": {
                              "properties": {
                                "scheduleId": {
                                  "description": "Расписание доступности хоста",
                                  "type": "string"
                                },
                                "userId": {
                                  "description": "Пользователь-хост",
                                  "type": "string"
                                }
                              },
                              "required": [
                                "userId"
                              ],
                              "type": "object"
                            },
                            "type": "array"
                          },
                          "location": {
                            "description": "Место или ссылка на встречу",
                            "type": "string"
                          },
                          "minNoticeMin": {
                            "description": "Минимальное время до записи в минутах",
                            "minimum": 0,
                            "type": "integer"
                          },
                          "mode": {
                            "description": "Режим: single — один хост, round_robin — по очереди, collective — общий слот всех хостов",
                            "enum": [
                              "single",
                              "round_robin",
                              "collective"
                            ],
                            "type": "string"
                          },
                          "questions": {
                            "description": "Вопросы при записи",
                            "items": {
                              "properties": {
                                "key": {
                                  "description": "Ключ вопроса",
                                  "type": "string"
                                },
                                "label": {
                                  "description": "Текст вопроса",
                                  "type": "string"
                                },
                                "required": {
                                  "description": "Обязательность ответа",
                                  "type": "boolean"
                                },
                                "type": {
                                  "description": "Тип поля ответа",
                                  "enum": [
                                    "text",
                                    "email",
                                    "textarea"
                                  ],
                                  "type": "string"
                                }
                              },
                              "required": [
                                "key",
                                "label",
                                "type",
                                "required"
                              ],
                              "type": "object"
                            },
                            "type": "array"
                          },
                          "stepMin": {
                            "description": "Шаг сетки слотов в минутах",
                            "exclusiveMinimum": 0,
                            "type": "integer"
                          },
                          "windowDays": {
                            "description": "Горизонт записи в днях",
                            "exclusiveMinimum": 0,
                            "type": "integer"
                          }
                        },
                        "required": [
                          "mode",
                          "hosts",
                          "durationMin"
                        ],
                        "type": "object"
                      },
                      "eventId": {
                        "description": "Событие календаря (для event_participation)",
                        "type": "string"
                      },
                      "mode": {
                        "description": "Режим: event_participation — запись на событие, booking — бронирование слота",
                        "enum": [
                          "event_participation",
                          "booking"
                        ],
                        "type": "string"
                      }
                    },
                    "required": [
                      "mode"
                    ],
                    "type": [
                      "object",
                      "null"
                    ]
                  },
                  "description": {
                    "description": "Новое описание",
                    "type": "string"
                  },
                  "fields": {
                    "description": "Полный новый список полей",
                    "items": {
                      "properties": {
                        "condition": {
                          "description": "Правило видимости поля",
                          "properties": {
                            "conditions": {
                              "default": [],
                              "items": {
                                "$ref": "#/components/schemas/InterfaceCondition"
                              },
                              "type": "array"
                            },
                            "groups": {
                              "items": {
                                "$ref": "#/components/schemas/InterfaceRule"
                              },
                              "type": "array"
                            },
                            "match": {
                              "default": "all",
                              "enum": [
                                "all",
                                "any"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "dataType": {
                          "description": "Тип данных поля",
                          "type": "string"
                        },
                        "defaultValue": {
                          "description": "Значение по умолчанию"
                        },
                        "id": {
                          "description": "Идентификатор существующего поля (при обновлении)",
                          "type": "string"
                        },
                        "key": {
                          "description": "Машинный ключ поля",
                          "type": "string"
                        },
                        "name": {
                          "description": "Подпись поля в форме",
                          "type": "string"
                        },
                        "options": {
                          "additionalProperties": true,
                          "description": "Настройки поля (варианты списка и т.п.)",
                          "type": [
                            "object",
                            "null"
                          ]
                        },
                        "ordinal": {
                          "description": "Порядок поля в форме",
                          "type": "number"
                        },
                        "parent": {
                          "description": "Зависимость показа от значения другого поля",
                          "properties": {
                            "fieldKey": {
                              "description": "Ключ родительского поля",
                              "type": "string"
                            },
                            "optionValue": {
                              "description": "Значение родителя, при котором поле показывается",
                              "type": "string"
                            }
                          },
                          "required": [
                            "fieldKey",
                            "optionValue"
                          ],
                          "type": [
                            "object",
                            "null"
                          ]
                        },
                        "required": {
                          "description": "Обязательность заполнения",
                          "type": "boolean"
                        },
                        "requiredIf": {
                          "description": "Правило условной обязательности",
                          "properties": {
                            "conditions": {
                              "default": [],
                              "items": {
                                "$ref": "#/components/schemas/InterfaceCondition"
                              },
                              "type": "array"
                            },
                            "groups": {
                              "items": {
                                "$ref": "#/components/schemas/InterfaceRule"
                              },
                              "type": "array"
                            },
                            "match": {
                              "default": "all",
                              "enum": [
                                "all",
                                "any"
                              ],
                              "type": "string"
                            }
                          },
                          "type": "object"
                        },
                        "validation": {
                          "additionalProperties": true,
                          "description": "Правила валидации значения",
                          "type": [
                            "object",
                            "null"
                          ]
                        },
                        "visible": {
                          "description": "Показывать ли поле",
                          "type": "boolean"
                        }
                      },
                      "required": [
                        "key",
                        "name",
                        "dataType",
                        "ordinal"
                      ],
                      "type": "object"
                    },
                    "type": "array"
                  },
                  "publicSettings": {
                    "description": "Оформление публичной страницы",
                    "properties": {
                      "firstStepName": {
                        "description": "Название первого шага",
                        "type": "string"
                      },
                      "maxWidth": {
                        "description": "Максимальная ширина формы (CSS-значение)",
                        "type": "string"
                      },
                      "showDescription": {
                        "description": "Показывать описание",
                        "type": "boolean"
                      },
                      "showTitle": {
                        "description": "Показывать заголовок",
                        "type": "boolean"
                      },
                      "submitButtonText": {
                        "description": "Текст кнопки отправки",
                        "type": "string"
                      },
                      "successMessage": {
                        "description": "Сообщение после успешной отправки",
                        "type": "string"
                      },
                      "theme": {
                        "description": "Тема оформления",
                        "enum": [
                          "light",
                          "dark"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  },
                  "registryTypeId": {
                    "description": "Реестр ответов (null — отвязать)",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "smartdocTemplateId": {
                    "description": "Шаблон документа (null — отвязать)",
                    "type": [
                      "string",
                      "null"
                    ]
                  },
                  "title": {
                    "description": "Новое название",
                    "type": "string"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfaceObject"
                }
              }
            },
            "description": "Интерфейс обновлён"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Токен отсутствует, недействителен или истёк"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "security": [
          {
            "dpop": []
          },
          {
            "oauth2": [
              "interfaces:write"
            ]
          }
        ],
        "summary": "Обновить интерфейс",
        "tags": [
          "interfaces"
        ]
      }
    },
    "/api/v1/interfaces/{id}/action": {
      "post": {
        "operationId": "post_api_v1_interfaces_id_action",
        "parameters": [
          {
            "description": "Идентификатор интерфейса",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Идентификатор интерфейса",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "action": {
                    "description": "Действие: согласовать, подписать, сгенерировать документ или отправить",
                    "enum": [
                      "approve",
                      "sign",
                      "generate",
                      "send"
                    ],
                    "type": "string"
                  },
                  "payload": {
                    "additionalProperties": true,
                    "description": "Параметры действия",
                    "type": "object"
                  }
                },
                "required": [
                  "action"
                ],
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfaceActionResponse"
                }
              }
            },
            "description": "Действие выполнено"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Токен отсутствует, недействителен или истёк"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "security": [
          {
            "dpop": []
          },
          {
            "oauth2": [
              "interfaces:write"
            ]
          }
        ],
        "summary": "Выполнить действие интерфейса (согласовать, подписать, сгенерировать, отправить)",
        "tags": [
          "interfaces"
        ]
      }
    },
    "/api/v1/interfaces/{id}/availability": {
      "get": {
        "operationId": "get_api_v1_interfaces_id_availability",
        "parameters": [
          {
            "description": "Идентификатор интерфейса",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Идентификатор интерфейса",
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "from",
            "required": true,
            "schema": {
              "type": "string"
            }
          },
          {
            "in": "query",
            "name": "to",
            "required": true,
            "schema": {
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfaceAvailability"
                }
              }
            },
            "description": "Свободные слоты"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Токен отсутствует, недействителен или истёк"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "security": [
          {
            "dpop": []
          },
          {
            "oauth2": [
              "interfaces:read"
            ]
          }
        ],
        "summary": "Свободные слоты записи (для предпросмотра)",
        "tags": [
          "interfaces"
        ]
      }
    },
    "/api/v1/interfaces/{id}/duplicate": {
      "post": {
        "operationId": "post_api_v1_interfaces_id_duplicate",
        "parameters": [
          {
            "description": "Идентификатор интерфейса",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Идентификатор интерфейса",
              "type": "string"
            }
          }
        ],
        "responses": {
          "201": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfaceObject"
                }
              }
            },
            "description": "Интерфейс создан"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Токен отсутствует, недействителен или истёк"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Ресурс не найден"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "security": [
          {
            "dpop": []
          },
          {
            "oauth2": [
              "interfaces:write"
            ]
          }
        ],
        "summary": "Дублировать интерфейс",
        "tags": [
          "interfaces"
        ]
      }
    },
    "/api/v1/interfaces/{id}/publish/{channel}": {
      "patch": {
        "operationId": "patch_api_v1_interfaces_id_publish_channel",
        "parameters": [
          {
            "description": "Идентификатор интерфейса",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Идентификатор интерфейса",
              "type": "string"
            }
          },
          {
            "description": "Канал публикации: web, embed, telegram, api",
            "in": "path",
            "name": "channel",
            "required": true,
            "schema": {
              "description": "Канал публикации: web, embed, telegram, api",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "properties": {
                  "enabled": {
                    "description": "Включить или выключить публичный доступ",
                    "type": "boolean"
                  },
                  "themeOverrides": {
                    "additionalProperties": false,
                    "description": "Оформление формы в канале; пустой объект возвращает оформление по умолчанию",
                    "properties": {
                      "maxWidth": {
                        "description": "Максимальная ширина формы в канале, например 560px",
                        "pattern": "^\\d{3,4}px$",
                        "type": "string"
                      },
                      "theme": {
                        "description": "Тема формы в канале; без значения форма следует системной теме посетителя",
                        "enum": [
                          "light",
                          "dark"
                        ],
                        "type": "string"
                      }
                    },
                    "type": "object"
                  }
                },
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfacePublishResponse"
                }
              }
            },
            "description": "Публикация обновлена"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Токен отсутствует, недействителен или истёк"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "security": [
          {
            "dpop": []
          },
          {
            "oauth2": [
              "interfaces:write"
            ]
          }
        ],
        "summary": "Обновить публикацию интерфейса в канал",
        "tags": [
          "interfaces"
        ]
      }
    },
    "/api/v1/interfaces/{id}/publish/{channel}/rotate": {
      "post": {
        "operationId": "post_api_v1_interfaces_id_publish_channel_rotate",
        "parameters": [
          {
            "description": "Идентификатор интерфейса",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Идентификатор интерфейса",
              "type": "string"
            }
          },
          {
            "description": "Канал публикации: web, embed, telegram, api",
            "in": "path",
            "name": "channel",
            "required": true,
            "schema": {
              "description": "Канал публикации: web, embed, telegram, api",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfacePublishResponse"
                }
              }
            },
            "description": "Токен перевыпущен (прежняя ссылка недействительна)"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Токен отсутствует, недействителен или истёк"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "security": [
          {
            "dpop": []
          },
          {
            "oauth2": [
              "interfaces:write"
            ]
          }
        ],
        "summary": "Сгенерировать новый токен публикации",
        "tags": [
          "interfaces"
        ]
      }
    },
    "/api/v1/interfaces/{id}/send-telegram": {
      "post": {
        "operationId": "post_api_v1_interfaces_id_send-telegram",
        "parameters": [
          {
            "description": "Идентификатор интерфейса",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Идентификатор интерфейса",
              "type": "string"
            }
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/InterfaceSendTelegramRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfaceSendTelegramResult"
                }
              }
            },
            "description": "Интерфейс отправлен в Telegram"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Токен отсутствует, недействителен или истёк"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "security": [
          {
            "dpop": []
          },
          {
            "oauth2": [
              "interfaces:write"
            ]
          }
        ],
        "summary": "Отправить интерфейс через Telegram",
        "tags": [
          "interfaces"
        ]
      }
    },
    "/api/v1/interfaces/{id}/uploads/{fileId}/download": {
      "get": {
        "operationId": "get_api_v1_interfaces_id_uploads_fileId_download",
        "parameters": [
          {
            "description": "Идентификатор интерфейса",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Идентификатор интерфейса",
              "type": "string"
            }
          },
          {
            "description": "Идентификатор загруженного файла",
            "in": "path",
            "name": "fileId",
            "required": true,
            "schema": {
              "description": "Идентификатор загруженного файла",
              "type": "string"
            }
          },
          {
            "description": "Имя файла для заголовка скачивания",
            "in": "query",
            "name": "name",
            "required": false,
            "schema": {
              "description": "Имя файла для заголовка скачивания",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/octet-stream": {
                "schema": {
                  "format": "binary",
                  "type": "string"
                }
              }
            },
            "description": "Содержимое файла"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Токен отсутствует, недействителен или истёк"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "404": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Ресурс не найден"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "security": [
          {
            "dpop": []
          },
          {
            "oauth2": [
              "interfaces:read"
            ]
          }
        ],
        "summary": "Скачать загруженный файл",
        "tags": [
          "interfaces"
        ]
      }
    },
    "/api/v1/interfaces/{id}/webhook/secret": {
      "get": {
        "description": "Возвращает действующий секрет, которым подписываются доставки. Секрет хранится в зашифрованном виде и не входит в настройки интерфейса. Доступно тем, кто может редактировать интерфейс.",
        "operationId": "get_api_v1_interfaces_id_webhook_secret",
        "parameters": [
          {
            "description": "Идентификатор интерфейса",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Идентификатор интерфейса",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfaceWebhookSecret"
                }
              }
            },
            "description": "Действующий секрет"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Токен отсутствует, недействителен или истёк"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Конфликт с текущим состоянием ресурса"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "security": [
          {
            "dpop": []
          },
          {
            "oauth2": [
              "interfaces:write"
            ]
          }
        ],
        "summary": "Получить секрет подписи вебхука",
        "tags": [
          "interfaces"
        ]
      },
      "post": {
        "description": "Выпускает новый секрет. Прежний перестаёт действовать сразу, следующие доставки подписываются новым.",
        "operationId": "post_api_v1_interfaces_id_webhook_secret",
        "parameters": [
          {
            "description": "Идентификатор интерфейса",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Идентификатор интерфейса",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfaceWebhookSecret"
                }
              }
            },
            "description": "Новый секрет"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Токен отсутствует, недействителен или истёк"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Конфликт с текущим состоянием ресурса"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "security": [
          {
            "dpop": []
          },
          {
            "oauth2": [
              "interfaces:write"
            ]
          }
        ],
        "summary": "Перевыпустить секрет подписи вебхука",
        "tags": [
          "interfaces"
        ]
      }
    },
    "/api/v1/interfaces/{id}/webhook/test": {
      "post": {
        "description": "Отправляет на адрес вебхука ответ с тестовыми данными и полем test: true. Заголовки и подпись такие же, как у настоящих доставок.",
        "operationId": "post_api_v1_interfaces_id_webhook_test",
        "parameters": [
          {
            "description": "Идентификатор интерфейса",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "description": "Идентификатор интерфейса",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/InterfaceWebhookTestResult"
                }
              }
            },
            "description": "Результат доставки"
          },
          "400": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Некорректный запрос: не прошла валидация параметров или тела"
          },
          "401": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Токен отсутствует, недействителен или истёк"
          },
          "403": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Недостаточно прав или scope"
          },
          "409": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Конфликт с текущим состоянием ресурса"
          },
          "429": {
            "content": {
              "application/problem+json": {
                "schema": {
                  "$ref": "#/components/schemas/ProblemDetails"
                }
              }
            },
            "description": "Превышен лимит запросов, повторите через Retry-After секунд"
          }
        },
        "security": [
          {
            "dpop": []
          },
          {
            "oauth2": [
              "interfaces:write"
            ]
          }
        ],
        "summary": "Отправить тестовый ответ на вебхук",
        "tags": [
          "interfaces"
        ]
      }
    }
  },
  "servers": [
    {
      "description": "Публичный API LegalStack",
      "url": "https://api.legalstack.ru"
    }
  ],
  "tags": [
    {
      "description": "Формы для сбора данных.",
      "name": "interfaces",
      "x-displayName": "Управление интерфейсами"
    },
    {
      "description": "Программный доступ к интерфейсам (через API-токен).",
      "name": "interfaces:api",
      "x-displayName": "Доступ по API-токену"
    },
    {
      "description": "Публичные интерфейсы по токену.",
      "name": "interfaces:public",
      "x-displayName": "Публичный доступ"
    }
  ],
  "webhooks": {}
}
