Перейти к документации
API

Список людей

Все, кого перечисляет страница «Контакты» в приложении: сохранённые контакты и каждый адрес, встреченный в почте как отправитель или получатель самого нового письма цепочки, с тем, сколько цепочек у каждого общих с ящиком, и временем последнего письма. Человек, который встречался в почте и сохранён, это одна строка. Постраничный вывод по ключу: `limit` до 100, по умолчанию 25, а `nextCursor` возвращается как `cursor`, пока `hasMore` равно true.

GETapi.openemail.uk/contacts/people

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

GET /contacts/people

Все, кого перечисляет страница «Контакты» в приложении: сохранённые контакты и каждый адрес, встреченный в почте как отправитель или получатель самого нового письма цепочки, с тем, сколько цепочек у каждого общих с ящиком, и временем последнего письма. Человек, который встречался в почте и сохранён, это одна строка. Постраничный вывод по ключу: limit до 100, по умолчанию 25, а nextCursor возвращается как cursor, пока hasMore равно true.

Пример

Требуется contacts:read. Адреса из почты включаются только тогда, когда у ключа есть и threads:read.

curl
curl "$OE/contacts/people?sort=threads&limit=25" -H "$AUTH"
Ответ
{  "object": "list",  "data": [    {      "object": "person",      "email": "[email protected]",      "displayEmail": "[email protected]",      "name": "Ada Lovelace",      "saved": true,      "source": "manual",      "notes": "Met at the engine demo",      "photoUrl": null,      "threads": 42,      "lastAt": "2026-09-22T16:04:11.000Z",      "createdAt": "2026-08-01T10:00:00.000Z",      "updatedAt": "2026-09-01T09:12:00.000Z",      "blockedBy": null    },    {      "object": "person",      "email": "[email protected]",      "displayEmail": "[email protected]",      "name": "Shop",      "saved": false,      "source": null,      "notes": null,      "photoUrl": null,      "threads": 17,      "lastAt": "2026-09-21T07:30:00.000Z",      "createdAt": null,      "updatedAt": null,      "blockedBy": { "rule": "shop.example", "list": "blockedDomains" }    }  ],  "hasMore": true,  "nextCursor": "WyIyMDI2LTA5LTIxVDA3OjMwOjAwLjAwMFoiLDE3XQ",  "seen": true}

sort бывает recent (по умолчанию), сначала самая новая почта, а сохранённые контакты без почты после неё, name, по имени или, если его нет, по адресу без учёта регистра, или threads, сначала те, у кого больше цепочек. При равенстве решает адрес, так что обход никогда не повторяет и не пропускает строку.

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

Без threads:read строки состоят только из сохранённых контактов, а seen равно false, потому что остальное читается из почты. Удалённые адреса и собственные адреса ящика никогда не перечисляются. Курсор непрозрачен: возвращайте его с теми же sort, q и blocked, а курсор, который не выдавался, даёт 400 invalid_cursor.