Zoom SCIM API GetUser, ListUsers, CreateUser user profile consistency

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

  • ListUsers SCIM API
  • GetUser SCIM API
  • CreateUser SCIM API

Description
Looking at the docs of ListUsers, GetUser, and CreateUser, I’ve noticed inconsistency in the returned user profiles, i.e. licenses (such as zoomUnited, zoomOneBizPlus, zoomOneEdu, etc) are not available in the ListUsers SCIM API, but are present in the GetUser SCIM API. Additionally, some other fields, i.e. manager, organization, costCenter are also unavailable in the List Users SCIM API.
Fetching all users one by one using GetUser API in order to get the full user’s profile is an ineffective solution because of the potential big number of users and rate limits in general.

CreateUser SCIM API also has some fields not available through GetUser and ListUsers SCIM APIs i.e. zoomPhoneNumber, zoomPhoneCallingPlan, etc.

Could you please tell if it’s expected to have such a difference between the mentioned User SCIM APIs and do you have any plans to change the ListUsers and GetUser API to return the full user profiles? Also, is there any other way to List Users with their full user profiles?

Thanks.

Hi @maxim.saschin , I believe it has to do with the way the plans have been restructured and not all of the endpoints getting updated as expected. Could you please share screenshots of the behavior you’re seeing so I can probe further with our API teams?

Hi @gianni.zoom
I can share the examples from the Zoom SCIM API docs - the behaviour is the same on our test Zoom tenant.

ListUsers: https://developers.zoom.us/docs/api/rest/reference/scim-api/methods/#operation/userSCIM2List response. There’s no urn:ietf:params:scim:schemas:extension:zoom:1.0:User object at all.

{
  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:ListResponse"
  ],
  "totalResults": 20,
  "startIndex": 1,
  "itemsPerPage": 10,
  "Resources": [
    {
      "id": "k&KdKr6TLWuxdDtk0hjSzL",
      "meta": {
        "resourceType": "User",
        "location": "https://api.zoom.us/scim2/Users/k&KdKr6TLWuxdDtk0hjSzL",
        "version": "1.0.0",
        "created": "2023-11-24T05:13:15Z",
        "lastModified": "2023-11-25T06:23:17Z"
      },
      "schemas": [
        "urn:ietf:params:scim:api:messages:2.0:ListResponse"
      ],
      "name": {
        "givenName": "Jill",
        "familyName": "Chill"
      },
      "emails": [
        {
          "type": "work",
          "value": "jchill@example.com",
          "primary": true
        }
      ],
      "displayName": "Jill Chill",
      "userName": "jchill@example.com",
      "active": true,
      "userType": "On-Prem",
      "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
        "department": "Development"
      },
      "urn:us:zoom:scim:schemas:extension:1.0:ZoomUser": {
        "loginType": {
          "workEmail": true,
          "sso": true
        }
      }
    }
  ]
}

GetUser: https://developers.zoom.us/docs/api/rest/reference/scim-api/methods/#operation/userSCIM2Get response. The enterprise schema has more information. Also, urn:ietf:params:scim:schemas:extension:zoom:1.0:User is present with license information, etc.

{
  "id": "k&KdKr6TLWuxdDtk0hjSzL",
  "meta": {
    "resourceType": "User",
    "location": "https://api.zoom.us/scim2/Users/k&KdKr6TLWuxdDtk0hjSzL",
    "version": "1.0.0",
    "created": "2023-11-24T05:13:15Z",
    "lastModified": "2023-11-25T06:23:17Z"
  },
  "schemas": [
    "urn:ietf:params:scim:api:messages:2.0:ListResponse"
  ],
  "name": {
    "givenName": "Jill",
    "familyName": "Chill"
  },
  "emails": [
    {
      "type": "work",
      "value": "jchill@example.com",
      "primary": true
    }
  ],
  "displayName": "Jill Chill",
  "userName": "jchill@example.com",
  "active": true,
  "userType": "On-Prem",
  "phoneNumbers": [
    {
      "type": "work",
      "value": "+015550100"
    }
  ],
  "roles": {
    "display": "Developer",
    "value": "Developer",
    "primary": true
  },
  "groups": {
    "type": "direct",
    "value": "Developers",
    "display": "Developers"
  },
  "urn:ietf:params:scim:schemas:extension:enterprise:2.0:User": {
    "department": "Development",
    "organization": "Example",
    "costCenter": "US01",
    "employeeNumber": "123",
    "manager": "thill@example.com"
  },
  "urn:us:zoom:scim:schemas:extension:1.0:ZoomUser": {
    "loginType": {
      "workEmail": true,
      "sso": true
    }
  },
  "urn:ietf:params:scim:schemas:extension:zoom:1.0:User": {
    "personalLinkName": "user001",
    "pronouns": "They/Them/Their",
    "zoomUnited": "16",
    "zoomOneBizPlus": "16",
    "zoomOneEdu": "576460752303423488",
    "zoomOneSchoolCampusPlus": "137438953472",
    "zoomOneEntPremier": "13421772",
    "zoomOneEduEntPremier": "4294967296",
    "zoomRevenueAccelerator": true,
    "zoomCustomerManagedKey": true,
    "zoomWhiteboard": true,
    "zoomWhiteboardPlus": true,
    "zoomTranslatedCaptions": true,
    "zoomWorkforceManagement": true,
    "zoomQualityManagement": true,
    "zoomScheduler": true,
    "zoomClipsPlus": true
  }
}

Hi @gianni.zoom , could you please tell if there was any feedback from the developers regarding the Users API endpoints consistency? Thanks

Hey @maxim.saschin , thanks for your patience! I submitted docs request for this and it is on the backlog. This is an internal reference number, but if and when the endpoints are updated, it will be on the changelog (DEVELOPERS-4923).

Thanks for the response @gianni.zoom . Just to clarify - is the team going to change the docs to mention the current limitations only or the implementation also will be changed?

Hi @maxim.saschin , it’s an API enhancement feature request so we have to see if the relevant team adds to the product board. Still in communication about it.

Got it @gianni.zoom Thank you, looking forward to any updates

1 Like