{
  "openapi": "3.0.2",
  "info": {
    "title": "api/doki/common",
    "version": "1.0.0"
  },
  "servers": [
    {
      "url": "/"
    },
    {
      "url": "https://api.ati.su"
    }
  ],
  "security": [
    {
      "BearerAuth": []
    }
  ],
  "paths": {
    "/gw/tokugawa/v1/common_api/documents/search": {
      "post": {
        "tags": [
          "3.0",
          "integrators"
        ],
        "summary": "Ищет документы по всем системам (ЭДО) для текущего пользователя.",
        "description": "Поиск по всем документам (ЭДО и rohrpost) для текущего пользователя.",
        "operationId": "search_documents_v1_common_api_documents_search_post",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "title": "Search Object",
                "allOf": [
                  {
                    "$ref": "#/components/schemas/DocumentsListSearchParamsSchema"
                  }
                ],
                "description": "Параметры поиска документов: лимит, курсор пагинации и набор фильтров. Если тело не передано, используются значения по умолчанию (первая страница без фильтров).",
                "default": {
                  "limit": 50,
                  "filters": {
                    "is_deleted": false,
                    "is_archived": false,
                    "is_template": false
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/DocumentsListResponseSchema"
                }
              }
            }
          },
          "422": {
            "description": "Ошибка валидации параметров или тела запроса.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponseSchema"
                }
              }
            }
          }
        },
        "security": [
          {
            "api-secret": []
          },
          {
            "user-id": []
          },
          {
            "client-name": []
          },
          {
            "SidCookieAuth": []
          },
          {
            "DidCookieAuth": []
          }
        ]
      }
    },
    "/gw/tokugawa/v1/common_api/documents/{action}": {
      "post": {
        "tags": [
          "3.0",
          "integrators"
        ],
        "summary": "Массово перемещает документы в корзину/архив или восстанавливает их.",
        "description": "Универсальный метод для перемещения документов в корзину или архив,\nа также для восстановления их из корзины и архива\nПытается обеспечить консистентность данных в rohrpost.\nAction может принимать значения \"trash\", \"archive\", \"restore_from_trash\" или \"restore_from_archive\"\n\n:param action: действие, которое нужно выполнить для пачки документов\n:param to_be_updated_message_ids: id Messages, которые нужно удалить или архивировать\n:param current_user: авторизованный пользователь\n:return: id Messages, которые не удалось удалить",
        "operationId": "update_documents_v1_common_api_documents__action__post",
        "parameters": [
          {
            "description": "Действие над документами. Допустимые значения: `trash` — перенести в корзину, `archive` — перенести в архив, `restore_from_trash` — восстановить из корзины, `restore_from_archive` — восстановить из архива.",
            "required": true,
            "schema": {
              "title": "Action",
              "type": "string",
              "description": "Действие над документами. Допустимые значения: `trash` — перенести в корзину, `archive` — перенести в архив, `restore_from_trash` — восстановить из корзины, `restore_from_archive` — восстановить из архива.",
              "example": "archive"
            },
            "name": "action",
            "in": "path"
          }
        ],
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "title": "To Be Updated Message Ids",
                "type": "array",
                "items": {
                  "type": "string"
                },
                "description": "Список идентификаторов документов (`Message.id`), над которыми нужно выполнить `action`.",
                "example": [
                  "5f3c8e2a1b2c3d4e5f6a7b8c",
                  "5f3c8e2a1b2c3d4e5f6a7b8d"
                ]
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "description": "Successful Response",
            "content": {
              "application/json": {
                "schema": {
                  "title": "Response Update Documents V1 Common Api Documents  Action  Post",
                  "type": "array",
                  "items": {
                    "type": "string"
                  }
                }
              }
            }
          },
          "422": {
            "description": "Ошибка валидации параметров или тела запроса.",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ValidationErrorResponseSchema"
                }
              }
            }
          }
        },
        "security": [
          {
            "api-secret": []
          },
          {
            "user-id": []
          },
          {
            "client-name": []
          },
          {
            "SidCookieAuth": []
          },
          {
            "DidCookieAuth": []
          }
        ]
      }
    }
  },
  "components": {
    "schemas": {
      "DocumentsListSearchParamsSchema": {
        "title": "DocumentsListSearchParamsSchema",
        "type": "object",
        "properties": {
          "limit": {
            "title": "Limit",
            "maximum": 100,
            "minimum": 1,
            "type": "integer",
            "description": "Максимальное количество документов в ответе (от 1 до 100).",
            "default": 50,
            "example": 50
          },
          "updated_at__lt": {
            "title": "Updated At  Lt",
            "type": "string",
            "description": "Курсор пагинации: возвращаются документы, у которых `updated_at` строго меньше указанного значения (UTC).",
            "format": "date-time",
            "example": "2024-01-15T10:30:00Z"
          },
          "filters": {
            "title": "Filters",
            "allOf": [
              {
                "$ref": "#/components/schemas/DocumentsListFiltersSchema"
              }
            ],
            "description": "Набор фильтров, применяемых к списку документов."
          }
        },
        "description": "Параметры запроса для поиска документов."
      },
      "DocumentsListResponseSchema": {
        "title": "DocumentsListResponseSchema",
        "required": [
          "total",
          "total_remaining",
          "result"
        ],
        "type": "object",
        "properties": {
          "total": {
            "title": "Total",
            "type": "integer",
            "description": "Общее количество документов, удовлетворяющих фильтрам.",
            "example": 1250
          },
          "total_remaining": {
            "title": "Total Remaining",
            "type": "integer",
            "description": "Количество документов, оставшихся после текущей страницы (для пагинации по курсору `updated_at__lt`). 0 означает, что это последняя страница.",
            "example": 1200
          },
          "result": {
            "title": "Result",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/DocumentsListResultSchema"
            },
            "description": "Список документов на текущей странице.",
            "example": [
              {
                "id": "5f3c8e2a1b2c3d4e5f6a7b8c",
                "is_riak": false,
                "direction": "outgoing",
                "number": "А-12345",
                "date": "2024-01-15",
                "type": "УПД. Счет-фактура",
                "status": "signed",
                "is_read": true,
                "updated_at": "2024-01-15T10:30:00.000000",
                "contragent": {
                  "ati_code": "123456",
                  "name": "ООО «Ромашка»"
                },
                "comments": {
                  "count": 0
                },
                "flags": [],
                "signs": {},
                "file_extension": "xml"
              }
            ]
          }
        },
        "description": "Ответ на запрос поиска документов (страница результатов с пагинацией)."
      },
      "ValidationErrorResponseSchema": {
        "title": "ValidationErrorResponseSchema",
        "required": [
          "error",
          "detail",
          "extra"
        ],
        "type": "object",
        "properties": {
          "error": {
            "title": "Error",
            "type": "boolean",
            "description": "Признак ошибки (всегда `true` в ответах 422).",
            "example": true
          },
          "detail": {
            "title": "Detail",
            "allOf": [
              {
                "$ref": "#/components/schemas/ValidationErrorDetailSchema"
              }
            ],
            "description": "Код и человекочитаемое описание ошибки."
          },
          "extra": {
            "title": "Extra",
            "type": "array",
            "items": {
              "$ref": "#/components/schemas/ValidationErrorItemSchema"
            },
            "description": "Список ошибок валидации pydantic по каждому невалидному полю.",
            "example": [
              {
                "loc": [
                  "body",
                  "to_be_updated_message_ids",
                  0
                ],
                "msg": "field required",
                "type": "value_error.missing"
              }
            ]
          }
        },
        "description": "Ответ 422 Unprocessable Entity: тело запроса не прошло валидацию."
      },
      "DocumentsListFiltersSchema": {
        "title": "DocumentsListFiltersSchema",
        "type": "object",
        "properties": {
          "query": {
            "title": "Query",
            "type": "string",
            "description": "Строка поиска по документам.",
            "example": "накладная"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/app__db__schemas__messages__AllTypesSchema"
              }
            ],
            "description": "Тип документа."
          },
          "status": {
            "allOf": [
              {
                "$ref": "#/components/schemas/FrontStateSchema"
              }
            ],
            "description": "Статус документа."
          },
          "contragent_ati_code": {
            "title": "Contragent Ati Code",
            "pattern": "^\\d+$",
            "type": "string",
            "description": "ATI-код контрагента.",
            "example": "123456"
          },
          "edo_user": {
            "title": "Edo User",
            "type": "string",
            "description": "ID участника ЭДО(текущего пользователя)",
            "example": "2BM-1234567890-1234567890-201205280001234567890"
          },
          "number": {
            "title": "Number",
            "type": "string",
            "description": "Номер документа",
            "example": "А-12345"
          },
          "date_from": {
            "title": "Date From",
            "type": "string",
            "description": "Начальная дата документа для фильтрации.",
            "format": "date",
            "example": "2024-01-01"
          },
          "date_to": {
            "title": "Date To",
            "type": "string",
            "description": "Конечная дата документа для фильтрации.",
            "format": "date",
            "example": "2024-01-31"
          },
          "direction": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DirectionSchema"
              }
            ],
            "description": "Направление документа: входящий или исходящий."
          },
          "is_deleted": {
            "title": "Is Deleted",
            "type": "boolean",
            "description": "Признак поиска документов в корзине.",
            "default": false,
            "example": false
          },
          "is_archived": {
            "title": "Is Archived",
            "type": "boolean",
            "description": "Признак поиска архивных документов.",
            "default": false,
            "example": false
          },
          "is_template": {
            "title": "Is Template",
            "type": "boolean",
            "description": "Признак поиска шаблонов документов.",
            "default": false,
            "example": false
          }
        }
      },
      "DocumentsListResultSchema": {
        "title": "DocumentsListResultSchema",
        "required": [
          "id",
          "direction",
          "type",
          "status",
          "is_read",
          "updated_at",
          "comments",
          "flags",
          "signs"
        ],
        "type": "object",
        "properties": {
          "id": {
            "title": "Id",
            "type": "string",
            "description": "Идентификатор документа.",
            "example": "5f3c8e2a1b2c3d4e5f6a7b8c"
          },
          "is_riak": {
            "title": "Is Riak",
            "type": "boolean",
            "description": "Признак документа из riak-хранилища.",
            "example": false
          },
          "direction": {
            "allOf": [
              {
                "$ref": "#/components/schemas/DirectionSchema"
              }
            ],
            "description": "Направление документа относительно текущего пользователя."
          },
          "number": {
            "title": "Number",
            "type": "string",
            "description": "Номер документа.",
            "example": "А-12345"
          },
          "date": {
            "title": "Date",
            "type": "string",
            "description": "Дата документа.",
            "format": "date",
            "example": "2024-01-15"
          },
          "type": {
            "allOf": [
              {
                "$ref": "#/components/schemas/AllNamesSchema"
              }
            ],
            "description": "Тип документа."
          },
          "status": {
            "title": "Status",
            "type": "string",
            "description": "Текущий статус документа.",
            "example": "signed"
          },
          "is_read": {
            "title": "Is Read",
            "type": "boolean",
            "description": "Признак прочтения документа пользователем.",
            "example": true
          },
          "updated_at": {
            "title": "Updated At",
            "type": "string",
            "description": "Дата и время последнего обновления документа (UTC).",
            "format": "date-time",
            "example": "2024-01-15T10:30:00.000000"
          },
          "contragent": {
            "title": "Contragent",
            "allOf": [
              {
                "$ref": "#/components/schemas/DocumentsListContragentSchema"
              }
            ],
            "description": "Информация о контрагенте документа."
          },
          "comments": {
            "title": "Comments",
            "allOf": [
              {
                "$ref": "#/components/schemas/DocumentsListCommentsSchema"
              }
            ],
            "description": "Информация о комментариях к документу."
          },
          "flags": {
            "title": "Flags",
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Список внутренних флагов документа.",
            "example": []
          },
          "highlight": {
            "allOf": [
              {
                "$ref": "#/components/schemas/HighlightOptions"
              }
            ],
            "description": "Маркер подсветки документа в выдаче."
          },
          "signs": {
            "title": "Signs",
            "allOf": [
              {
                "$ref": "#/components/schemas/SignsInfoSchema"
              }
            ],
            "description": "Информация о подписях документа."
          },
          "template_name": {
            "title": "Template Name",
            "type": "string",
            "description": "Название шаблона, по которому создан документ.",
            "example": "Типовой договор оказания услуг"
          },
          "roaming_provider_id": {
            "title": "Roaming Provider Id",
            "type": "string",
            "description": "Идентификатор роуминг-провайдера.",
            "example": "2BM"
          },
          "file_extension": {
            "title": "File Extension",
            "type": "string",
            "description": "Расширение файла документа.",
            "example": "xml"
          }
        },
        "description": "Документ в списке результатов поиска."
      },
      "ValidationErrorDetailSchema": {
        "title": "ValidationErrorDetailSchema",
        "required": [
          "code",
          "description"
        ],
        "type": "object",
        "properties": {
          "code": {
            "title": "Code",
            "type": "string",
            "description": "Код ошибки валидации.",
            "example": "unprocessable_entity"
          },
          "description": {
            "title": "Description",
            "type": "string",
            "description": "Человекочитаемое описание ошибки.",
            "example": "Ошибка обработки тела запроса."
          }
        },
        "description": "Код и человекочитаемое описание ошибки валидации."
      },
      "ValidationErrorItemSchema": {
        "title": "ValidationErrorItemSchema",
        "required": [
          "loc",
          "msg",
          "type"
        ],
        "type": "object",
        "properties": {
          "loc": {
            "title": "Loc",
            "type": "array",
            "items": {
              "type": "string"
            },
            "description": "Путь до невалидного поля в структуре запроса.",
            "example": [
              "body",
              "to_be_updated_message_ids",
              0
            ]
          },
          "msg": {
            "title": "Msg",
            "type": "string",
            "description": "Человекочитаемое сообщение об ошибке.",
            "example": "field required"
          },
          "type": {
            "title": "Type",
            "type": "string",
            "description": "Тип ошибки валидации pydantic.",
            "example": "value_error.missing"
          }
        },
        "description": "Описание одной ошибки валидации pydantic."
      },
      "app__db__schemas__messages__AllTypesSchema": {
        "title": "AllTypesSchema",
        "enum": [
          "СЧФ",
          "СЧФДОППродавец",
          "СЧФДОППокупатель",
          "ДОППродавец",
          "ДОППокупатель",
          "КорСЧФ",
          "КорСЧФДИСПродавец",
          "КорСЧФДИСПокупатель",
          "КорДИСПродавец",
          "КорДИСПокупатель",
          "ДокументОПередачеРезультатовРаботИсполнитель",
          "ДокументОПередачеРезультатовРаботЗаказчик",
          "ДокументОПередачеТоваровПриТорговыхОперацияхПродавец",
          "ДокументОПередачеТоваровПриТорговыхОперацияхПокупатель",
          "ИзвещениеОПолучении",
          "ПодтверждениеОператораОбОтправке",
          "ПодтверждениеОператораОПолучении",
          "УведомлениеОбУточнении",
          "ЗапросНаАннулирование",
          "Неформализованный",
          "ПодписьПолучателяДляНеформализованного",
          "Запрос",
          "Разрыв",
          "заказ",
          "заявка (к договору)",
          "заявка",
          "поручение экспедитору",
          "договор",
          "акт",
          "заказ услуги по оформлению пропусков в г. москва",
          "договор-заявка",
          "заказ (договор-заявка)",
          "заказ (табличный вид)",
          "заявка к договору (табличный вид)",
          "счет",
          "счет-фактура",
          "УПД (счет-фактура)",
          "уведомление об отказе от исполнения",
          "уведомление о расторжении в двустороннем порядке",
          "акт о срыве",
          "уведомление о составлении акта о непредъявлении груза для перевозки",
          "уведомление о составлении акта о непредъявлении транспортного средства под погрузку",
          "доверенность",
          "информационное письмо",
          "другой",
          "акт сверки",
          "доп. соглашение (к договору)",
          "накладная",
          "товарная накладная",
          "транспортная накладная",
          "товарно-транспортная накладная",
          "поздравительная открытка",
          "unknown"
        ],
        "type": "string",
        "description": "An enumeration."
      },
      "FrontStateSchema": {
        "title": "FrontStateSchema",
        "enum": [
          "AWAITING_CONFIRMATION_SIGN",
          "WAITING_FOR_REVOKE",
          "CORRECTION_REQUESTED",
          "AWAITING_DECISION",
          "REVOKED",
          "EDO_DONE",
          "APPROVED",
          "DECLINED",
          "SIGNED",
          "NEW_EDITION",
          "CANCELLED",
          "DRAFT"
        ],
        "type": "string",
        "description": "An enumeration."
      },
      "DirectionSchema": {
        "title": "DirectionSchema",
        "enum": [
          "incoming",
          "outgoing"
        ],
        "type": "string",
        "description": "An enumeration."
      },
      "AllNamesSchema": {
        "title": "AllNamesSchema",
        "enum": [
          "УПД. Счет-фактура",
          "УПД. Счет-фактура и акт",
          "УПД. Акт",
          "УКД. Корректировочный счет-фактура",
          "УКД. Корректировочный счет-фактура и акт",
          "УКД. Корректировочный акт",
          "Акт сдачи-приёмки",
          "Товарная накладная. Торг-12",
          "Неформализованный",
          "заказ",
          "заявка (к договору)",
          "заявка",
          "поручение экспедитору",
          "договор",
          "акт",
          "заказ услуги по оформлению пропусков в г. москва",
          "договор-заявка",
          "заказ (договор-заявка)",
          "заказ (табличный вид)",
          "заявка к договору (табличный вид)",
          "счет",
          "счет-фактура",
          "УПД (счет-фактура)",
          "уведомление об отказе от исполнения",
          "уведомление о расторжении в двустороннем порядке",
          "акт о срыве",
          "уведомление о составлении акта о непредъявлении груза для перевозки",
          "уведомление о составлении акта о непредъявлении транспортного средства под погрузку",
          "доверенность",
          "информационное письмо",
          "другой",
          "акт сверки",
          "доп. соглашение (к договору)",
          "накладная",
          "товарная накладная",
          "транспортная накладная",
          "товарно-транспортная накладная",
          "поздравительная открытка",
          "unknown"
        ],
        "type": "string",
        "description": "An enumeration."
      },
      "DocumentsListContragentSchema": {
        "title": "DocumentsListContragentSchema",
        "required": [
          "ati_code",
          "name"
        ],
        "type": "object",
        "properties": {
          "ati_code": {
            "title": "Ati Code",
            "type": "string",
            "description": "ATI-код контрагента.",
            "example": "123456"
          },
          "name": {
            "title": "Name",
            "type": "string",
            "description": "Наименование контрагента.",
            "example": "ООО «Ромашка»"
          }
        },
        "description": "Контрагент документа."
      },
      "DocumentsListCommentsSchema": {
        "title": "DocumentsListCommentsSchema",
        "required": [
          "count"
        ],
        "type": "object",
        "properties": {
          "count": {
            "title": "Count",
            "type": "integer",
            "description": "Общее количество комментариев к документу.",
            "example": 3
          },
          "tail": {
            "title": "Tail",
            "allOf": [
              {
                "$ref": "#/components/schemas/DocumentsListCommentTailSchema"
              }
            ],
            "description": "Последний комментарий к документу."
          }
        },
        "description": "Сводка по комментариям к документу."
      },
      "HighlightOptions": {
        "title": "HighlightOptions",
        "enum": [
          "failure",
          "success",
          null
        ],
        "description": "An enumeration."
      },
      "SignsInfoSchema": {
        "title": "SignsInfoSchema",
        "type": "object",
        "properties": {
          "user": {
            "title": "User",
            "allOf": [
              {
                "$ref": "#/components/schemas/ShortSignerInfoSchema"
              }
            ],
            "description": "Информация о подписи пользователя."
          },
          "contragent": {
            "title": "Contragent",
            "allOf": [
              {
                "$ref": "#/components/schemas/ShortSignerInfoSchema"
              }
            ],
            "description": "Информация о подписи контрагента."
          }
        },
        "description": "Информация о подписях пользователя и контрагента."
      },
      "DocumentsListCommentTailSchema": {
        "title": "DocumentsListCommentTailSchema",
        "required": [
          "name",
          "text",
          "timestamp"
        ],
        "type": "object",
        "properties": {
          "name": {
            "title": "Name",
            "type": "string",
            "description": "Имя автора комментария.",
            "example": "Иван Иванов"
          },
          "text": {
            "title": "Text",
            "type": "string",
            "description": "Текст комментария.",
            "example": "Документ подписан"
          },
          "timestamp": {
            "title": "Timestamp",
            "type": "string",
            "description": "Дата и время создания комментария (UTC).",
            "format": "date-time",
            "example": "2024-01-15T10:30:00.000000"
          }
        },
        "description": "Последний комментарий к документу."
      },
      "ShortSignerInfoSchema": {
        "title": "ShortSignerInfoSchema",
        "required": [
          "title",
          "valid_from",
          "valid_until"
        ],
        "type": "object",
        "properties": {
          "title": {
            "title": "Title",
            "type": "string",
            "description": "ФИО подписанта.",
            "example": "Иванов И.И."
          },
          "valid_from": {
            "title": "Valid From",
            "type": "string",
            "description": "Дата начала действия сертификата.",
            "example": "2024-01-01"
          },
          "valid_until": {
            "title": "Valid Until",
            "type": "string",
            "description": "Дата окончания действия сертификата.",
            "example": "2025-01-01"
          }
        },
        "description": "Краткая информация о подписанте документа."
      }
    },
    "securitySchemes": {
      "BearerAuth": {
        "type": "http",
        "scheme": "bearer",
        "bearerFormat": "JWT",
        "description": "Authorization: Bearer {authorizationToken}"
      }
    }
  }
}