数据类型
针对API返回的data
类型民意调查结果将返回下面列出的格式之一的信息。
结果有效载荷
属性
数据JSON有效负载的根结构具有以下属性。
名称 | 类型 | 描述 |
---|---|---|
data | 数据对象列表 | 从源中检索的数据。 |
metadata | 元数据对象 | 与数据相关的元data 。 |
元数据
属性
名称 | 类型 | 描述 |
---|---|---|
count | 整数 | data 中的对象数。 |
文件
整个API都可以看到file
数据类型,因为它是对可以通过files
类型轮询从API下载的文件的引用。
属性
名称 | 类型 | 描述 |
---|---|---|
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 17 起,此功能适用于在 iOS 消息中创建的音频消息。
信息
属性
名称 | 类型 | 描述 |
---|---|---|
id | 细绳 | 消息的唯一标识符。如有必要,使用它来删除重复的返回数据。 |
data_type | 字符串,总是message | 数据类型说明符。 |
type | 字符串,可选 | 当消息服务处理多种消息类型时使用。例如 iOS 消息中的SMS 和iMessage 。 |
handle | 细绳 | 对话的第二方,通常是消息传递应用程序唯一的标识符。 |
handle_name | 字符串,可选 | 如果可用,则为句柄的显示名称。 |
contact | 嵌套联系人,可选 | 引用对话第二方的 iOS 联系人的对象。 |
conversation_id | 细绳 | 按会话对消息进行分组的标识符。 |
from_me | 布尔值 | 消息是已发送还是已接收。 |
user | 字符串,可选 | 在多个用户/帐户可能正在使用设备上的消息传递应用程序的情况下消息传递应用程序的用户。 |
text | 细绳 | 消息的正文。 |
edits | 编辑列表,可选 | 消息内容编辑列表,适用于支持消息编辑且历史记录保留在备份中的应用程序。 |
attachments | 文件列表,可选 | 可与download_file 方法一起使用的file_id 值数组。如果消息不包含附件,则返回一个空数组。 |
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 及更高版本的设备制作的备份。对于已删除的消息,只有在进行备份时该消息仍可恢复时,信息才可用,苹果称这是在删除后 30-40 天。
对于已编辑的消息,编辑历史记录将在edits
属性中返回。每次编辑都包括text
的状态和提交编辑的时间。消息本身的text
属性将始终与最终编辑的文本属性相同。
会话
对话线程。
名称 | 类型 | 描述 |
---|---|---|
id | 细绳 | 项目 ID。 |
data_type | 字符串,总是conversation | 项目数据类型 ID。 |
group | 可选字符串 | 组名。 |
members | contact 事项清单 | 对话的参与者。 |
联系
contact
属性
名称 | 类型 | 描述 |
---|---|---|
id | 细绳 | 项目 ID。 |
data_type | 字符串,始终contact | 项目数据类型 ID。 |
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
。它们分别对应于电话号码,电子邮件地址,网站URL,社交媒体帐户句柄和街道地址。
前四个具有相同的属性:
名称 | 类型 | 描述 |
---|---|---|
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 | 细绳 | 项目 ID。 |
data_type | 字符串,总是call | 项目数据类型 ID。 |
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 | 细绳 | 项目 ID。 |
data_type | 字符串,总是event | 项目数据类型 ID。 |
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 | 可选字符串 | end_date 的时间。 |
all_day | 布尔值 | 事件是否持续一整天。 |
travel_time | 可选持续时间 | 事件的旅行持续时间。 |
recurrence | 可选的嵌套event.recurrence | 事件的重复设置。 |
location | 可选字符串 | 事件发生的地方。 |
start_location | 可选字符串 | 事件从哪里开始。 |
attendees | 可选的字符串列表 | 活动参加者的姓名。 |
attached_url | 可选字符串 | 与事件关联的 URL。 |
creation_date | 可选日期时间 | 创建事件的时间。如果默认日历条目则不设置,例如公共假期。 |
event.recurrence
属性
名称 | 类型 | 描述 |
---|---|---|
interval | 整数 | repeat to recurr at的次数,即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 | 项目数据类型 ID。 |
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 | 项目数据类型 ID。 |
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" }