使用asmaster订阅数据(v2)

更新

概观

asmaster用于订阅与存储在云上的帐户和设备有关的数据。通过订阅帐户或设备,客户将通过aschannel自动推送新数据。

asmaster的典型请求流程可能是:

  • 确认list-services可以使用所需list-services
  • 确认潜在的新用户帐户尚未订阅list-subscriptions
  • 使用subscribe-account
  • 使用perform-2fa-challengesubmit-2fa-challenge完成任何2FA步骤
  • 如果设备数据很重要,请调用list-devices以检索关联的设备
  • 使用subscribe-device
  • 如果aschannel报告该帐户的令牌已过期或即将到期,请指示用户resubscribe-account
  • 如果用户希望停止监控其设备或帐户,请拨打unsubscribe-deviceunsubscribe-account

在整个请求流程中,客户端应该维护一个消耗来自aschannel的数据的进程

方法一目了然

服务管理和报告

list-services

list-services方法返回有关给定身份验证令牌可用服务的信息。

请求

$ curl \
    -X POST \
    -H 'Authorization: Token <TOKEN>' \
    https://asmaster.reincubate.com/list-services/ -D -

参数:

  • 没有

响应

  • HTTP 200包含可用服务信息的JSON字典
{ "services": [{
    "name": "iCloud",
    "actions": [{
      "description": "",
      "parameters": [{
        "type": "string",
        "description": "",
        "optional": false,
        "name": "Device",
        "slug": "device"
      }, {
        "type": "date",
        "description": "",
        "optional": true,
        "name": "Since",
        "slug": "since"
      }],
      "name": "Fetch Data",
      "execution": "Asynchronous",
      "slug": "fetch-data",
      "permissions": {
        "data": ["sms"]
      }
    }],
    "slug": "icloud"
  }],
  "stream_endpoints": [{
    "host": "aschannel.reincubate.com",
    "protocol": "https",
    "uri": "/stream/"
  }]
}

list-subscriptions

list-subscriptions方法为客户端提供所有已订阅帐户和设备的列表及其状态。

请求

$ curl \
    -X POST \
    -H 'Authorization: Token <TOKEN>' \
    -d "service=<SERVICE>" \
    https://asmaster.reincubate.com/list-subscriptions/ -D -

这是wget格式的同一个调用,供参考:

$ wget \
    --header 'Authorization: Token <TOKEN>' \
    --post-data="service=<SERVICE>" \
    https://asmaster.reincubate.com/list-subscriptions/ -qO -

参数:

服务
服务标识符,例如icloud

响应

  • HTTP 200包含帐户和设备订阅信息的JSON字典
{
  "accounts": [
    {
      "status": "ok",
      "service": "icloud",
      "account_id": 133733,
      "devices": [
        {
          "status": "ok",
          "device_id": 2
        },
        {
          "status": "ok",
          "device_id": 3
        },
        {
          "status": "ok",
          "device_id": 4
        }
      ]
    }
  ]
}

帐户订阅和取消订阅

asmaster合作的第二部分是帐户订阅。可以使用subscribe-account方法subscribe-account 。调用此方法时, asmaster会创建并存储内部身份验证令牌,以便将来可以在没有帐户主要凭据的情况下继续访问该帐户。根据所使用的服务,令牌寿命可能从几天到几个月不等,并且aschannel将在其到期时通知客户和 - 取决于服务 - 。一旦过期,必须使用resubscribe-account方法续订订阅。

调用subscribe-account ,如果身份验证成功,它将返回所有可用设备的列表。但是, list-devices方法用于为已订阅的帐户执行此功能。

可以使用取消unsubscribe-account方法unsubscribe-account

subscribe-account

请求

$ curl \
    -X POST \
    -H 'Authorization: Token <TOKEN>' \
    -d "service=<SERVICE>" \
    -d "username=<ACCOUNT>" \
    -d "password=<PASSWORD>" \
    https://asmaster.reincubate.com/subscribe-account/ -D -

参数:

  • 与之交互的服务:像icloud
  • 订阅帐户:如john.appleseed@reincubate.com
  • 帐户的密码:像joshua

响应

呼叫将以多种方式之一返回:

  • 201: Account registered返回account_id
{ "account_id": 1010
}
  • 429: Too many requests表示在安全窗口内订阅了太多的请求。 API执行此操作以防止对帐户重复登录尝试。
{ "message": "Too many subscriptions for the same account in the safety window.",
  "account_id": 1010,
  "success": false,
  "error": "asmaster-account-too-many-subscriptions"}
  • 409: MFA process required需要409: MFA process required信号需要客户端调用perform-2fa-challenge 。返回可信设备列表和临时account_id
{ "message": "This account has Two Step Verification enabled, please select a device to challenge.",
  "data": {
    "trustedDevices": ["********12", "Renate's iPhone - iPhone 6s"],
  },
  "error": "2fa-required",
  "account_id": 1010
}
  • 400: Account already active表示该帐户已订阅。
{ "message": "You are already subscribed to receive content for this account.",
  "account_id": 1010,
  "success": false,
  "error": "asmaster-account-already-active"}

perform-2fa-challenge

请求

$ curl \
    -X POST \
    -H 'Authorization: Token <TOKEN>' \
    -d "account_id=<TEMP-ACCOUNT-ID>" \
    -d "device_id=<DEVICE-ID>" \
    https://asmaster.reincubate.com/perform-2fa-challenge/ -D -

参数:

  • account_id
  • device_id

submit-2fa-challenge

请求

$ curl \
    -X POST \
    -H 'Authorization: Token <TOKEN>' \
    -d "account_id=<TEMP-ACCOUNT-ID>" \
    -d "code=<CODE>" \
    https://asmaster.reincubate.com/submit-2fa-challenge/ -D -

参数:

  • account_id
  • code

响应

{ "account_id": "1010"
}

resubscribe-account

请求

$ curl \
    -X POST \
    -H 'Authorization: Token <TOKEN>' \
    -d "account_id=<ACCOUNT-ID>" \
    -d "password=<PASSWORD>" \
    https://asmaster.reincubate.com/resubscribe-account/ -D -

参数:

  • account_id
  • password

请注意, password参数是可选的。如果不存在,API将尝试使用现有会话执行重新订阅。如果会话过期,这将失败,但如果帐户由于与会话无关的错误而被标记为非活动,则可能会成功。

响应

响应:

unsubscribe-account

取消订阅帐户将自动取消订阅属于它的任何订阅设备。

请求

$ curl \
    -X POST \
    -H 'Authorization: Token <TOKEN>' \
    -d "account_id=<ACCOUNT-ID>" \
    https://asmaster.reincubate.com/unsubscribe-account/ -D -

参数:

  • account_id

响应

响应:

  • 200帐户注销
  • 400 Bad account_id
{ "success": true
}

reset-subscription-since

reset-subscription-since方法在上次轮询时重置帐户及其所有设备的元数据。大多数Feed模块仅返回自上次轮询日期以来的数据增量。因此,通过重置它,客户端可以确保它们在下次轮询期间获得较旧的数据。

例如,如果客户希望再次获得上周的数据,他们可以在帐户上使用此方法,并在7天前将其传递给该帐户。

请求

$ curl \
    -X POST \
    -H 'Authorization: Token <TOKEN>' \
    -d "account_id=<ACCOUNT-ID>" \
    -d "datetime=<DATETIME>" \
    https://asmaster.reincubate.com/reset-subscription-since/ -D -

参数:

  • account_id
  • datetime将Feed窗口重置为的日期和时间。日期格式符合API标准

响应

{ "success": true
}

设备订阅和取消订阅

要注册或取消注册设备,用户可以使用subscribe-deviceunsubscribe-device方法。

list-devices

请求

$ curl \
    -X POST \
    -H 'Authorization: Token <TOKEN>' \
    -d "account_id=<ACCOUNT-ID>" \
    https://asmaster.reincubate.com/list-devices/ -D -

参数:

  • account_id

响应

  • 200 :设备列表和其他信息
{
  "devices": [
    {
      "ios_version": "10.2",
      "name": "iPhone 7 Plus",
      "colour": "1",
      "device_name": "Johnny's iP7 iOS10 Black",
      "latest-backup": "2017-01-31 22:06:06.000000",
      "model": "D111AP",
      "device_tag": "3d0d7e5fb2ce288813306e4d4636395e047a3d28",
      "serial": "ABC123BBBBBB",
      "device_id": 2
    },
    {
      "ios_version": "10.3.1",
      "name": "iPad Pro",
      "colour": "#e4e7e8",
      "device_name": "Johnny's other iPhone",
      "latest-backup": "2017-04-22 15:39:25.000000",
      "model": "J127AP",
      "device_tag": "b39bac0d347adfaf172527f97c3a5fa3df726a3a",
      "serial": "ABC123BBBBBB",
      "device_id": 3
    },
    {
      "ios_version": "10.3.1",
      "name": "iPhone 7 Plus",
      "colour": "1",
      "device_name": "Johnny's white iPhone",
      "latest-backup": "2017-04-13 21:08:47.000000",
      "model": "D111AP",
      "device_tag": "a49bfab36504be1bf563c1d1813b05efd6076717",
      "serial": "ABC123AAAAAA",
      "device_id": 4
    }
  ],
  "success": true
}
  • 429: Too many requests表示在安全窗口中列出设备的请求太多。 API执行此操作以防止重复轮询此机制。客户端应在本地缓存此设备列表,并仅在预期更改设备时调用该方法。

subscribe-device

要订阅设备,必须首先订阅其所属的帐户。

请求

$ curl \
    -X POST \
    -H 'Authorization: Token <TOKEN>' \
    -d "account_id=<ACCOUNT-ID>" \
    -d "device_id=<DEVICE-ID>" \
    https://asmaster.reincubate.com/subscribe-device/ -D -

参数:

  • account_id
  • device_id

响应

{ "success": true
}

unsubscribe-device

请求

$ curl \
    -X POST \
    -H 'Authorization: Token <TOKEN>' \
    -d "device_id=<DEVICE-ID>" \
    https://asmaster.reincubate.com/unsubscribe-device/ -D -

参数:

  • device_id

响应

{ "success": true
}

从帐户和设备订阅访问数据

一旦对帐户或帐户及其设备进行了订阅,API将自动为帐户建立最合适的轮询频率和时间。它将生成任务(如asapi中所述并在适当时安排它们.asmaster的客户端必须订阅aschannel以在生成任务结果时接收它们。

有关如何使用aschannel消耗数据的示例 ,请参阅开源示例库的侦听器模式

我们能帮你什么吗?

我们的支持团队在这里提供帮助!

我们的办公时间是格林威治标准时间周一至周五上午9点至下午5点。 时间目前是 6:35 PM的 GMT。

我们力争在一个工作日内答复所有垂询。

转到支持部分 › 联系企业团队 ›
我们的支持团队非常棒

© 2008 - 2019 Reincubate Ltd. 保留所有权利。 在英格兰和威尔士注册 #5189175, VAT GB151788978. Reincubate®是注册商标。 隐私权和条款. 我们推荐多因素认证。 在伦敦建立了爱情。