Servicio Apple iCloud

Actualizado

La API admite la recuperación de una variedad de datos y archivos de los servicios iCloud de Apple.

Sesiones

Configurar una sesión para los servicios de iCloud en la API es tan sencillo como iniciar sesión en una cuenta de iCloud. El proceso puede requerir múltiples intentos para crear la sesión si la cuenta ha habilitado la autenticación de múltiples factores, como 2FA o 2SV.

Crear una sesión para una cuenta sin 2FA / 2SV

La carga útil de la sesión para crear una sesión para una cuenta sin 2FA / 2SV habilitado contiene los siguientes parámetros.

nombre tipo descripción
password cuerda La contraseña de la cuenta de iCloud.

Usando cURL

curl https://ricloud-api.reincubate.com/sessions \
  -X POST \
  -H 'Authorization: Token <your key_token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "source": {
    "user": "1",
    "type": "icloud.account",
    "identifier": "<iCloud account username>"
  },
  "payload": {
    "password": "<iCloud account password>"
  }
}'

Respuesta

{
  "id": "<session ID>",
  "resource": "session",
  ...
  "state": "succeeded",
  "error": null,
  ...
}

Crear una sesión para una cuenta con 2FA

Crear una sesión para una cuenta habilitada para 2FA es un proceso de dos pasos:

  1. Intente crear una sesión utilizando solo la contraseña de la cuenta de iCloud. Esto activará el proceso 2FA, que envía un código de autenticación a dispositivos iOS y macOS asociados con la cuenta. El intento de creación de sesión fallará con error="code-required" .
  2. Use la contraseña de la cuenta de iCloud y el código de autenticación recibido en (1) para crear una sesión. Si se acepta el código, la sesión se creará con éxito.

Paso 1: crear sesión

nombre tipo descripción
password cuerda La contraseña de la cuenta de iCloud.

Usando cURL

curl https://ricloud-api.reincubate.com/sessions \
  -X POST \
  -H 'Authorization: Token <your key_token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "source": {
    "user": "1",
    "type": "icloud.account",
    "identifier": "<iCloud account username>"
  },
  "payload": {
    "password": "<iCloud account password>"
  }
}'

Respuesta

Si el proceso 2FA se desencadena como se esperaba, la sesión no se creará con el error: code-required .

{
  "id": "<session ID>",
  "resource": "session",
  ...
  "state": "failed",
  "error": "code-required",
  ...
}

Paso 2: crea una sesión con código

nombre tipo descripción
password cuerda La contraseña de la cuenta de iCloud.
code cuerda El código de autenticación.

Usando cURL

curl https://ricloud-api.reincubate.com/sessions \
  -X POST \
  -H 'Authorization: Token <your key_token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "source": {
    "user": "1",
    "type": "icloud.account",
    "identifier": "<iCloud account username>"
  },
  "payload": {
    "password": "<iCloud account password>",
    "code": "<authentication code>"
  }
}'

Respuesta

{
  "id": "<session ID>",
  "resource": "session",
  ...
  "state": "succeeded",
  "error": null,
  ...
}

Crear una sesión para una cuenta con 2SV

El proceso para crear una sesión para una cuenta habilitada para 2SV tiene tres pasos:

  1. Intente crear una sesión con la contraseña de la cuenta de iCloud. Como se requiere 2SV, esto fallará con error="choice-required" y error_info={"choices": [<2SV enabled devices>]} .
  2. Intente crear una sesión nuevamente utilizando la contraseña de la cuenta de iCloud y una opción de la lista error_info["choices"] . Esta vez, el intento activará el proceso 2SV que envía un código de autenticación al dispositivo elegido. El intento fallará con error="code-required" .
  3. Use la contraseña de la cuenta de iCloud y el código de autenticación recibido en (2) para crear una sesión. Si se acepta el código, la sesión se creará con éxito.

Esto activará el proceso 2SV, que envía un código de autenticación a los dispositivos iOS y macOS asociados con la cuenta. El intento de creación de sesión fallará con error="code-required" .

Paso 1: crear sesión

nombre tipo descripción
password cuerda La contraseña de la cuenta de iCloud.

Usando cURL

curl https://ricloud-api.reincubate.com/sessions \
  -X POST \
  -H 'Authorization: Token <your key_token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "source": {
    "user": "1",
    "type": "icloud.account",
    "identifier": "<iCloud account username>"
  },
  "payload": {
    "password": "<iCloud account password>"
  }
}'

Respuesta

Si 2SV está habilitado en la cuenta, el intento de creación de sesión fallará con la choice-required error choice-required .

{
  "id": "<session ID>",
  "resource": "session",
  ...
  "state": "failed",
  "error": "choice-required",
  "error_info": {
    "choices": [
      "********02 - SMS to Phone Number"
    ]
  }
  ...
}

Paso 2: crear sesión con elección

nombre tipo descripción
password cuerda La contraseña de la cuenta de iCloud.
choice cuerda El dispositivo elegido para enviar un código de autenticación.

Usando cURL

curl https://ricloud-api.reincubate.com/sessions \
  -X POST \
  -H 'Authorization: Token <your key_token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "source": {
    "user": "1",
    "type": "icloud.account",
    "identifier": "<iCloud account username>"
  },
  "payload": {
    "password": "<iCloud account password>",
    "choice": "********02 - SMS to Phone Number"
  }
}'

Respuesta

Si el proceso 2FA se desencadena como se esperaba, la sesión no se creará con el error: code-required .

{
  "id": "<session ID>",
  "resource": "session",
  ...
  "state": "failed",
  "error": "code-required",
  ...
}

Paso 3: crea una sesión con código

nombre tipo descripción
password cuerda La contraseña de la cuenta de iCloud.
code cuerda El código de autenticación.

Usando cURL

curl https://ricloud-api.reincubate.com/sessions \
  -X POST \
  -H 'Authorization: Token <your key_token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "source": {
    "user": "1",
    "type": "icloud.account",
    "identifier": "<iCloud account username>"
  },
  "payload": {
    "password": "<iCloud account password>",
    "code": "<authentication code>"
  }
}'

Respuesta

{
  "id": "<session ID>",
  "resource": "session",
  ...
  "state": "succeeded",
  "error": null,
  ...
}

Tipos de fuente

identificador descripción
icloud.account fuente primaria Corresponde a una cuenta de iCloud.

Centro

El servicio de iCloud admite todos los atributos del esquema de carga útil de sondeo.

Recuperando información de origen

Este tipo de encuesta recupera información sobre el origen seleccionado. Los resultados se publican en formato JSON.

Usando cURL

curl https://ricloud-api.reincubate.com/polls \
  -X POST \
  -H 'Authorization: Token <your key_token>' \
  -H 'Content-Type: application/json' \
  -d '{
  "session": "<session ID>",
  "payload": {
    "info_types": ["*"]
  }
}'

Usando * ricloud-py *

import ricloud

# The ID of a session we made earlier.
session_id = "<session ID>"

poll = ricloud.Poll.create(
  session=session_id,
  payload={
    "info_types": ["*"]
  }
)

Recuperando datos

Este tipo de encuesta recupera y procesa datos de la sesión de destino. Los resultados se publican en formato JSON.

Consulte la lista de tipos de datos disponibles para obtener más información sobre tipos de datos específicos.

Usando cURL

curl https://ricloud-api.reincubate.com/polls \
  -X POST \
  -H 'Authorization: Token <your key_token>' \
  -H 'Content-Type: application/json' \
  -d '{
    "session": "<session ID>",
    "payload": {
        "data_types": ["icpl.photos"]
    }
}'

Usando * ricloud-py *

import ricloud

# The ID of a session we made earlier.
session_id = "<session ID>"

poll_payload = {
    "data_types": ["icpl.photos"]
}

poll = ricloud.Poll.create(
  session=session_id,
  payload=poll_payload,
)

Recuperando archivos

El atributo de carga útil de sondeo de files se utiliza para solicitar la recuperación de archivos binarios de la fuente de destino.

Los ID normalmente se recuperarán de una encuesta anterior para los tipos de datos que incluyen referencias directas a archivos, como iCloud Photo Library, o que incluyen archivos adjuntos, como los tipos de datos de mensajes.

Usando cURL

curl https://ricloud-api.reincubate.com/polls \
  -X POST \
  -H 'Authorization: Token <your key_token>' \
  -H 'Content-Type: application/json' \
  -d '{
    "session": "<session ID>",
    "payload": {
        "files": [
            "icpl://ATnrIxddlwbCEjN33NBq8zXQwYgE",
            "icpl://AbfMRXQ55H4WfS5YguuUWxir4hq6"
        ]
    }
}'

Usando * ricloud-py *

import ricloud

# The ID of a session we made earlier.
session_id = "<session ID>"

poll_payload = {
    'files': [
        'icpl://ATnrIxddlwbCEjN33NBq8zXQwYgE',
        'icpl://AbfMRXQ55H4WfS5YguuUWxir4hq6',
    ]
}

poll = ricloud.Poll.create(
    session=session_id,
    payload=poll_payload,
)

Tipos de datos

tipos de datos de iCloud

identificador descripción
icpl.photos Recupera los activos de iCloud Photo Library.
mme_contacts.contacts Recupera los datos de contactos de iOS almacenados en iCloud.
mme_calendar.events Recupera los datos del calendario iOS de iCloud almacenados.
mme_notes.notes Recupera los datos de iOS Notes almacenados en iCloud.
callkit.calls Recupera los datos del teléfono iOS sincronizados con CallKit.
cloudkit_safari.history Recupere los datos del historial del navegador Safari almacenados en iCloud.
fmip.devices Recupere el dispositivo Find My iPhone y los datos de ubicación.

Biblioteca de fotos de iCloud

Fotos, videos y otros medios

Recupera información sobre fotos, videos y otros medios almacenados en iCloud Photo Library (ICPL).

Este módulo requiere que iCloud Photo Library esté habilitado en la cuenta de iCloud del usuario.

ID del tipo de datos icpl.photos
Entorno asociado Settings > [username] > iCloud > Photos > iCloud Photo Library

Atributos de datos

nombre tipo descripción
id cuerda Un identificador para el elemento de datos. Útil para deduplicar datos en múltiples encuestas.
filename cuerda El nombre del archivo tal como está almacenado en ICPL.
files lista de elementos de image , video y audio Archivos asociados con este activo ICPL. El archivo original, Live Photos, miniaturas se incluirán en esta lista.
date_created fecha y hora Cuando el archivo fue creado originalmente. En el caso de fotos o videos tomados en un dispositivo iOS, esta será la fecha en que se tomaron. En el caso de los activos existentes importados a ICPL, esta será la fecha de importación original.
date_uploaded fecha y hora Cuándo se cargó el archivo por última vez a ICPL. Esto corresponderá a cuando el archivo se pudo recuperar por primera vez a través de la API ricloud.
local_date_created optional datetime When the asset was originally created, in local time. This attribute is only populated if sufficient metadata is stored with the asset in ICPL, and is currently supported for parsing by the API. The value of this attribute can vary by a few seconds from that of date_created, as the two are determined from different sources.

Filtros de datos

nombre tipo descripción
since fecha y hora Solo incluye elementos con una fecha de date_uploaded posterior al valor proporcionado.
until fecha y hora Solo incluye elementos con una fecha de date_uploaded anterior al valor proporcionado.

Data de muestra

[
  {
    "id": "7f1384f5038255f5",
    "data_type": "icpl.asset",
    "filename": "IMG_0002.HEIC",
    "files": [
      {
        "id": "icpl://AWo/lDeN8fEExAUJajRHzVx2j605",
        "data_type": "image",
        "extension": "heic",
        "size": 905818,
        "width": 4032,
        "height": 3024
      },
      {
        "id": "icpl://ASDPdJ/LvFWjsBy4YOOp7B5c+XOi",
        "data_type": "video",
        "extension": "mov",
        "size": 2456163,
        "width": 980,
        "height": 1308
      },
      {
        "id": "icpl://ASAwWOvwrvAUuO71uXcU6mm+nMU4",
        "data_type": "image",
        "extension": "jpg",
        "size": 595624,
        "width": 1536,
        "height": 2048
      },
      {
        "id": "icpl://ATy/qmemCas1jzYWuhR4mQywhpzz",
        "data_type": "image",
        "extension": "jpg",
        "size": 65407,
        "width": 360,
        "height": 480
      }
    ],
    "date_created": "2020-09-18T12:32:17Z",
    "date_uploaded": "2020-09-18T12:41:19Z",
    "local_date_created": "2020-09-18T13:32:17+01:00"
  }
]

Contactos de MobileMe

Contactos

Recupera datos de contactos de iOS almacenados en iCloud.

ID del tipo de datos mme_contacts.contacts
Entorno asociado Settings > [username] > iCloud > Contacts

Atributos de datos

El tipo de datos mme_contacts.contact hereda la mayoría de los atributos del tipo de datos de contact base. La siguiente tabla describe atributos adicionales o diferentes.

nombre tipo descripción
id cuerda Un identificador para el elemento de datos. Útil para deduplicar datos en múltiples encuestas.
data_type cadena, siempre mme_contacts.contact El tipo de datos del artículo.
uid cuerda Un identificador único que se puede utilizar para deduplicar en diferentes fuentes de datos de contactos de iOS.
image elemento de image anidada, opcional Imagen de perfil para el contacto.

Data de muestra

[
  {
    "id": "2cf6a837304d6614",
    "data_type": "mme_contacts.contact",
    "uid": "NzNlNjkxYjctOTBmYi00MTYxLWI5YzYtZTk0ZDlhZjljMmE5",
    "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 Coring",
    "birthday": "1976-04-01",
    "image": {
      "id": "mme_contact_image://2cf6a837304d6614",
      "data_type": "image",
      "extension": "jpg"
    }
  }
]

MobileMe Calendar eventos mme_calendar.events

Recupera los datos del calendario iOS almacenados en iCloud.

Notas de MobileMe Notes mme_notes.notes

Recupera los datos de iOS Notes almacenados en iCloud.

CallKit

Llamadas desde CallKit callkit.calls

Recupera los registros de llamadas sincronizados con el servicio CallKit.

Los errores

callkit-uninitialised

Indica que el servicio CallKit no se ha configurado para esta cuenta. El propietario de la cuenta de iCloud puede resolver este error utilizando un dispositivo iOS asociado con la cuenta de iCloud a través de los siguientes pasos: - Asegúrese de que el dispositivo esté conectado a Wi-Fi. - Vaya a Settings > [username] > iCloud . - Apague iCloud Drive, esperando entre 30 y 60 segundos para que el cambio surta efecto. - Encienda iCloud Drive una vez que se haya completado el cambio anterior. Esto debería desencadenar la inicialización.

Si el error persiste después de realizar este proceso, póngase en contacto con el servicio de asistencia.

callkit-sync-disabled

En este caso, el servicio CallKit se ha inicializado, pero no se han cumplido las condiciones necesarias para que los dispositivos comiencen a sincronizar el historial de llamadas con iCloud. La API resolverá esto de forma remota a través de iCloud, pero el dispositivo asociado con la cuenta de iCloud puede que no vuelva a evaluar su estado de sincronización, ya que se almacena en caché.

El propietario de la cuenta de iCloud puede activar un dispositivo para volver a verificar las condiciones de sincronización del historial de llamadas a través de los siguientes pasos:

  • Vaya a Settings > [username] > iCloud .
  • Apague iCloud Drive, esperando de 30 a 60 segundos para que el cambio surta efecto.
  • Active iCloud Drive una vez que se haya completado el cambio anterior. Esto debería desencadenar la inicialización.

Solución de problemas

  • El historial de llamadas recientes no se está devolviendo en los resultados de la encuesta.

Esto suele deberse a que el dispositivo no ha sincronizado sus últimos registros de historial de llamadas con iCloud. El servicio CallKit es un servicio interno de iOS y no puede activarse o desactivarse en la configuración o activarse para sincronizarse manualmente. Esto puede dificultar la depuración de los datos faltantes, ya que no está claro qué ha sincronizado o no el dispositivo con iCloud.

Este problema es más común para las cuentas que no tienen mucha información para sincronizar (menos de ~ 3 llamadas), que a menudo puede ser el caso de las cuentas de prueba.

Recomendaciones:

  • Asegúrese de que el dispositivo tenga más de un puñado de registros de historial de llamadas para sincronizar. Nuestras pruebas han demostrado que un dispositivo con solo un par de registros del historial de llamadas no activará el proceso de sincronización de iCloud.
  • Espere a que el dispositivo realice una sincronización periódica. Esto puede llevar hasta 12 horas, dependiendo de cómo se use el dispositivo, su estado de conectividad y su estado de carga.
  • Conecte el dispositivo a la corriente. Es más probable que el dispositivo active una sincronización cuando se encuentra en este estado.

  • El historial de llamadas antiguo no se devuelve en los resultados de la encuesta.

El servicio CallKit está diseñado para sincronizar los registros del historial de llamadas entre dispositivos y no para almacenar estos registros por tiempo indefinido. Por lo general, los registros del historial de llamadas se podrán recuperar de CallKit durante aproximadamente 3 meses, pero esto puede variar de una cuenta a otra en función de los procesos de limpieza internos en iCloud.

CloudKit

Historial del navegador de iCloud cloudkit_safari.history

Recupere los datos históricos del navegador Safari almacenados en el servicio de sincronización de iCloud.

Encuentra mi y encuentra mi iPhone

Ubicaciones del dispositivo

Recupere Buscar mi dispositivo y datos de ubicación.

Tenga en cuenta que este tipo de datos puede requerir múltiples encuestas, con el segundo próximo ~ 10-30 segundos después del primero, para devolver datos completos. Esto se debe a cómo funciona Find My: la primera encuesta activará Find My para solicitar nuevos datos de dispositivos accesibles, pero los datos no estarán disponibles por otros 10-30 segundos.

ID del tipo de datos fmip.devices
Entorno asociado Settings > [username] > Find My

Atributos de datos

nombre tipo descripción
id cuerda Un identificador para el elemento de datos. Útil para deduplicar datos en múltiples encuestas.
data_type cadena, siempre fmip.devices El tipo de datos del artículo.
name cuerda El nombre establecido por el usuario para el dispositivo.
model_name cuerda Nombre comercial de Apple para el modelo de dispositivo.
model_identifier cuerda Identificador de Apple para el modelo de dispositivo.
product_type cuerda La categoría del producto del dispositivo.
location location anidada opcional La última ubicación informada para el dispositivo, si hay una disponible.
battery_status cuerda El estado actual de la batería del dispositivo.
battery_level flotador Si se conoce, el porcentaje de carga restante de la batería.

Data de muestra

[
  {
    "id": "e7694d7a0d2ab6cf",
    "data_type": "fmip.device",
    "name": "John's iMac",
    "model_name": "iMac with Retina 5K display",
    "model_identifier": "iMac15,1",
    "product_type": "iMac",
    "location": null,
    "battery_status": "Unknown",
    "battery_level": 0.0
  },
  {
    "id": "4d86a6181808d152",
    "data_type": "fmip.device",
    "name": "John's iPhone 11",
    "model_name": "iPhone 11",
    "model_identifier": "iPhone6,2",
    "product_type": "iPhone",
    "location": {
      "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"
    },
    "battery_status": "Unknown",
    "battery_level": 0.0
  }
]

Tipos de archivo

identificador descripción
icpl Un archivo de iCloud Photo Library.
mme_contact_image Una imagen de perfil de contacto mme_contacts.contacts .

¿Cómo podemos ayudar?

¡Nuestro equipo de soporte está aquí para ayudar!

Nuestro horario de atención es de lunes a viernes de 9 a.m. a 5 p.m. GMT. El tiempo es actualmente 10:55 AM GMT.

Intentamos responder todos los mensajes en un plazo de un día laboral.

Nuestro increíble equipo de soporte.

© 2008 - 2024 Reincubate Ltd. Todos los derechos reservados. Registrado en Inglaterra y Gales #5189175, VAT GB151788978. Reincubate® y Camo® son marcas registradas. Política de privacidad & condiciones.