# API: работа с пакетами документов

## `POST` `/api/package` - регистрация пакета документов {#package-registration}
**Важно!** Регистрация пакета документов не будет завершена до тех пор пока для всех документов пакета не будет выполнена [`POST` `/api/{id}/data` - фиксация значений хешей документа](/support/developers/api-documents/index.md#document-hash).

Пакет документов - это набор документов для которых можно задавать одинаковые настройки, а так же:
- отправлять одно уведомление по электронной почте с запросом подписания всего пакета и ссылкой на страницу подписания этого пакета;
- требовать атомарности подписания, то есть запрещать подписывать только один документ из пакета, в этом случае контрагент сможет подписать только все документы пакета одновременно.

В рамках регистрации пакета будет зарегистрирован сам пакет и документы этого пакета, то есть будут зарезервированы идентификатор пакета и идентификаторы документов.

Запрос (`Content-Type` необходимо установить в `application/json`):
```json
{
  "title": "package title",
  "description": "package description",
  "emailNotifications": {
    "to": ["user@example.com","other@example.com"],
    "doNotAttachDocuments": false,
    "language": "ru"
  },
  "settings": {
    "private": false,
    "packageAccess": [],
    "packageSettings": [],
    "signWholePackage": false
  },
  "documentsSettings": {},
  "documents": [
    {"title": "some title 1", "description": "some description 1"},
    {"title": "some title 2", "description": "some description 2"},
    {"title": "some title N", "description": "some description N"}
  ],
  "send": {
    "to":"IIN112233445566",
    "comment":"комментарий для получателя документа"
  }
}
```

- `title` - название пакета документов;
- `description` - описание пакета документа;
- `emailNotifications` - опциональный параметр, объект настроек для отправки [уведомлений по электронной почте](/support/developers/notifications/index.md#notifications-email) о подписании пакета документов с полями:
  - `to` - массив адресов электронной почты;
  - `doNotAttachDocuments` - опциональное поле, позволяет отправлять уведомления без прикрепленных документов, по умолчанию `false`;
  - `language` - опциональное поле, позволяет задать язык уведомления, поддерживаются строки `"ru", "kk", "en"` и их комбинации через `"/"`, к примеру `"kk/en"`;
- `settings` - опциональный параметр, объект настроек пакета документов, описание приведено в [`POST` `/api/package/{packageId}/settings` - изменение настроек пакета документов](/support/developers/api-packages/index.md#package-settings);
- `documentsSettings` - опциональный параметр, объект настроек документов, эти настройки будут применены к документам пакета, на сам пакет они не влияют, описание приведено в [`POST` `/api/{id}/settings` - изменение настроек документа](/support/developers/api-documents/index.md#document-settings);
- `documents` - массив объектов описывающих документы пакета;
- `send` - опциональное поле, параметры отправки пакета документов контрагенту во Входящие:
  - `to` - строка, ИИН (с префиксом `"IIN"`) или БИН (с префиксом `"BIN"`) получателя пакета документов;
  - `comment` - опциональное поле, строка, комментарий к отправленному пакету документов.

Ответ:
```json
{
  "packageId": "xxx",
  "documentsIds": ["id1", "id2", "idN"]
}
```

- `packageId` - уникальный идентификатор зарегистрированного пакета документов;
- `documentsIds` - массив уникальных идентификаторов зарегистрированных документов в этом пакете.


***
## `GET` `/api/package/{packageId}` - получение данных о зарегистрированном пакете документов {#package-info}
- `{packageId}` - идентификатор пакета документов.

Ответ:
```json
{
  "packageId": "xxx",
  "title": "some title",
  "description": "some description",
  "storedAt": 1568809427182,
  "registrator": {
    "businessId":"BIN012345678901",
    "certificate":"base64_encoded_mtls_certificate"
  },
  "emailNotifications": {
    "to": ["user@example.com","other@example.com"],
    "doNotAttachDocuments": false,
    "language": "ru"
  },
  "signatureEmailNotifications": [
    {
      "signIds": [1, 2, 3],
      "doNotAttachDocuments": false,
      "to": ["user@example.com","otherUser@example.com"],
      "language": "ru"
    },
    {
      "signIds": [4, 5, 6],
      "doNotAttachDocuments": true,
      "to": ["3@example.com","4@example.com"]
    }
  ],
  "settings": {
    "private": false,
    "packageAccess": [],
    "packageSettings": [],
    "signWholePackage": false
  },
  "documentsSettings": {},
  "documentsIds": ["id1", "id2", "idN"],
  "incomingIds": ["incoming_identifier1", "incoming_identifier2"],
  "outgoingIds": ["outgoing_identifier1", "outgoing_identifier2"]
}
```

- `packageId` - идентификатор пакета документов;
- `title` - название пакета документов;
- `description` - описание пакета документа;
- `storedAt` - время сохранения пакета (миллисекунд с UNIX Epoch);
- `registrator` - информация об информационной системе зарегистрировавшей пакет документов (БИН и mTLS сертификат в *base64*);
- `emailNotifications` - информация о том, кому была запрошена отправка [уведомлений по электронной почте](/support/developers/notifications/index.md#notifications-email) при регистрации пакета документов;
- `signatureEmailNotifications` - массив объектов, информация о том, кому была запрошена отправка [уведомлений по электронной почте](/support/developers/notifications/index.md#notifications-email) при регистрации подписей;
- `settings` - объект настроек пакета документов, описание приведено в [`POST` `/api/package/{packageId}/settings` - изменение настроек пакета документов](/support/developers/api-packages/index.md#package-settings);
- `documentsSettings` - объект настроек документов, эти настройки будут применены к документам пакета, на сам пакет они не влияют, описание приведено в [`POST` `/api/{id}/settings` - изменение настроек документа](/support/developers/api-documents/index.md#document-settings);
- `documentsIds` - массив идентификаторов документов в этом пакете;
- `incomingIds` - опциональное поле, массив идентификаторов входящих, присутствует только в том случае, если этот пакет документов присутствует у кого-то в Исходящих, значение зависит от аутентификации и контроля доступа:
  - массив будет содержать один или более идентификаторов в том случае, если пользователь или система аутентифицированны и присутствуют в получателях пакета документов;
  - иначе пустой массив;
- `outgoingIds` - опциональное поле, массив идентификаторов исходящих, присутствует только в том случае, если этот пакет документов присутствует у кого-то во Входящих, значение зависит от аутентификации и контроля доступа:
  - массив будет содержать один или более идентификаторов в том случае, если пользователь или система аутентифицированны и присутствуют в отправителях пакета документов;
  - иначе пустой массив.


***
## `POST` `/api/package/{packageId}` - добавление подписей к документам пакета {#package-add-signatures}
- `{packageId}` - идентификатор пакета документов.

Количество и порядок передаваемых на регистрацию подписей должно быть идентично количеству документов в пакете, подписи будут зарегистрированы под соответствующими документами, то есть первая подпись под первым документом пакета, вторая под вторым и так далее.

В том случае, если регистрация одной любой подписи невозможна, API вернет ошибку и не зарегистрирует ни одну из переданных подписей.

В том случае, если для пакета установлен `signWholePackage`, то подписи к документам пакета можно добавлять только через этот API, добавлять подписи под отдельные документы через [`POST` `/api/{id}` - добавление подписи к документу](/support/developers/api-documents/index.md#document-add-signature) не получится.

Запрос (`Content-Type` необходимо установить в `application/json`):
```json
{
  "signatures": [
    {
      "signType":"cms",
      "signature":"signB641"
    },
    ...
    {
      "signType":"xml",
      "signature":"<xml></xml>"
    }
  ],
  "signatureEmailNotifications": {
    "to": ["user@example.com","other@example.com"],
    "doNotAttachDocuments": false,
    "language": "ru"
  }
}
```

- `signatures` - массив подписей, структура описана в [`POST` `/api/{id}` - добавление подписи к документу](/support/developers/api-documents/index.md#document-add-signature);
- `signatureEmailNotifications` - опциональный параметр, объект настроек для отправки [уведомлений по электронной почте](/support/developers/notifications/index.md#notifications-email) о регистрации новых подписей под документами пакета с полями:
  - `to` - массив адресов электронной почты;
  - `doNotAttachDocuments` - опциональное поле, позволяет отправлять уведомления без прикрепленных документов, по умолчанию `false`;
  - `language` - опциональное поле, позволяет задать язык уведомления, поддерживаются строки `"ru", "kk", "en"` и их комбинации через `"/"`, к примеру `"kk/en"`.

Ответ:
```json
{
  "packageId": "xxx",
  "registrationResults": [{}]
}
```

- `packageId` - идентификатор пакета документов;
- `registrationResults` - массив объектов с результатами регистрации подписей, структура описана в [`POST` `/api/{id}` - добавление подписи к документу](/support/developers/api-documents/index.md#document-add-signature).


***
## `POST` `/api/package/{packageId}/notify` - отправка уведомлений о пакете документов {#package-notify}
- `{packageId}` - идентификатор пакета документов.

На данный момент поддерживается отправка уведомлений только по электронной почте.

Запрос (`Content-Type` необходимо установить в `application/json`):
```json
{
  "emailNotifications": {
    "to": ["user@example.com","other@example.com"],
    "doNotAttachDocuments": false,
    "language": "ru"
  }
}
```

- `emailNotifications` - параметры отправки email уведомлений:
  - `to` - массив адресов электронной почты;
  - `doNotAttachDocuments` - опциональное поле, позволяет отправлять уведомления без прикрепленных документов, по умолчанию `false`;
  - `language` - опциональное поле, позволяет задать язык уведомления, поддерживаются строки `"ru", "kk", "en"` и их комбинации через `"/"`, к примеру `"kk/en"`.

Ответ:
```json
{
  "packageId": "lQsqLBaS4nQAIIMm",
  "emailNotifications": {
    "attached": true,
  }
}
```

- `packageId` - идентификатор пакета документов;
- `emailNotifications` - результат отправки уведомлений:
  - `attached` - флаг указывающий были ли прикреплены документы к отправленным уведомлениям.


***
## `POST` `/api/package/{packageId}/settings` - изменение настроек пакета документов {#package-settings}
- `{packageId}` - идентификатор пакета документов.

Отправка нового объекта с настройками пакета документов. Все поля объекта опциональны, то есть можно указывать только те настройки, которые должны отличаться от настроек по умолчанию.

Все текущие настройки пакета документов будут перезаписаны. В том случае, если в передаваемом новом объекте настроек какая-то настройка отсутствует, будет использовано значение по умолчанию, а не старое значение.

Запрос (`Content-Type` необходимо установить в `application/json`):
```json
{
  "private": false,
  "packageAccess": [
    { "iin": "IIN112233445566" },
    { "iin": "IIN665544332211", "bin": "BIN112233445566" },
    { "bin": "BIN112233445566" }
  ],
  "packageSettings": [
    { "iin": "IIN112233445566" },
    { "iin": "IIN665544332211", "bin": "BIN112233445566" },
    { "bin": "BIN112233445566" }
  ],
  "signWholePackage": false
}
```

- `private` - опциональное поле, определяет ограничен ли доступ к пакету документов (см. [Аутентификация и контроль доступа](/support/developers/auth-and-access-control/index.md)), либо он является общедоступным пакетом документов, по умолчанию `false`;
- `packageAccess` - опциональное поле, позволяет задавать дополнительные правила предоставления доступа к информации о пакете документов (но не к документам в пакете), подробности про контроль доступа [тут](/support/developers/auth-and-access-control/index.md#access-control);
- `packageSettings` - опциональное поле, позволяет задавать дополнительные правила предоставления доступа к изменению настроек пакета документов (но не изменения настроек документов пакета), подробности про контроль доступа [тут](/support/developers/auth-and-access-control/index.md#access-control);
- `signWholePackage` - блокирует возможность добавлять подписи под документы пакета через [`POST` `/api/{id}` - добавление подписи к документу](/support/developers/api-documents/index.md#document-add-signature), можно добавлять только через [`POST` `/api/package/{packageId}` - добавление подписей к документам пакета](/support/developers/api-packages/index.md#package-add-signatures), то есть подписывать можно только все документы пакета одной операцией, по умолчанию `false`.

Дополнительные правила предоставления доступа к информации о пакете документов (но не к документам в пакете) `packageAccess` - это объекты со следующей структурой:
```json
{
  "iin": "IIN112233445566",
  "bin": "BIN665544332211"
}
```

- `iin` - опциональное поле, ИИН пользователя которому необходимо предоставить доступ;
- `bin` - опциональное поле, БИН организации которой необходимо предоставить доступ.

Дополнительные правила предоставления доступа к изменению настроек пакета документов (но не изменения настроек документов пакета) `packageSettings` - это объекты со следующей структурой:
```json
{
  "iin": "IIN112233445566",
  "bin": "BIN665544332211"
}
```

- `iin` - опциональное поле, ИИН пользователя которому необходимо предоставить доступ;
- `bin` - опциональное поле, БИН организации которой необходимо предоставить доступ.

Ответ:
```json
{
  "packageId": "lQsqLBaS4nQAIIMm"
}
```

- `packageId` - идентификатор пакета документов.


***
## `GET` `/api/package/{packageId}/settingsAudit?lastEventId=X` - аудит изменений настроек пакета документов {#package-settings-audit}
- `{packageId}` - идентификатор пакета документов;
- `lastEventId=X` - опционально, последний идентификатор записи после которого нужно возвращать записи.

Возвращает журнал изменений настроек пакета документов.

Ответ:
```json
{
  "packageId": "lQsqLBaS4nQAIIMm",
  "eventsTotal": 3,
  "events": []
}
```

- `packageId` - идентификатор пакета документов, должен быть идентичен переданному идентификатору;
- `eventsTotal` - количество изменений зарегистрированных в системе;
- `events` - массив объектов описывающих изменения.

Структура объектов описывающих изменения:
```json
{
  "eventId": 1,
  "original": {},
  "modified": {},
  "modifiedBy": "IIN123456789",
  "modifiedByDigest": "XXXXXXXXXXXXXXX",
  "modifiedAt": 1586167317737
}
```

- `eventId` - идентификатор события;
- `original` - настройки до изменения;
- `modified` - настройки после изменения;
- `modifiedBy` - кем были произведены изменения, ИИН;
- `modifiedByDigest` - хеш mTLS сертификата в том случае, если изменение было выполнено от имени информационной системы;
- `modifiedAt` - момент изменения в миллисекундах с UNIX Epoch.


***
## `POST` `/api/package/{packageId}/egovQr` - регистрация процедуры упрощенного подписания пакета документов через QR или диплинки {#package-sign-via-egov-qr}
- `{packageId}` - идентификатор пакета документов.

Позволяет инициировать подписание через eGov mobile/business всего пакета документов, а так же выполнить регистрацию полученных подписей под данным пакетом.

**Важно:** Все документы пакета должны находиться в архиве или временном хранилище, так как они будут отправлены в eGov mobile/business нашим сервисом.

В случае успешного выполнения под каждый документом пакета будет зарегистрирована новая подпись, статус выполнения процедуры можно отслеживать с помощью [`GET` `/api/package/{packageId}/egovOperation/{operationId}` - получение статуса процедуры подписания пакета документов](/support/developers/api-packages/index.md#package-signing-status), отменить процедуру можно с помощью [`DELETE` `/api/package/{packageId}/egovOperation/{operationId}` - отмена процедуры подписания пакета документов](/support/developers/api-packages/index.md#package-signing-cancel).

Запрос (`Content-Type` необходимо установить в `application/json`):
```json
{
  "description": "Анкета и договор на подпись",
  "meta": [
    [
      {
        "name": "Анкета номер",
        "value": "1234"
      }
    ],
    [],
    [
      {
        "name": "Номер договора",
        "value": "1234"
      },
      {
        "name": "Контрагент",
        "value": "ТОО Контрагент"
      }
    ]
  ],
  "signatureEmailNotifications": {
    "to": ["user1@example.com","other1@example.com"],
    "doNotAttachDocuments": false,
    "language": "ru"
  },
  "whenDone": {
    "backUrl": "https://some-site.kz/view/docid"
  }
}
```

- `description` - описание регистрируемой процедуры подписания, текст будет отображен в eGov mobile/business;
- `meta` - опциональный массив массивов метаданных подписываемого пакета документов, если поле указано, то количество элементов в нем должно быть равно количеству документов в пакете, в том случае, если для какого-то документа метаданные указывать не нужно, следует указать пустой массив;
- `signatureEmailNotifications` - опциональный параметр, объект настроек для отправки [уведомлений по электронной почте](/support/developers/notifications/index.md#notifications-email) о регистрации новых подписей под документами пакета с полями:
  - `to` - массив адресов электронной почты;
  - `doNotAttachDocuments` - опциональное поле, позволяет отправлять уведомления без прикрепленных документов, по умолчанию `false`;
  - `language` - опциональное поле, позволяет задать язык уведомления, поддерживаются строки `"ru", "kk", "en"` и их комбинации через `"/"`, к примеру `"kk/en"`;
- `whenDone` - опциональное поле, объект позволяющий передать в eGov mobile/business настройки поведения после завершения подписания:
  - `backUrl` - опциональное поле, URL для возврата в вызывающее приложение или на веб сайт, может быть как в обычном формате `"https://some-site.kz/something"`, так и в формате зарегистрированных префиксов приложений, к примеру для Telegram может быть `"tg://path?query"` https://core.telegram.org/api/links.

Ответ:
```json
{
  "operationId": "12345",
  "expireAt": 1668758024082,
  "qrCode": "XXXXX",
  "eGovMobileLaunchLink": "https://...",
  "eGovBusinessLaunchLink": "https://..."
}
```

- `operationId` - строка, идентификатор зарегистрированной процедуры подписания;
- `expireAt` - момент истечения срока действия процедуры подписания в миллисекундах с UNIX Epoch;
- `qrCode` - строка, закодированное в *base64* изображение в формате *PNG* с закодированным QR кодом для приложения eGov mobile/business;
- `eGovMobileLaunchLink` - диплинк для запуска eGov mobile на том же устройстве;
- `eGovBusinessLaunchLink` - диплинк для запуска eGov Business на том же устройстве.


***
## `GET` `/api/package/{packageId}/egovOperation/{operationId}` - получение статуса процедуры подписания пакета документов {#package-signing-status}
- `{packageId}` - идентификатор пакета документа;
- `{operationId}` - идентификатор процедуры подписания.

Позволяет отслеживать статус процедур подписания зарегистрированных через [`POST` `/api/package/{packageId}/egovQr` - регистрация процедуры упрощенного подписания пакета документов через QR или диплинки](/support/developers/api-packages/index.md#package-sign-via-egov-qr).

Ответ:
```json
{
  "operationId": "12345",
  "status": "meta",
  "createdAt": 1668758020082,
  "expireAt": 1668758024082,
  "description": "Анкета и договор на подпись",
  "meta": [
    [
      {
        "name": "Анкета номер",
        "value": "1234"
      }
    ],
    [],
    [
      {
        "name": "Номер договора",
        "value": "1234"
      },
      {
        "name": "Контрагент",
        "value": "ТОО Контрагент"
      }
    ]
  ],
  "signIds": [17, 18, 19],
  "signatureEmailNotifications": {
    "to": ["user@example.com","other@example.com"],
    "doNotAttachDocuments": false,
    "language": "ru"
  },
  "errors": {
    "egov": "ошибка обмена данными",
    "sigex": "ошибка получения метки времени"
  }
}
```

- `operationId` - строка, идентификатор зарегистрированной процедуры подписания;
- `status` - строка, текущий статус процедуры, может принимать одно из следующих значений:
  - `"new"` - новая операция, никаких действий еще не выполнялось;
  - `"meta"` - пользователь сканировал QR код или кликнул на диплинк;
  - `"data"` - приложение eGov mobile/business скачало документ для подписания;
  - `"done"` - подписание выполнено успешно;
  - `"fail"` - подписание не удалось;
- `createdAt` - момент регистрации процедуры подписания в миллисекундах с UNIX Epoch;
- `expireAt` - момент истечения срока действия процедуры подписания в миллисекундах с UNIX Epoch;
- `description` - описание процедуры подписания установленное при регистрации;
- `meta` - массив метаданных указанный при регистрации;
- `signIds` - идентификаторы подписей, зарегистрированных в случае успешного завершения процедуры подписания;
- `signatureEmailNotifications` - опциональный параметр, объект настроек для отправки [уведомлений по электронной почте](/support/developers/notifications/index.md#notifications-email) о регистрации новых подписей под документами пакета с полями:
  - `to` - массив адресов электронной почты;
  - `doNotAttachDocuments` - опциональное поле, позволяет отправлять уведомления без прикрепленных документов, по умолчанию `false`;
  - `language` - опциональное поле, позволяет задать язык уведомления, поддерживаются строки `"ru", "kk", "en"` и их комбинации через `"/"`, к примеру `"kk/en"`;
- `errors` - опциональный объект, содержащий информацию об ошибках, возникших при выполнении процедуры:
  - `egov` - информация об ошибке полученной в процессе взаимодействия с eGov mobile/business;
  - `sigex` - информация об ошибке полученной при обработке подписи.


***
## `DELETE` `/api/package/{packageId}/egovOperation/{operationId}` - отмена процедуры подписания пакета документов {#package-signing-cancel}
- `{packageId}` - идентификатор пакета документов;
- `{operationId}` - идентификатор процедуры подписания.

Позволяет отменять процедуры подписания зарегистрированные через [`POST` `/api/package/{packageId}/egovQr` - регистрация процедуры упрощенного подписания пакета документов через QR или диплинки](/support/developers/api-packages/index.md#package-sign-via-egov-qr).

Ответ:
```json
{
  "operationId": "12345"
}
```

- `operationId` - строка, идентификатор зарегистрированной процедуры подписания.


***
## `POST` `/api/package/{packageId}/send` - отправка пакета документов контрагенту во Входящие {#package-send-to-inbox}
- `{packageId}` - идентификатор пакета документов.

Позволяет отправить уже зарегистрированный пакет документов контрагенту, как физическому лицу по ИИН, так и юридическому лицу по БИН. В случае успешной отправки пакету документов будет присвоен уникальный идентификатор исходящего, этот идентификатор в дальнейшем можно будет использовать для получения информации об обработке пакета документов контрагентом с помощью [`GET` `/api/outgoing/{outgoingId}` - получение информации об исходящем документе или пакете документов](/support/developers/api-incoming-outgoing/index.md#outgoing-info).

Пакет документов поступит контрагенту во Входящие, он получит об этом соответствующие [уведомления](/support/developers/notifications/index.md) и сможет увидеть его в [`GET` `/api/incoming?from=xxx&until=yyy` - получение списка входящих документов и пакетов документов](/support/developers/api-incoming-outgoing/index.md#incoming-list).

Запрос (`Content-Type` необходимо установить в `application/json`):
```json
{
  "to": "IIN112233445566",
  "comment": "Направляем анкету и договор"
}
```
- `to` - строка, ИИН (с префиксом `"IIN"`) или БИН (с префиксом `"BIN"`) получателя пакета документов;
- `comment` - опциональное поле, строка, комментарий к отправленному пакету документов.

Ответ:
```json
{
  "outgoingId": "identifier"
}
```

- `outgoingId` - уникальный идентификатор исходящего пакета документов.


***
## `GET` `/api/package?from=xxx&until=yyy&organization=true` - перечисление пакетов документов аутентифицированного пользователя или системы {#package-search}
- `from=xxx` - с какого момента следует искать пакеты документов, значение следует указывать в миллисекундах с UNIX Epoch;
- `until=yyy` - до какого момента следует искать пакеты документов, значение следует указывать в миллисекундах с UNIX Epoch;
- `organization=true` - опциональный параметр, определяет следует ли искать пакеты документов физического лица или организации, по умолчанию `false`.

Ответ сервиса зависит от значения `organization`:
- `false` - в этом случае сервис вернет пакеты документов относящиеся к аутентифицированному пользователю:
  - при аутентификации с использованием сертификата физического лица сервис перечислит пакеты документов в правилах доступа к которым присутствует ИИН данного физического лица;
  - при аутентификации с использованием сертификата сотрудника организации (юридического лица) сервис перечислит пакеты документов в правилах доступа к которым присутствует комбинация ИИН (сотрудника) и БИН (юридического лица);
  - при аутентификации информационной системой по двустороннему mTLS сервис не перечислит ничего;
- `true` - в этом случае сервис вернет пакеты документов относящиеся к организации:
  - если пользователь прошел аутентификацию с помощью сертификата представителя организации (юридического лица) и у него в сертификате присутствуют полномочия указанные в настройках организации, либо в настройках организации указан ИИН данного сотрудника, либо сотрудник является первым руководителем, то сервис перечислит пакеты документов относящиеся к этой организации;
  - при аутентификации информационной системой по двустороннему mTLS и если для этой информационной системы в настройках организации предоставлены права перечисления пакетов документов организации, то перечислит пакеты документов относящиеся к этой организации.

К пакетам документов организации относятся такие пакеты документов, в правилах доступа к которым присутствует БИН данной организации, а так же пакеты документов зарегистрированные информационными системами этой организации выполнившими аутентификацию по двустороннему mTLS.

Сервис будет возвращать документы сортированными в порядке убывания даты их регистрации, то есть сначала самые новые.

Следует учитывать то, что данный метод возвращает ограниченное количество пакетов документов за один вызов, алгоритм получения всех пакетов документов:
1. получить первый блок пакетов документов установив желаемые `from=xxx` и `until=yyy`;
1. получить следующий блок пакетов документов установив `until=storedAt` из последнего элемента массива пакетов документов;
1. повторять до тех пор пока сервис не вернет пустой массив.

Ответ:
```json
{
  "packagesTotal": 3,
  "packages": []
}
```

- `packagesTotal` - количество пакетов документов удовлетворяющих запросу;
- `packages` - массив объектов пакетов документов.

Структура объекта данных пакета документов:
```json
{
  "packageId": "lQsqLBaS4nQAIIMm",
  "title": "package title",
  "description": "package description",
  "storedAt": 11111111111,
  "documentsIds": ["lQsqLBaS4nQAIIMm", "lQsqLBaS4nQAIIMm"],
  "registrator": {
    "businessId":"BIN012345678901",
    "certificate":"base64_encoded_mtls_certificate"
  }
}
```

- `packageId` - идентификатор пакета документов;
- `title` - заголовок пакета документов;
- `description` - описание пакета документов;
- `storedAt` - момент регистрации пакета документов в системе (миллисекунд с UNIX Epoch);
- `documentsIds` - массив идентификаторов документов входящих в данный пакет;
- `registrator` - опциональное поле, информация об информационной системе, зарегистрировавшей документ (БИН и mTLS сертификат в *base64*), присутствует только в том случае, если регистрация (либо предрегистрация) документа была выполнена аутентифицированной информационной системой.

