def get_devices_by_person()

in jobs/eam-integrations/scripts/api/XMatters/XMatters.py [0:0]


def get_devices_by_person(person_id):
    """Gets a person's device(s)

  Parameters:
    ID (targetName or id)

  Returns:
    {
      "count":3,
      "total":3,
      "data":[
      {
        "id":"a4d69579-f436-4e85-9d93-703714d85d72",
        "name":"Home Phone",
        "recipientType":"DEVICE",
        "phoneNumber":"+13235553643",
        "targetName":"akaur",
        "deviceType":"VOICE",
    [...]
  """

    logger.info("\n")
    logger.info("Gathering all devices for %s" % person_id)
    url = _config.base_URL + "/people/" + person_id + "/devices"

    headers = {"Authorization": "Bearer " + get_access_token()}
    if USE_BASIC_AUTH:
        headers = {}

    xm_devices = []
    while True:
        if USE_BASIC_AUTH:
            response = requests.get(
                url,
                auth=(_config.xm_username, _config.xm_password),
                proxies=_config.proxies,
            )
        else:
            response = requests.get(url, headers=headers, proxies=_config.proxies)

        if response.status_code == 200:
            rjson = response.json()
            logger.debug(
                "Retrieved "
                + str(rjson["count"])
                + " of "
                + str(rjson["total"])
                + " devices."
            )
        else:
            logger.critical(response)
            raise Exception(response.content)

        for device in rjson["data"]:
            logger.debug("Device - %s %s" % (device["name"], device["targetName"]))
            xm_devices.append(device)

        if "next" in rjson["links"]:
            url = _config.url + rjson["links"]["next"]
        else:
            break

    return xm_devices