# API: Входящие/Исходящие


## `GET` `/api/incoming?from=xxx&until=yyy&status=new&includeDetails=false` - получение списка входящих документов и пакетов документов {#incoming-list}
- `from=xxx` - с какого момента следует искать входящие, значение следует указывать в миллисекундах с UNIX Epoch;
- `until=yyy` - до какого момента следует искать входящие, значение следует указывать в миллисекундах с UNIX Epoch;
- `status=new` - опциональный параметр, фильтрация по статусу входящего;
- `includeDetails=false` - опциональный параметр, определяет нужно ли возвращать информацию о документах и зарегистрированных под ними подписях и о пакетах документов, по умолчанию `false`.

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

Ответ:
```json
{
  "incomingTotal": 5,
  "items": []
}
```

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

Структура объекта входящего:
```json
{
  "incomingId": "identifier",
  "documentId": "document_identifier",
  "document": {},
  "packageId": "package_identifier",
  "package": {},
  "sentAt": 0,
  "sender": "BIN112233445566",
  "receiver": "IIN112233445566",
  "status": "new"
}
```

- `incomingId` - уникальный идентификатор входящего документа или пакета документов;
- `documentId` - опциональное поле, идентификатор входящего документа, присутствует в том случае, если это входящий документ;
- `document` - опциональное поле, объект с данными о документе, присутствует в том случае, если это входящий документ и был указан `includeDetails=true`, структура объекта соответствует ответу [`GET` `/api/{id}?lastSignId=X` - получение данных о зарегистрированном документе](/en/support/developers/api-documents/index.md#document-info);
- `packageId` - опциональное поле, идентификатор входящего пакета документов, присутствует в том случае, если это входящий пакет документов;
- `package` - опциональное поле, объект с данными о пакете документов, присутствует в том случае, если это входящий пакет документов и был указан `includeDetails=true`, структура объекта соответствует ответу [`GET` `/api/package/{packageId}` - получение данных о зарегистрированном пакете документов](/en/support/developers/api-packages/index.md#package-info);
- `sentAt` - дата отправки документа или пакета документов в миллисекундах с UNIX Epoch;
- `sender` - ИИН (с префиксом `"IIN"`) или БИН (с префиксом `"BIN"`) отправителя;
- `receiver` - ИИН (с префиксом `"IIN"`) или БИН (с префиксом `"BIN"`) получателя;
- `status` - текущий статус входящего, может принимать одно из значений:
  - `"new"`
  - `"denied"`
  - `"accepted"`.


***
## `GET` `/api/incoming/{incomingId}?includeDetails=false` - получение информации о входящем документе или пакете документов {#incoming-info}
- `{incomingId}` - идентификатор входящего;
- `includeDetails=false` - опциональный параметр, определяет нужно ли возвращать информацию о документах и зарегистрированных под ними подписях и о пакетах документов, по умолчанию `false`.

Ответ:
```json
{
  "incomingId": "identifier",
  "documentId": "document_identifier",
  "document": {},
  "packageId": "package_identifier",
  "package": {},
  "sentAt": 0,
  "sender": "BIN112233445566",
  "receiver": "IIN112233445566",
  "status": "new",
  "comments": []
}
```

- `incomingId` - уникальный идентификатор входящего документа или пакета документов;
- `documentId` - опциональное поле, идентификатор входящего документа, присутствует в том случае, если это входящий документ;
- `document` - опциональное поле, объект с данными о документе, присутствует в том случае, если это входящий документ и был указан `includeDetails=true`, структура объекта соответствует ответу [`GET` `/api/{id}?lastSignId=X` - получение данных о зарегистрированном документе](/en/support/developers/api-documents/index.md#document-info);
- `packageId` - опциональное поле, идентификатор входящего пакета документов, присутствует в том случае, если это входящий пакет документов;
- `package` - опциональное поле, объект с данными о пакете документов, присутствует в том случае, если это входящий пакет документов и был указан `includeDetails=true`, структура объекта соответствует ответу [`GET` `/api/package/{packageId}` - получение данных о зарегистрированном пакете документов](/en/support/developers/api-packages/index.md#package-info);
- `sentAt` - дата отправки документа или пакета документов в миллисекундах с UNIX Epoch;
- `sender` - ИИН (с префиксом `"IIN"`) или БИН (с префиксом `"BIN"`) отправителя;
- `receiver` - ИИН (с префиксом `"IIN"`) или БИН (с префиксом `"BIN"`) получателя;
- `status` - текущий статус входящего, может принимать одно из значений:
  - `"new"`
  - `"denied"`
  - `"accepted"`
- `comments` - массив объектов комментариев к данному входящему.

Структура объекта комментария:
```json
{
  "storedAt": 0,
  "author": "IIN112233445566",
  "status": "accepted",
  "value": "комментарий"
}
```

- `storedAt` - дата добавления комментария или изменения статуса входящего в миллисекундах с UNIX Epoch;
- `author` - ИИН (с префиксом `"IIN"`) или БИН (с префиксом `"BIN"`) автора комментария;
- `status` - опциональное поле, новый статус входящего, присутствует только в том случае, если статус был изменен;
- `value` - опциональное поле, строка комментария.


***
## `POST` `/api/incoming/{incomingId}/comment` - обновление статуса или добавление комментария к входящему документу или пакету документов {#incoming-update}
- `{incomingId}` - идентификатор входящего.

Запрос (`Content-Type` необходимо установить в `application/json`):
```json
{
  "status": "accepted",
  "comment": "комментарий"
}
```

- `status` - опциональное поле, новый статус входящего, следует указывать для изменения статуса;
- `comment` - опциональное поле, комментарий.

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

- `incomingId` - идентификатор входящего.


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

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

Ответ:
```json
{
  "outgoingTotal": 5,
  "items": []
}
```

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

Структура объекта исходящего:
```json
{
  "outgoingId": "identifier",
  "documentId": "document_identifier",
  "document": {},
  "packageId": "package_identifier",
  "package": {},
  "sentAt": 0,
  "sender": "BIN112233445566",
  "receiver": "IIN112233445566",
  "status": "new"
}
```

- `outgoingId` - уникальный идентификатор исходящего документа или пакета документов;
- `documentId` - опциональное поле, идентификатор исходящего документа, присутствует в том случае, если это исходящий документ;
- `document` - опциональное поле, объект с данными о документе, присутствует в том случае, если это исходящий документ и был указан `includeDetails=true`, структура объекта соответствует ответу [`GET` `/api/{id}?lastSignId=X` - получение данных о зарегистрированном документе](/en/support/developers/api-documents/index.md#document-info);
- `packageId` - опциональное поле, идентификатор исходящего пакета документов, присутствует в том случае, если это исходящий пакет документов;
- `package` - опциональное поле, объект с данными о пакете документов, присутствует в том случае, если это исходящий пакет документов и был указан `includeDetails=true`, структура объекта соответствует ответу [`GET` `/api/package/{packageId}` - получение данных о зарегистрированном пакете документов](/en/support/developers/api-packages/index.md#package-info);
- `sentAt` - дата отправки документа или пакета документов в миллисекундах с UNIX Epoch;
- `sender` - ИИН (с префиксом `"IIN"`) или БИН (с префиксом `"BIN"`) отправителя;
- `receiver` - ИИН (с префиксом `"IIN"`) или БИН (с префиксом `"BIN"`) получателя;
- `status` - текущий статус исходящего, может принимать одно из значений:
  - `"new"`
  - `"denied"`
  - `"accepted"`.


***
## `GET` `/api/outgoing/{outgoingId}?includeDetails=false` - получение информации об исходящем документе или пакете документов {#outgoing-info}
- `{outgoingId}` - идентификатор исходящего;
- `includeDetails=false` - опциональный параметр, определяет нужно ли возвращать информацию о документах и зарегистрированных под ними подписях и о пакетах документов, по умолчанию `false`.

Ответ:
```json
{
  "outgoingId": "identifier",
  "documentId": "document_identifier",
  "document": {},
  "packageId": "package_identifier",
  "package": {},
  "sentAt": 0,
  "sender": "BIN112233445566",
  "receiver": "IIN112233445566",
  "status": "new",
  "comments": []
}
```

- `outgoingId` - уникальный идентификатор исходящего документа или пакета документов;
- `documentId` - опциональное поле, идентификатор исходящего документа, присутствует в том случае, если это исходящий документ;
- `document` - опциональное поле, объект с данными о документе, присутствует в том случае, если это исходящий документ и был указан `includeDetails=true`, структура объекта соответствует ответу [`GET` `/api/{id}?lastSignId=X` - получение данных о зарегистрированном документе](/en/support/developers/api-documents/index.md#document-info);
- `packageId` - опциональное поле, идентификатор исходящего пакета документов, присутствует в том случае, если это исходящий пакет документов;
- `package` - опциональное поле, объект с данными о пакете документов, присутствует в том случае, если это исходящий пакет документов и был указан `includeDetails=true`, структура объекта соответствует ответу [`GET` `/api/package/{packageId}` - получение данных о зарегистрированном пакете документов](/en/support/developers/api-packages/index.md#package-info);
- `sentAt` - дата отправки документа или пакета документов в миллисекундах с UNIX Epoch;
- `sender` - ИИН (с префиксом `"IIN"`) или БИН (с префиксом `"BIN"`) отправителя;
- `receiver` - ИИН (с префиксом `"IIN"`) или БИН (с префиксом `"BIN"`) получателя;
- `status` - текущий статус исходящего, может принимать одно из значений:
  - `"new"`
  - `"denied"`
  - `"accepted"`
- `comments` - массив объектов комментариев к данному исходящему.

Структура объекта комментария:
```json
{
  "storedAt": 0,
  "author": "IIN112233445566",
  "status": "accepted",
  "value": "комментарий"
}
```

- `storedAt` - дата добавления комментария или изменения статуса исходящего в миллисекундах с UNIX Epoch;
- `author` - ИИН (с префиксом `"IIN"`) или БИН (с префиксом `"BIN"`) автора комментария;
- `status` - опциональное поле, новый статус исходящего, присутствует только в том случае, если статус был изменен;
- `value` - опциональное поле, строка комментария.


***
## `POST` `/api/outgoing/{outgoingId}/comment` - обновление статуса или добавление комментария к исходящему документу или пакету документов {#outgoing-update}
- `{outgoingId}` - идентификатор исходящего.

Запрос (`Content-Type` необходимо установить в `application/json`):
```json
{
  "comment": "комментарий"
}
```

- `comment` - комментарий.

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

- `outgoingId` - идентификатор исходящего.

