Chilkat Online Tools

DataFlex / Zoom API / Update a user's presence status

Back to Collection Items

Use ChilkatAx-9.5.0-win32.pkg

Procedure Test
    Handle hoHttp
    Boolean iSuccess
    Variant vReq
    Handle hoReq
    Variant vResp
    Handle hoResp
    Variant vSbResponseBody
    Handle hoSbResponseBody
    Handle hoJResp
    Integer iRespStatusCode
    String sTemp1
    Boolean bTemp1

    // This example assumes the Chilkat API to have been previously unlocked.
    // See Global Unlock Sample for sample code.

    Get Create (RefClass(cComChilkatHttp)) To hoHttp
    If (Not(IsComObjectCreated(hoHttp))) Begin
        Send CreateComObject of hoHttp
    End

    Get Create (RefClass(cComChilkatHttpRequest)) To hoReq
    If (Not(IsComObjectCreated(hoReq))) Begin
        Send CreateComObject of hoReq
    End
    Set ComHttpVerb Of hoReq To "PUT"
    Set ComPath Of hoReq To "/v2/users/:userId/presence_status"
    Set ComContentType Of hoReq To "multipart/form-data"
    Send ComAddParam To hoReq "status" "Available"

    Send ComAddParam To hoReq "duration" "Available1221"

    Send ComAddHeader To hoReq "Authorization" "Bearer <access_token>"

    Get pvComObject of hoReq to vReq
    Get ComSynchronousRequest Of hoHttp "api.zoom.us" 443 True vReq To vResp
    If (IsComObject(vResp)) Begin
        Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
        Set pvComObject Of hoResp To vResp
    End
    Get ComLastMethodSuccess Of hoHttp To bTemp1
    If (bTemp1 = False) Begin
        Get ComLastErrorText Of hoHttp To sTemp1
        Showln sTemp1
        Procedure_Return
    End

    Get Create (RefClass(cComChilkatStringBuilder)) To hoSbResponseBody
    If (Not(IsComObjectCreated(hoSbResponseBody))) Begin
        Send CreateComObject of hoSbResponseBody
    End
    Get pvComObject of hoSbResponseBody to vSbResponseBody
    Get ComGetBodySb Of hoResp vSbResponseBody To iSuccess

    Get Create (RefClass(cComChilkatJsonObject)) To hoJResp
    If (Not(IsComObjectCreated(hoJResp))) Begin
        Send CreateComObject of hoJResp
    End
    Get pvComObject of hoSbResponseBody to vSbResponseBody
    Get ComLoadSb Of hoJResp vSbResponseBody To iSuccess
    Set ComEmitCompact Of hoJResp To False

    Showln "Response Body:"
    Get ComEmit Of hoJResp To sTemp1
    Showln sTemp1

    Get ComStatusCode Of hoResp To iRespStatusCode
    Showln "Response Status Code = " iRespStatusCode
    If (iRespStatusCode >= 400) Begin
        Showln "Response Header:"
        Get ComHeader Of hoResp To sTemp1
        Showln sTemp1
        Showln "Failed."
        Send Destroy of hoResp
        Procedure_Return
    End

    Send Destroy of hoResp


End_Procedure

Curl Command

curl -X PUT
	-H "Authorization: Bearer <access_token>"
	-H "Content-Type: multipart/form-data"
	--form 'status=Available'
	--form 'duration=Available1221'
https://api.zoom.us/v2/users/:userId/presence_status

Postman Collection Item JSON

{
  "name": "Update a user's presence status",
  "request": {
    "method": "PUT",
    "header": [
      {
        "key": "Content-Type",
        "value": "multipart/form-data"
      }
    ],
    "body": {
      "mode": "formdata",
      "formdata": [
        {
          "key": "status",
          "value": "Available",
          "description": "Presence status of the user. The value can be set to one of the following:<br>\n* `Away`\n* `Do_Not_Disturb`\n* `Available`\n* `In_Calendar_Event`\n* `Presenting`\n* `In_A_Zoom_Meeting`\n* `On_A_Call`\n\nUsers who are on Zoom Client with a version **lower than 5.3.0** can update the status from:\n* `Away` to `Do_Not_Disturb` \n* `Available` to `Do_Not_Disturb`\n\nUsers who are on **Zoom Client 5.3.0** or higher can update the status from:\n* `Do_Not_Disturb` to `Away`\n* `Do_Not_Disturb` to `Available`\n* `Available` to `Away`\n* `Away` to `Available` (This can only be one of Do_No_Disturb,Away,Available,In_Calendar_Event,Presenting,In_A_Zoom_Meeting,On_A_Call)",
          "type": "text"
        },
        {
          "key": "duration",
          "value": "1221",
          "description": "If you're updating the status to `Do_Not_Disturb`, specify a duration in minutes for which the status should remain as `Do_Not_Disturb`. \n\nThe default value is 20 minutes and the maximum allowed value is 1440 minutes.",
          "type": "text"
        }
      ]
    },
    "url": {
      "raw": "{{baseUrl}}/users/:userId/presence_status",
      "host": [
        "{{baseUrl}}"
      ],
      "path": [
        "users",
        ":userId",
        "presence_status"
      ],
      "variable": [
        {
          "key": "userId"
        }
      ]
    },
    "description": "Use this API to update a user's presence status. For user-level apps, pass [the `me` value](https://marketplace.zoom.us/docs/api-reference/using-zoom-apis#mekeyword) instead of the `userId` parameter.\n\nA user's status **cannot** be updated more than once per minute. For example, you can only submit a maximum of one update request per minute for a single user.\n\nUsers in the Zoom desktop client and mobile apps are assigned with a [presence status](https://support.zoom.us/hc/en-us/articles/360032554051-Status-Icons). The presence status informs users of their contact's availability. Users can also change their own presence status to one the following:\n* **Away**\n* **Do not disturb**\n* **Available**\n* **In a calendar event**\n* **Presenting**\n* **In a Zoom meeting**\n* **On a call**\n\nNote that a user's presence status **cannot** be updated via this API if the user is not logged in to the Zoom client.\n\n**Scopes:** `user:write`, `user:write:admin`<br>**[Rate Limit Label](https://marketplace.zoom.us/docs/api-reference/rate-limits#rate-limits):** `Medium`"
  },
  "response": [
    {
      "name": "**HTTP Status Code:** `204`<br>\n\nStatus updated succesfully.\n",
      "originalRequest": {
        "method": "PUT",
        "header": [
          {
            "description": "Added as a part of security scheme: oauth2",
            "key": "Authorization",
            "value": "<token>"
          }
        ],
        "body": {
          "mode": "formdata",
          "formdata": [
            {
              "key": "status",
              "value": "Available",
              "description": "Presence status of the user. The value can be set to one of the following:<br>\n* `Away`\n* `Do_Not_Disturb`\n* `Available`\n* `In_Calendar_Event`\n* `Presenting`\n* `In_A_Zoom_Meeting`\n* `On_A_Call`\n\nUsers who are on Zoom Client with a version **lower than 5.3.0** can update the status from:\n* `Away` to `Do_Not_Disturb` \n* `Available` to `Do_Not_Disturb`\n\nUsers who are on **Zoom Client 5.3.0** or higher can update the status from:\n* `Do_Not_Disturb` to `Away`\n* `Do_Not_Disturb` to `Available`\n* `Available` to `Away`\n* `Away` to `Available` (This can only be one of Do_No_Disturb,Away,Available,In_Calendar_Event,Presenting,In_A_Zoom_Meeting,On_A_Call)",
              "type": "text"
            },
            {
              "key": "duration",
              "value": "1221",
              "description": "If you're updating the status to `Do_Not_Disturb`, specify a duration in minutes for which the status should remain as `Do_Not_Disturb`. \n\nThe default value is 20 minutes and the maximum allowed value is 1440 minutes.",
              "type": "text"
            }
          ]
        },
        "url": {
          "raw": "{{baseUrl}}/users/:userId/presence_status",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "users",
            ":userId",
            "presence_status"
          ],
          "variable": [
            {
              "key": "userId"
            }
          ]
        }
      },
      "status": "No Content",
      "code": 204,
      "_postman_previewlanguage": "json",
      "header": [
        {
          "key": "Content-Type",
          "value": "application/json"
        }
      ],
      "cookie": [
      ],
      "body": "{}"
    },
    {
      "name": "**HTTP Status Code:** `400` **Bad Request**<br>\n**Error Code:** `5301`<br>\nRequest to update the presence status of this user failed.<br>\n**Error Code:** `5411`<br>\nUnauthorized request. You do not have permission to update the presence status of this use",
      "originalRequest": {
        "method": "PUT",
        "header": [
          {
            "description": "Added as a part of security scheme: oauth2",
            "key": "Authorization",
            "value": "<token>"
          }
        ],
        "body": {
          "mode": "formdata",
          "formdata": [
            {
              "key": "status",
              "value": "Available",
              "description": "Presence status of the user. The value can be set to one of the following:<br>\n* `Away`\n* `Do_Not_Disturb`\n* `Available`\n* `In_Calendar_Event`\n* `Presenting`\n* `In_A_Zoom_Meeting`\n* `On_A_Call`\n\nUsers who are on Zoom Client with a version **lower than 5.3.0** can update the status from:\n* `Away` to `Do_Not_Disturb` \n* `Available` to `Do_Not_Disturb`\n\nUsers who are on **Zoom Client 5.3.0** or higher can update the status from:\n* `Do_Not_Disturb` to `Away`\n* `Do_Not_Disturb` to `Available`\n* `Available` to `Away`\n* `Away` to `Available` (This can only be one of Do_No_Disturb,Away,Available,In_Calendar_Event,Presenting,In_A_Zoom_Meeting,On_A_Call)",
              "type": "text"
            },
            {
              "key": "duration",
              "value": "1221",
              "description": "If you're updating the status to `Do_Not_Disturb`, specify a duration in minutes for which the status should remain as `Do_Not_Disturb`. \n\nThe default value is 20 minutes and the maximum allowed value is 1440 minutes.",
              "type": "text"
            }
          ]
        },
        "url": {
          "raw": "{{baseUrl}}/users/:userId/presence_status",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "users",
            ":userId",
            "presence_status"
          ],
          "variable": [
            {
              "key": "userId"
            }
          ]
        }
      },
      "status": "Bad Request",
      "code": 400,
      "_postman_previewlanguage": "text",
      "header": [
        {
          "key": "Content-Type",
          "value": "text/plain"
        }
      ],
      "cookie": [
      ],
      "body": ""
    },
    {
      "name": "**HTTP Status Code:** `404` **Not Found**<br>\n**Error Code:** `1001`<br>\nUser does not exist: {userId}.\n\n\n\n",
      "originalRequest": {
        "method": "PUT",
        "header": [
          {
            "description": "Added as a part of security scheme: oauth2",
            "key": "Authorization",
            "value": "<token>"
          }
        ],
        "body": {
          "mode": "formdata",
          "formdata": [
            {
              "key": "status",
              "value": "Available",
              "description": "Presence status of the user. The value can be set to one of the following:<br>\n* `Away`\n* `Do_Not_Disturb`\n* `Available`\n* `In_Calendar_Event`\n* `Presenting`\n* `In_A_Zoom_Meeting`\n* `On_A_Call`\n\nUsers who are on Zoom Client with a version **lower than 5.3.0** can update the status from:\n* `Away` to `Do_Not_Disturb` \n* `Available` to `Do_Not_Disturb`\n\nUsers who are on **Zoom Client 5.3.0** or higher can update the status from:\n* `Do_Not_Disturb` to `Away`\n* `Do_Not_Disturb` to `Available`\n* `Available` to `Away`\n* `Away` to `Available` (This can only be one of Do_No_Disturb,Away,Available,In_Calendar_Event,Presenting,In_A_Zoom_Meeting,On_A_Call)",
              "type": "text"
            },
            {
              "key": "duration",
              "value": "1221",
              "description": "If you're updating the status to `Do_Not_Disturb`, specify a duration in minutes for which the status should remain as `Do_Not_Disturb`. \n\nThe default value is 20 minutes and the maximum allowed value is 1440 minutes.",
              "type": "text"
            }
          ]
        },
        "url": {
          "raw": "{{baseUrl}}/users/:userId/presence_status",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "users",
            ":userId",
            "presence_status"
          ],
          "variable": [
            {
              "key": "userId"
            }
          ]
        }
      },
      "status": "Not Found",
      "code": 404,
      "_postman_previewlanguage": "text",
      "header": [
        {
          "key": "Content-Type",
          "value": "text/plain"
        }
      ],
      "cookie": [
      ],
      "body": ""
    },
    {
      "name": "**HTTP Status Code:** `429` **Too Many Requests**<br>\nToo many requests submitted to update the presence status of this user. Please wait for the request to be processed and try again later.",
      "originalRequest": {
        "method": "PUT",
        "header": [
          {
            "description": "Added as a part of security scheme: oauth2",
            "key": "Authorization",
            "value": "<token>"
          }
        ],
        "body": {
          "mode": "formdata",
          "formdata": [
            {
              "key": "status",
              "value": "Available",
              "description": "Presence status of the user. The value can be set to one of the following:<br>\n* `Away`\n* `Do_Not_Disturb`\n* `Available`\n* `In_Calendar_Event`\n* `Presenting`\n* `In_A_Zoom_Meeting`\n* `On_A_Call`\n\nUsers who are on Zoom Client with a version **lower than 5.3.0** can update the status from:\n* `Away` to `Do_Not_Disturb` \n* `Available` to `Do_Not_Disturb`\n\nUsers who are on **Zoom Client 5.3.0** or higher can update the status from:\n* `Do_Not_Disturb` to `Away`\n* `Do_Not_Disturb` to `Available`\n* `Available` to `Away`\n* `Away` to `Available` (This can only be one of Do_No_Disturb,Away,Available,In_Calendar_Event,Presenting,In_A_Zoom_Meeting,On_A_Call)",
              "type": "text"
            },
            {
              "key": "duration",
              "value": "1221",
              "description": "If you're updating the status to `Do_Not_Disturb`, specify a duration in minutes for which the status should remain as `Do_Not_Disturb`. \n\nThe default value is 20 minutes and the maximum allowed value is 1440 minutes.",
              "type": "text"
            }
          ]
        },
        "url": {
          "raw": "{{baseUrl}}/users/:userId/presence_status",
          "host": [
            "{{baseUrl}}"
          ],
          "path": [
            "users",
            ":userId",
            "presence_status"
          ],
          "variable": [
            {
              "key": "userId"
            }
          ]
        }
      },
      "status": "Too Many Requests",
      "code": 429,
      "_postman_previewlanguage": "text",
      "header": [
        {
          "key": "Content-Type",
          "value": "text/plain"
        }
      ],
      "cookie": [
      ],
      "body": ""
    }
  ]
}