def get_all_people()

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


def get_all_people():
    """Gets all users/people from xMatters

  Parameters:
    None

  Returns:
    dict: name -> { attributes }

  Example:
    {
      [...]
      'test@mozilla.com' : {
        u'recipientType': u'PERSON',
        u'status': u'ACTIVE',
        u'firstName': u'Chris',
        u'lastName': u'Test',
        u'links': {u'self': u'/api/xm/1/people/fc97c634-6e9b-4788-bdca-xxxxxxxxxxxx'},
        u'externallyOwned': False,
        u'site': {
          u'id': u'2e6f8d1c-ced7-460e-bf5a-902109021090',
          u'links':
           { u'self': u'/api/xm/1/sites/2e6f8d1c-ced7-460e-bf5a-902109021090' },
          u'name': u'Beverly Hills Office'
        },
        u'properties': {
          u'Functional Group': u'IT',
          u'Executive': False,
          u'Manager Email': u'bbixby@mozilla.com',
          u'Home Country': u'United States of America',
          u'Cost Center': u'1440 - Enterprise Applications and Services (EApps)',
          u'Manager': u'Bill Bixby',
          u'Home Zipcode': u'90210',
          u'MERT/EVAC/Warden': False,
          u'Home City': u'Beverly Hills'
        },
        u'language': u'en',
        u'webLogin': u'test@mozilla.com',
        u'timezone': u'US/Pacific',
        u'targetName': u'test@mozilla.com',
        u'id': u'fc97c634-6e9b-4788-bdca-xxxxxxxxxxxx'
      },
      [...]
    }
  """
# https://mozilla-np.xmatters.com
# https://mozilla-np.xmatters.com/api/xm/
    logger.info("\n")
    logger.info("Gathering all XMatters people")
    url = _config.base_URL + "/people"

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

    xm_people = {}
    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"])
                + " people."
            )
        else:
            logger.critical(response)
            raise Exception(response.content)

        for person in rjson["data"]:
            logger.debug(
                "%s %s (%s)"
                % (person["firstName"], person["lastName"], person["targetName"])
            )
            if person["lastName"] in ["[NO LAST NAME]", "NO LAST NAME"]:
                person["lastName"] = ""
            if person["firstName"] in ["[NO FIRST NAME]", "NO FIRST NAME"]:
                person["firstName"] = ""
            xm_people[person["targetName"]] = person

        # Only to backfill data
        #      devs = get_devices_by_person(person['id'])
        #      if not devs:
        #        add_work_email_device(person)

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

    return xm_people