Типы данных
Результаты, data
для опросов типов data
по API, будут возвращать информацию в одном из форматов, описанных ниже.
Результат полезной нагрузки
Атрибуты
Корневая структура данных JSON имеет следующие атрибуты.
название | тип | описание |
---|---|---|
data | список объектов данных | Данные получены из источника. |
metadata | объект метаданных | Метаданные, связанные с data . |
Метаданные
Атрибуты
название | тип | описание |
---|---|---|
count | инт | Количество объектов в data . |
файл
Тип данных file
виден во всем API, так как это ссылка на файл, который можно загрузить из API посредством опроса типа files
.
Атрибуты
название | тип | описание |
---|---|---|
file_id | нить | Идентификатор, используемый для запроса файла из API. Значение гарантированно будет уникальным только в пределах текущего источника. |
type | строка, всегда file | Спецификатор типа данных. |
name | нить | Имя файла без расширения. |
extension | строка, необязательно | Расширение файла, если доступно. |
mime_type | строка, необязательно | MIME-тип файла, если он доступен. |
size | интервал, необязательный | Размер файла, если он доступен. |
checksum | строка, необязательно | Контрольная сумма md5, если она доступна. |
пример
{ "file_id": "abc123", "type": "file", "name": "IMG_0003", "extension": "jpg", "mime_type": "image/jpeg", "size": 2505426, }
Образ
Расширяет файл .
название | тип | описание |
---|---|---|
file_id | нить | Идентификатор, используемый для запроса файла из API. Значение гарантированно будет уникальным только в пределах текущего источника. |
type | нить | Всегда image . |
filename | нить | Оригинальное имя файла. Расширение в этом имени файла должно соответствовать расширению файла. |
file_path | нить | Путь к файлу относительно других файлов в его службе. Например, путь внутри резервной копии. |
width | интервал, необязательный | Ширина файла, если она доступна. |
height | интервал, необязательный | Высота файла, если она доступна. |
пример
{ "file_id": "abc123", "type": "image", "filename": "IMG_0003.JPG", "file_path": "Media/DCIM/100APPLE/IMG_0003.JPG", "name": "IMG_0003", "extension": "jpg", "mime_type": "image/jpeg", "width": 3000, "height": 2002, "size": 2505426, }
видео
Расширяет файл .
название | тип | описание |
---|---|---|
file_id | нить | Идентификатор, используемый для запроса файла из API. Значение гарантированно будет уникальным только в пределах текущего источника. |
type | нить | Всегда video . |
filename | нить | Оригинальное имя файла. Расширение в этом имени файла должно соответствовать расширению файла. |
file_path | нить | Путь к файлу относительно других файлов в его службе. Например, путь внутри резервной копии. |
width | интервал, необязательный | Ширина файла, если она доступна. |
height | интервал, необязательный | Высота файла, если она доступна. |
duration | интервал, необязательный | Продолжительность видео, если доступно. |
пример
{ "file_id": "abc123", "type": "video", "filename": "IMG_0009.MOV", "file_path": "Media/DCIM/100APPLE/IMG_0009.MOV", "name": "IMG_0009", "extension": "mov", "mime_type": "video/quicktime", "width": 1920, "height": 1080, "size": 5421796, "duration": 9.135623 }
видео
Расширяет файл .
название | тип | описание |
---|---|---|
file_id | нить | Идентификатор, используемый для запроса файла из API. Значение гарантированно будет уникальным только в пределах текущего источника. |
type | нить | Всегда audio . |
filename | нить | Оригинальное имя файла. Расширение в этом имени файла должно соответствовать расширению файла. |
file_path | нить | Путь к файлу относительно других файлов в его службе. Например, путь внутри резервной копии. |
transcription | строка, необязательно | Текстовая транскрипция аудиосообщения, если таковая имеется. |
пример
{ "id": "abc123", "type": "audio", "filename": "Audio Message.caf", "file_path": "Library/SMS/Attachments/.../Audio Message.caf", "transcription": "Test voice message", }
Аудио транскрипции
Транскрипция аудиосообщений, если она доступна в данных резервной копии, возвращается как часть audio
. Это доступно для аудиосообщений, созданных в сообщениях iOS, начиная с iOS 17.
Сообщение
Атрибуты
название | тип | описание |
---|---|---|
id | нить | Уникальный идентификатор сообщения. Используйте это для дедупликации возвращаемых данных, если это необходимо. |
data_type | строка, всегда message | Спецификатор типа данных. |
type | строка, необязательно | Используется, когда служба обмена сообщениями обрабатывает различные типы сообщений. Например, SMS и iMessage в случае сообщений iOS. |
handle | нить | Вторая сторона разговора, часто уникальный идентификатор приложения для обмена сообщениями. |
handle_name | строка, необязательно | Если возможно, отображаемое имя дескриптора. |
contact | вложенный контакт, необязательный | Объект, ссылающийся на контакт iOS второй стороны разговора. |
conversation_id | нить | Идентификатор группировки сообщений по разговору. |
from_me | логический | Было ли сообщение отправлено или получено. |
user | строка, необязательно | Пользователь приложения для обмена сообщениями в случае, когда несколько пользователей/учетных записей могут использовать приложение для обмена сообщениями с устройства. |
text | нить | Тело сообщения. |
edits | список правок, по желанию | Список изменений содержимого сообщений для приложений, в которых редактирование сообщений поддерживается, а история сохраняется в резервных копиях. |
attachments | список файлов, необязательный | Массив значений file_id , которые можно использовать с методом download_file . Если сообщение не содержит вложения, возвращается пустой массив. |
group | строка, необязательно | Название группы на момент отправки сообщения . |
group_id | строка, необязательно | Уникальный идентификатор группы в контексте этого приложения. Это может быть не целое число, и, если оно присутствует, предоставляет только информацию в дополнение к conversation_id . |
group_handles | список строк, необязательный | Это значение равно null для сообщений от человека к человеку, а в групповых беседах представляет собой массив строк, представляющих номера телефонов или адреса электронной почты iMessage. |
group_contacts | строка, необязательно | Массив объектов, ссылающихся на контакты iOS в группе. |
deleted | логический, необязательный | Логическое значение, указывающее, было ли сообщение удалено. |
marked_unread | логическое значение, необязательно | Пометил ли пользователь сообщение как непрочитанное, если оно доступно. |
date | дата и время | Когда сообщение было отправлено или получено. |
date_read | дата-время, необязательно | Когда сообщение было впервые прочитано, если доступно. |
date_edited | дата/время, необязательно | Когда сообщение редактировалось в последний раз, если применимо. |
date_deleted | дата/время, необязательно | Когда сообщение было удалено, если применимо. |
пример
{ "id": "a1b2c3d4", "data_type": "message", "type": "SMS", "handle": "reincubate", "handle_name": "Reincubate", "conversation_id": "w6x7y8z9", "from_me": false, "text": "Hi from London!", "edits": [{ "text": "Hi!", "date": "2023-06-27T10:20:00.000000Z" }, { "text": "Hi from London!", "date": "2023-06-27T10:21:00.000000Z" }], "attachments": [], "group_handles": [ "+441234567890", "renate@reincubate.com" ], "deleted": false, "date": "2023-06-27T10:20:00.000000Z", "date_edited": "2023-06-27T10:21:00.000000Z" }
Дескрипторы сообщений и разговоры
Извлекатели данных API поддерживают исторически широкий диапазон исходных данных и будут пытаться перестроить данные, которые со временем стали фрагментированы из-за обновлений приложений и iOS. Поскольку приложения для обмена сообщениями добавляют новые функции, они не всегда заботятся о том, чтобы базовые данные были идеально перенесены в новую структуру. Поэтому API должен выводить определенную информацию, чтобы возвращать согласованные данные.
Один из таких случаев относится к дескрипторам и информации о беседе, возвращаемой из приложений для обмена сообщениями, и, в частности, из модуля данных ios_messages.messages
. API заполнит conversation_id
либо числовым идентификатором, если такая информация существует или может быть выведена, либо откатом, чтобы использовать дескриптор стороннего поставщика для установки conversation_id
. Поэтому рекомендуется использовать это поле для связывания сообщений из одного чата.
Отредактированные и удаленные сообщения
Информация об отредактированных и удаленных сообщениях доступна для ios_messages.messages
для резервных копий, сделанных с устройств под управлением iOS 16 и более поздних версий. Ожидается, что информация об удаленных сообщениях будет доступна только тогда, когда сообщение еще можно восстановить на момент создания резервной копии, что, по словам Apple, происходит через 30–40 дней после удаления .
Для отредактированных сообщений история изменений возвращается в атрибуте edits
. Каждое редактирование включает состояние text
и время, когда редактирование было зафиксировано. text
атрибут самого сообщения всегда будет таким же, как и у окончательного редактирования.
разговор
Поток беседы.
название | тип | описание |
---|---|---|
id | нить | Идентификатор элемента. |
data_type | строка, всегда conversation | Идентификатор типа данных элемента. |
group | необязательная строка | Название группы. |
members | список contact | Участники беседы. |
контакт
атрибуты contact
название | тип | описание |
---|---|---|
id | нить | Идентификатор элемента. |
data_type | строка, всегда contact | Идентификатор типа данных элемента. |
name | необязательная строка | Полное имя контакта. |
first_name | необязательная строка | Имя контакта. |
middle_name | необязательная строка | Отчество контакта. |
last_name | необязательная строка | Фамилия контакта. |
prefix | необязательная строка | Префикс имени контакта. |
suffix | необязательная строка | Суффикс имени контакта. |
nickname | необязательная строка | Никнейм контакта. |
records | список элементов contact.record | Записи контактов, связанные с контактом. |
organisation | необязательная строка | Название организации контакта. |
department | необязательная строка | Отдел контактного лица в организации. |
jobtitle | необязательная строка | Должность контактного лица в организации. |
birthday | необязательная дата | День рождения контакта. |
атрибут contact.record
Существует 5 типов записей записей контактов: Phone
, Email
, URL
, Social
Address
и Address
. Они соответствуют номеру телефона, адресу электронной почты, URL-адресу веб-сайта, идентификатору учетной записи в социальной сети и почтовому адресу соответственно.
Первые 4 имеют одинаковые атрибуты:
название | тип | описание |
---|---|---|
type | нить | Один из: Phone , Email , URL , Social сети . |
name | необязательная строка | Метка, связанная с записью. |
value | нить | Значение записи. |
Тип записи контакта « Address
» имеет дополнительные поля адреса:
название | тип | описание |
---|---|---|
type | строка, всегда Address | Запись номера телефона. |
name | необязательная строка | Метка, связанная с номером. |
CountryCode | необязательная строка | Код страны. |
Country | необязательная строка | Название страны. |
ZIP | необязательная строка | Почтовый индекс. |
State | необязательная строка | Название штата или аббревиатура. |
City | необязательная строка | Название города. |
Municipality | необязательная строка | Название муниципалитета. |
SubLocality | необязательная строка | Название района или района. |
Street | необязательная строка | Имя адреса улицы. |
Образец данных
{ "id": "2cf6a837304d6614", "data_type": "contact", "first_name": "John", "middle_name": "'Gala'", "last_name": "Appleseed", "prefix": "Mr.", "suffix": "Jr.", "nickname": "John'o", "records": [ { "type": "Phone", "name": "MAIN", "value": "1-800-MY-APPLE" }, { "type": "Phone", "name": "UK", "value": "0800 039 1010" }, { "type": "URL", "name": "HOMEPAGE", "value": "http://www.apple.com" }, { "type": "URL", "name": "HOMEPAGE", "value": "http://www.apple.com/uk/" }, { "City": "Cupertino", "State": "CA", "ZIP": "95014", "name": "WORK", "CountryCode": "US", "Country": "United States", "Street": "1 Infinite Loop", "type": "Address", "SubLocality": null, "Municipality": null } ], "organisation": "Apple Inc.", "department": "Marketing", "jobtitle": "VP Juicing", "birthday": "1976-04-01" }
Вызов
Атрибуты
название | тип | описание |
---|---|---|
id | нить | Идентификатор элемента. |
data_type | строка, всегда call | Идентификатор типа данных элемента. |
call_type | нить | Один из: Phone , FaceTime Video FaceTime Audio . |
address | нить | Цель вызова. Это может быть номер телефона, Apple ID или другой идентификатор. |
duration | плавать | Продолжительность вызова. |
answered | логический | Был ли ответ на звонок. |
from_me | логический | Был ли звонок исходящим или входящим. |
date | дата и время | Когда был сделан звонок. |
Образец данных
{ "id": "24116c5b16b85217", "data_type": "call", "call_type": "Phone", "address": "07123456789", "duration": 5.131359, "answered": false, "from_me": true, "date": "2015-07-20 10:23:27.538011" }
Событие
атрибуты event
название | тип | описание |
---|---|---|
id | нить | Идентификатор элемента. |
data_type | строка, всегда event | Идентификатор типа данных элемента. |
unique_identifier | необязательная строка | UID элемента для дедупликации в нескольких источниках данных о событиях. |
calendar | необязательная строка | Название календаря. |
calendar_uid | необязательная строка | UID календаря. |
calendar_store | необязательная строка | Тип хранилища календаря, т. е. iCloud , по Default . |
summary | необязательная строка | Краткое описание или название события. |
description | необязательная строка | Описание события. |
start_date | необязательная дата и время | Когда событие начнется. |
end_date | необязательная дата и время | Когда событие закончится. |
start_time_zone | необязательная строка | Часовой пояс start_date . |
end_time_zone | необязательная строка | Timeone из end_date . |
all_day | логический | Продлится ли мероприятие целый день. |
travel_time | необязательная продолжительность | Продолжительность события в пути. |
recurrence | необязательный вложенный event.recurrence | Настройки повторения события. |
location | необязательная строка | Где происходит событие. |
start_location | необязательная строка | Откуда начинается событие. |
attendees | необязательный список строк | Имена участников мероприятия. |
attached_url | необязательная строка | URL-адрес, связанный с событием. |
creation_date | необязательная дата и время | Когда событие было создано. Не задано, если запись календаря по умолчанию, например, праздничные дни. |
атрибуты event.recurrence
название | тип | описание |
---|---|---|
interval | целое число | Количество repeat для повторения, т.е. 1 Yearly (раз в 1 год). |
repeat | нить | Один из: OneTime , Daily , Weekly , Monthly , Yearly . |
repeat_end_date | необязательная дата и время | Когда перестать повторяться. |
Образец данных
{ "id": "3", "unique_identifier": "f5fcf872-34f6-3f60-ba03-74d5a7a3bbbb", "calendar": "Home", "calendar_id": "477a2001537fe178d6b77cdceb8bac2e", "calendar_store": "Default", "summary": "Christmas Day", "description": "Bank holiday in the UK", "start_date": "2017-12-25T00:00:00.000000", "end_date": "2017-12-25T23:59:59.000000", "start_time_zone": None, "end_time_zone": None, "all_day": True, "travel_time": None, "recurrence": { "interval": 1, "repeat": "Yearly", "repeat_end_date": None, "specifier": "" }, "location": None, "start_location": None, "attendees": ["John Appleseed"], "attached_url": None, "creation_date": None }
Запись
{ "title": "Monday meeting:", "note": "Monday meeting:\n Discuss X,\n discuss Y.", "summary": null, "folder": "icloud", "sub_folder": "work", "attachments": [ { "type": "image", "file_id": "8e22cf6e524357b4eb3da775d193072ebba9543f", "file_path": "Media/80DDDEAD-B33F-37B2-7219432C0359/Image.jpeg" } ], "creation_date": "2016-06-06 13:23:20.000000", "last_modified": "2016-06-07 15:21:25.000000" }
Посещение
Запись о посещении веб-сайта.
Атрибуты
название | тип | описание |
---|---|---|
data_type | строка, всегда visit | Идентификатор типа данных элемента. |
url | нить | URL посещенной страницы. |
title | нить | Заголовок посещенной страницы. |
date_created | дата и время | Когда визит состоялся. |
{ "data_type": "visit", "url": "https://reincubate.com/", "title": "Reincubate: the app data company", "date_created": "2020-01-01T00:00:00.000000Z" }
печенье
HTTP-cookie.
Атрибуты
название | тип | описание |
---|---|---|
data_type | строка, всегда cookie | Идентификатор типа данных элемента. |
name | нить | Имя файла cookie. |
value | нить | Значение файла cookie. |
domain | нить | Спецификатор домена файла cookie. |
path | нить | Спецификатор пути файла cookie. |
flags | нить | Любые флаги, установленные для файла cookie. |
creation_date | дата и время | Когда файл cookie был создан. |
expiry_date | дата и время | Когда срок действия файла cookie истекает. |
{ "data_type": "cookie", "name": "sample_cookies", "value": "sample_value", "domain": "reincubate.com", "path": "/", "flags": "", "creation_date": "2020-01-01T00:00:00.000000Z", "expiry_date": "2020-01-01T00:00:00.000000Z" }
Расположение
Атрибуты данных
название | тип | описание |
---|---|---|
data_type | строка, всегда location | Идентификатор типа данных. |
latitude | плавать | Координата широты местоположения. |
longitude | плавать | Координата долготы местоположения. |
altitude | плавать | Координата высоты местоположения. |
horizontal_accuracy | плавать | Горизонтальная точность измерения. |
vertical_accuracy | плавать | Вертикальная точность измерения. |
position_type | нить | Идентификатор используемого метода измерения. |
date_created | дата и время | Когда было произведено измерение. |
Образец данных
{ "data_type": "location", "latitude": 51.507452392689146, "longitude": -0.07398372304584414, "altitude": 0.0, "horizontal_accuracy": 65.0, "vertical_accuracy": 0.0, "positioning_type": "Wifi", "date_created": "2020-01-01T00:00:00.000000Z" }