---
title: "Update a webhook publisher configuration"
method: PATCH
path: "/api/v1/webhook-publishers/{id}"
tags: ["webhook-publishers"]
---

# Update a webhook publisher configuration

`PATCH /api/v1/webhook-publishers/{id}`

## Path parameters

- `id` string, uuid, required

## Request body

- WebhookPublisherUpdateRequestDTO
  - `active` boolean — When false, no events are emitted through this publisher. The configuration is preserved.
  - `clientType` 'xapi', required
  - `config` object — Partial config patch — fields are merged onto the stored config before re-validation. Omit fields you do not want to change.
    - `actorIfiMode` 'mbox' | 'mbox_sha1sum' — Actor IFI mode: "mbox" sends learner emails to the LRS; "mbox_sha1sum" sends a hex SHA-1 of mailto:<email>.
    - `authBasicKey` string — HTTP Basic Auth key (LRS-issued). Empty string = keep the stored credential.
    - `authBasicSecret` string — HTTP Basic Auth secret (LRS-issued). Empty string = keep the stored credential.
    - `authMode` 'basic' | 'oauth2_client_credentials' — How to authenticate against the LRS: HTTP Basic, or an OAuth 2.0 client-credentials bearer token.
    - `lrsEndpointUrl` string, uri — Customer LRS xAPI endpoint, e.g. https://lrs.customer.com/xapi/
    - `oauthClientId` string — OAuth 2.0 client id. Empty string = keep the stored credential.
    - `oauthClientSecret` string — OAuth 2.0 client secret. Empty string = keep the stored credential.
    - `oauthScope` string — Optional OAuth 2.0 scope. The scope parameter is always sent; an empty string sends it blank.
    - `oauthTokenUrl` string — OAuth 2.0 token endpoint issuing the client-credentials bearer token. Empty string when the publisher is not in OAuth mode; the merged config is re-validated, so the URL rules apply there.
  - `name` string — Admin-supplied label for this publisher.

## Response `201`

- WebhookPublisherResponseDTO
  - `active` boolean, required
  - `clientType` 'xapi', required
  - `config` object, required
    - `actorIfiMode` 'mbox' | 'mbox_sha1sum', required
    - `authMode` 'basic' | 'oauth2_client_credentials', required
    - `lrsEndpointUrl` string, uri, required
    - `oauthScope` string, required
    - `oauthTokenUrl` string, required
  - `createdAt` string, date-time, required
  - `id` string, uuid, required
  - `lastSuccessfulDeliveryAt` string, date-time, nullable, required
  - `lastUpdatedAt` string, date-time, required
  - `name` string, required
  - `organizationId` string, uuid, required
  - `pausedReason` string, nullable, required

---

[API](https://skmtc.net/wejam/apis/jam.md) · [All operations](https://skmtc.net/wejam/apis/jam/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/wejam/jam/revisions/bd5a5f406bca/schema)
