FruxonDocs
ApiParticipants

Partial update

Applies a partial update: only the non-null fields of the request are written, so callers can patch a single property without resending the whole resource. Supplying `Channels` replaces the channel list wholesale. `Kind` cannot be changed here. Agent bindings are managed through the nested `bindings` sub-resource, not this endpoint.

PATCH
/v1/tenants/{tenant}/participants/{participant}
AuthorizationBearer <token>

JWT Authorization header using the Bearer scheme. Enter 'Bearer' [space] and then your token.

In: header

Path Parameters

participant*string

The participant identifier.

Formatuuid
tenant*string

The tenant identifier

The patch payload — null fields are left unchanged.

displayName?string|null
Lengthlength <= 150
email?string|null
Lengthlength <= 4000
relatedAgentId?string|null
avatarFileId?string|null

Operator-uploaded avatar. Patch semantics: null leaves the existing value alone; an empty string clears it (e.g. when the operator removes the upload). To match this, the service treats the empty string as "explicit clear" rather than coalescing it.

channels?|null

When provided, replaces the participant's channel list entirely. Pass null to leave unchanged; pass an empty list to clear.

agentIds?|null

When provided, reconciles agent bindings to exactly this set in the same call as the rest of the patch — additions and removals are computed against the current bindings. Pass null to leave bindings unchanged; pass an empty list to unbind every agent.

Closes the partial-commit window the FE used to fall into: when the participant dialog used to write the participant PATCH and then fan-out individual PUT/DELETE /bindings/{agent} calls in parallel, a single failing binding op left the operator with a half-applied state. With this field, both the entity update and the binding reconciliation run inside one service call — the granular per-binding endpoints stay for callers that prefer them.

[key: string]?never

Response Body

curl -X PATCH "https://api.fruxon.com/v1/tenants/string/participants/497f6eca-6276-4993-bfeb-53cbbbba6f08" \  -H "Content-Type: application/json" \  -d '{}'
{
  "id": "00000000-0000-0000-0000-000000000000",
  "kind": "PERSON",
  "displayName": "string",
  "email": "string",
  "relatedAgentId": "string",
  "channels": [
    {
      "integrationConfigId": "00000000-0000-0000-0000-000000000000",
      "address": "string",
      "priority": 0,
      "label": "string",
      "disabled": false
    }
  ],
  "agentIds": [
    "string"
  ],
  "disabledAt": 0,
  "health": {
    "reachable": false,
    "channels": [
      {
        "address": "string",
        "reason": null,
        "keyStatus": "UNSPECIFIED",
        "keyPrefix": "string",
        "lastMessageAt": null
      }
    ],
    "reason": "INVALID_FORMAT"
  },
  "channelActivations": [
    {
      "agentId": "string",
      "bindingId": "00000000-0000-0000-0000-000000000000",
      "integrationConfigId": "00000000-0000-0000-0000-000000000000",
      "provider": "string",
      "address": "string",
      "webhookUrl": "string",
      "webhookUrlTemplate": "string",
      "webhookKeyPrefix": "string",
      "scope": "PER_BINDING"
    }
  ],
  "avatarFileId": "string",
  "createdAt": 0,
  "modifiedAt": 0
}
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "property1": null,
  "property2": null
}
Empty
Empty
{
  "type": "string",
  "title": "string",
  "status": 0,
  "detail": "string",
  "instance": "string",
  "property1": null,
  "property2": null
}