Zoom profile image file hash


Zoom profile image file hash:

API Endpoint(s) and/or Zoom API Event(s)

Description
I’m trying to implement updating of our Zoom users profile picture information via the /userPicture endpoint. I’m looking for a way to do a delta for what users need to have their profile picture updated based on the user profile image they have assigned in another system.

Is there any way to get a hash of their Zoom profile picture or something similar to a hash so we can do the comparison. This would prevent us from having to call the update profile picture endpoint thousands of times every time we need to do this.

Thanks!

Error?
No error

How To Reproduce
No reproduction steps

Hey @jeremy.farmer

I’m not to clear on what you mean by

Could you clarify or provide more details on what exactly you mean?

Thanks!

For sure let me see if I can explain myself better :smiley:

Lets say I have 3 users both in an external HR system and in Zoom

user x1
user x2
user x3

We want to keep Zoom and our external HR system’s user profile images synchronized. So we’re looking to get a hash of the file in Zoom and a hash of the file in the external HR system and compare them to see if we need to update Zoom’s profile image


| User | Zoom  Profile.png Hash | External  Profile.png Hash    |
| x1   |  da9ab29...            | da9ab29...                    | Matches so don't update
| x2   |  494d6e7...            | 1fc7878...                    | Does not match so update zoom via /userPicture
| x3   |  da9ab29...            | da9ab29...                    | Matches so don't update

Hopefully that makes more sense!

Hey @jeremy.farmer

Thanks for the clarification. At the moment, we don’t expose any such hash with the available APIs for uploading an image. I can certainly propose this as a feature request to our development team.

Let me know if you have any other questions!

I think this would be a very helpful feature to have,

Something similar to what Azure AD (via graph) does would be sufficient I would think,

It provides an etag of the photo that we can look at to see if the file has changed or not

Typically, the ETag value is a hash of the content, a hash of the last modification timestamp, or just a revision number.

{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users('user identifier')/photos",
    "value": [
        {
            "@odata.mediaContentType": "image/jpeg",
            "@odata.mediaEtag": "W/\"ee1014ee2467240b9639d261d165f470e0a3248fd1118b313f3d3264fa195d47\"",
            "id": "48x48",
            "height": 48,
            "width": 48
        },
        {
            "@odata.mediaContentType": "image/jpeg",
            "@odata.mediaEtag": "W/\"ee1014ee2467240b9639d261d165f470e0a3248fd1118b313f3d3264fa195d47\"",
            "id": "64x64",
            "height": 64,
            "width": 64
        },
        {
            "@odata.mediaContentType": "image/jpeg",
            "@odata.mediaEtag": "W/\"ee1014ee2467240b9639d261d165f470e0a3248fd1118b313f3d3264fa195d47\"",
            "id": "96x96",
            "height": 96,
            "width": 96
        },
        {
            "@odata.mediaContentType": "image/jpeg",
            "@odata.mediaEtag": "W/\"ee1014ee2467240b9639d261d165f470e0a3248fd1118b313f3d3264fa195d47\"",
            "id": "120x120",
            "height": 120,
            "width": 120
        },
        {
            "@odata.mediaContentType": "image/jpeg",
            "@odata.mediaEtag": "W/\"ee1014ee2467240b9639d261d165f470e0a3248fd1118b313f3d3264fa195d47\"",
            "id": "240x240",
            "height": 240,
            "width": 240
        },
        {
            "@odata.mediaContentType": "image/jpeg",
            "@odata.mediaEtag": "W/\"ee1014ee2467240b9639d261d165f470e0a3248fd1118b313f3d3264fa195d47\"",
            "id": "360x360",
            "height": 360,
            "width": 360
        },
        {
            "@odata.mediaContentType": "image/jpeg",
            "@odata.mediaEtag": "W/\"ee1014ee2467240b9639d261d165f470e0a3248fd1118b313f3d3264fa195d47\"",
            "id": "432x432",
            "height": 432,
            "width": 432
        },
        {
            "@odata.mediaContentType": "image/jpeg",
            "@odata.mediaEtag": "W/\"ee1014ee2467240b9639d261d165f470e0a3248fd1118b313f3d3264fa195d47\"",
            "id": "504x504",
            "height": 504,
            "width": 504
        },
        {
            "@odata.mediaContentType": "image/jpeg",
            "@odata.mediaEtag": "W/\"ee1014ee2467240b9639d261d165f470e0a3248fd1118b313f3d3264fa195d47\"",
            "id": "648x648",
            "height": 648,
            "width": 648
        }
    ]
}

And would be hugely helpful if it showed up in the Zoom list users endpoint /users that way I wouldn’t have to send a request for every user to get that information I can just look there and see if it needs to be updated for that specific user in the list.

{
  "next_page_token": "8V8HigQkzm2O5r9RUn31D9ZyJHgrmFfbLa2",
  "page_count": 100,
  "page_number": 1,
  "page_size": 30,
  "total_records": 8482,
  "users": [
    {
      "created_at": "2019-06-01T07:58:03Z",
      "custom_attributes": [
        {
          "key": "cbf_cywdkexrtqc73f97gd4w6g",
          "name": "A1",
          "value": "2323"
        }
      ],
      "dept": "Developers",
      "email": "jchill@example.com",
      "employee_unique_id": "HqDyI037Qjili1kNsSIrIg",
      "first_name": "Jill",
      "group_ids": [
        "t-_-d56CSWG-7BF15LLrOw"
      ],
      "id": "KDcuGIm1QgePTO8WbOqwIQ",
      ***"profile_pic_media_etag": "ee1014ee2467240b9639d261d165f470e0a3248fd1118b313f3d3264fa195d47",***
      "im_group_ids": [
        "t-_-d56CSWG-7BF15LLrOw"
      ],
      "last_client_version": "5.2.45120.0906(win)",
      "last_login_time": "2022-03-25T05:40:55Z",
      "last_name": "Chill",
      "plan_united_type": "1",
      "pmi": 6589310093,
      "role_id": "0",
      "status": "active",
      "timezone": "Asia/Shanghai",
      "type": 1,
      "verified": 1
    }
  ]
}

Just my thoughts though, appreciate your helping looking into it!