# Update Google Chat endpoint

Update components, endpoint URL, management email, paused, or locked state for a Google Chat endpoint.

Source: https://statusdashboard.com/docs/api/integrations/gchat/endpoints/update

`PATCH /app/integrations/gchat/endpoints`

Updates a Google Chat endpoint identified by `dashboardId` + `urlHash`. Provide at least one of `componentIds`, `url`, `managementEmail`, `paused`, or `locked`.

Requires the `admin` or `subscriber` role and the **integrations** feature entitlement.

When `url` changes, StatusDashboard re-validates the new endpoint and migrates keys derived from the hash. The response reports the resulting `urlHash` (and `urlDisplay`). The full URL is not returned on update.

***

## Request
See [API Basics](/docs/api) for required headers.

### Request body
| Field             | Type    | Required | Description                                            |
| ----------------- | ------- | -------- | ------------------------------------------------------ |
| `dashboardId`     | uuid    | Yes      | Dashboard the subscription belongs to                  |
| `urlHash`         | string  | Yes      | Current 64-character lowercase hex endpoint hash       |
| `componentIds`    | uuid\[] | No       | Replacement component set (at least one when provided) |
| `url`             | string  | No       | Replacement HTTPS endpoint URL                         |
| `managementEmail` | string  | No       | Replacement management email                           |
| `paused`          | boolean | No       | Pause or resume notifications                          |
| `locked`          | boolean | No       | Admin-managed flag                                     |

***

## Sample request
```bash
curl -X PATCH https://api.statusdashboard.com/app/integrations/gchat/endpoints \
  -H "Authorization: Bearer bcf847abf5c6:def456" \
  -H "Content-Type: application/json" \
  -d '{
    "dashboardId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "urlHash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "componentIds": ["b2c3d4e5-f6a7-8901-bcde-f12345678901", "c3d4e5f6-a7b8-9012-cdef-123456789012"],
    "paused": false
  }'
```

## Sample response
**Status: `200 OK`**

```json
{
  "endpoint": {
    "channel": "gchat",
    "dashboardId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "dashboardName": "Acme Status",
    "urlHash": "e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855",
    "urlDisplay": "chat.googleapis.com/v1?…",
    "managementEmail": "ops@acme.com",
    "verified": true,
    "verifiedAt": "2026-06-01T14:22:00.000Z",
    "paused": false,
    "locked": false,
    "suppressed": false,
    "componentIds": ["b2c3d4e5-f6a7-8901-bcde-f12345678901", "c3d4e5f6-a7b8-9012-cdef-123456789012"],
    "consecutiveFailures": 0,
    "createdAt": "2026-06-01T14:22:00.000Z",
    "updatedAt": "2026-06-01T15:10:00.000Z"
  }
}
```

***

## Error responses
| Status | When                                                                                                     |
| ------ | -------------------------------------------------------------------------------------------------------- |
| `400`  | Invalid body, no updatable fields, invalid URL, or invalid component                                     |
| `403`  | Requires admin or subscriber role, integrations disabled, or unique-endpoint organization limit exceeded |
| `404`  | Subscriber or dashboard not found                                                                        |
| `409`  | URL uniqueness conflict                                                                                  |
