Skip to content

Products

Compliance Officer Service Expert-led compliance, end to end Compliance Portal Share security documents securely Open-source platform Deploy Probo on your own infrastructure

Resources

Probo stories How teams get compliant with Probo Blog Ideas and guidance from the Probo team Guides & tools Practical compliance guides and free tools Love from Customers What customers say about working with Probo Changelog Latest product updates Download Get the Probo Agent

Company

About The people and vision powering Probo Careers Join the team building Probo Brand assets Official logos and visual resources Security Review our security and compliance posture
Overview Understand Probo and its core concepts Product Explore Probo's GRC capabilities Developers Explore GraphQL, CLI, MCP, n8n, and webhooks Deployment Probo Cloud, self-hosting, and configuration

Explore

GitHub Explore our open-source compliance tools

Webhook Event Types

Reference for every Probo webhook event type and its data payload shape, covering third parties, users, obligations, rights requests, and the document lifecycle.

View as Markdown

This page is the payload lookup for webhook data (and updatedFrom on update events). For the root envelope, headers, and delivery behavior, see Delivery and recovery. For supported domains, see What webhooks cover.

Webhook bodies and the X-Probo-Webhook-Event header use lowercase wire names such as third-party:created. The console, CLI (prb webhook create --event), MCP, and n8n use uppercase enum names such as THIRD_PARTY_CREATED.

The wire prefix is right-request. CLI, MCP, and n8n resource names use rights-request for the product object; the event enum is still RIGHT_REQUEST_*.

Wire nameAPI / CLI enumDescription
third-party:createdTHIRD_PARTY_CREATEDA third party was created
third-party:updatedTHIRD_PARTY_UPDATEDA third party was updated
third-party:deletedTHIRD_PARTY_DELETEDA third party was deleted
Wire nameAPI / CLI enumDescription
user:createdUSER_CREATEDA user was created
user:updatedUSER_UPDATEDA user was updated
user:deletedUSER_DELETEDA user was deleted
Wire nameAPI / CLI enumDescription
obligation:createdOBLIGATION_CREATEDAn obligation was created
obligation:updatedOBLIGATION_UPDATEDAn obligation was updated
obligation:deletedOBLIGATION_DELETEDAn obligation was deleted
Wire nameAPI / CLI enumDescription
right-request:createdRIGHT_REQUEST_CREATEDA data subject rights request was created
right-request:updatedRIGHT_REQUEST_UPDATEDA data subject rights request was updated
right-request:deletedRIGHT_REQUEST_DELETEDA data subject rights request was deleted
Wire nameAPI / CLI enumDescription
document:createdDOCUMENT_CREATEDA document was created
document:updatedDOCUMENT_UPDATEDA document was updated
document:archivedDOCUMENT_ARCHIVEDA document was archived
document:unarchivedDOCUMENT_UNARCHIVEDA document was unarchived
document:deletedDOCUMENT_DELETEDA document was deleted
Wire nameAPI / CLI enumDescription
document-version:createdDOCUMENT_VERSION_CREATEDA document version was created
document-version:updatedDOCUMENT_VERSION_UPDATEDA document version was updated
document-version:publishedDOCUMENT_VERSION_PUBLISHEDA document version was published
document-version:rejectedDOCUMENT_VERSION_REJECTEDA document version was rejected
document-version:deletedDOCUMENT_VERSION_DELETEDA document version was deleted
Wire nameAPI / CLI enumDescription
document-version-signature:requestedDOCUMENT_VERSION_SIGNATURE_REQUESTEDA signature was requested
document-version-signature:signedDOCUMENT_VERSION_SIGNATURE_SIGNEDA signature was completed
document-version-signature:cancelledDOCUMENT_VERSION_SIGNATURE_CANCELLEDA signature request was cancelled
Wire nameAPI / CLI enumDescription
document-version-approval-quorum:requestedDOCUMENT_VERSION_APPROVAL_QUORUM_REQUESTEDAn approval quorum was requested
document-version-approval-quorum:updatedDOCUMENT_VERSION_APPROVAL_QUORUM_UPDATEDAn approval quorum was updated
document-version-approval-quorum:approvedDOCUMENT_VERSION_APPROVAL_QUORUM_APPROVEDAn approval quorum was approved
document-version-approval-quorum:rejectedDOCUMENT_VERSION_APPROVAL_QUORUM_REJECTEDAn approval quorum was rejected
document-version-approval-quorum:voidedDOCUMENT_VERSION_APPROVAL_QUORUM_VOIDEDAn approval quorum was voided

For any *:updated event, the payload includes:

  • data — the entity after the change
  • updatedFrom — a full snapshot of the same entity shape before the change

Non-update events omit updatedFrom.

The two objects have the same schema, which makes field-level comparisons safe:

if (event.eventType === "user:updated") {
const oldRole = event.updatedFrom.membership?.role;
const newRole = event.data.membership?.role;
if (oldRole !== newRole) {
await syncAccess(event.data.id, newRole);
}
}

Delete events carry the last resource snapshot captured before deletion. Lifecycle events such as archive, publish, sign, and approve carry the resource after that transition.

  • Timestamps are RFC 3339 strings.
  • Nullable values appear as null; fields are not omitted from resource objects.
  • Enum values are uppercase strings such as ACTIVE, PUBLISHED, or PENDING.
  • Arrays are present even when empty.
  • Receivers should ignore fields they do not recognize so additive schema changes remain compatible.

The data field (and updatedFrom when present) contains the resource that triggered the event.

Sent for third-party:created, third-party:updated, and third-party:deleted events.

{
"id": "thp_01DEF456",
"name": "Acme Cloud",
"category": "CLOUD_INFRASTRUCTURE",
"description": "Cloud hosting provider",
"statusPageUrl": "https://status.acme.cloud",
"termsOfServiceUrl": "https://acme.cloud/tos",
"privacyPolicyUrl": "https://acme.cloud/privacy",
"serviceLevelAgreementUrl": "https://acme.cloud/sla",
"dataProcessingAgreementUrl": null,
"businessAssociateAgreementUrl": null,
"subprocessorsListUrl": "https://acme.cloud/subprocessors",
"certifications": ["SOC2", "ISO27001"],
"countries": ["US", "DE"],
"securityPageUrl": "https://acme.cloud/security",
"trustPageUrl": "https://acme.cloud/trust",
"headquarterAddress": "123 Cloud St, San Francisco, CA",
"legalName": "Acme Cloud Inc.",
"websiteUrl": "https://acme.cloud",
"administratorIds": ["usr_01GHI789", "usr_01JKL012"],
"createdAt": "2026-01-05T10:00:00Z",
"updatedAt": "2026-01-05T10:00:00Z"
}
FieldTypeDescription
idstringThird party identifier
namestringThird party name
categorystringCategory
descriptionstring | nullDescription
statusPageUrlstring | nullStatus page URL
termsOfServiceUrlstring | nullTerms of service URL
privacyPolicyUrlstring | nullPrivacy policy URL
serviceLevelAgreementUrlstring | nullSLA URL
dataProcessingAgreementUrlstring | nullDPA URL
businessAssociateAgreementUrlstring | nullBAA URL
subprocessorsListUrlstring | nullSubprocessors list URL
certificationsstring[]List of certifications
countriesstring[]Country codes where the third party operates
securityPageUrlstring | nullSecurity page URL
trustPageUrlstring | nullTrust page URL
headquarterAddressstring | nullHeadquarters address
legalNamestring | nullLegal entity name
websiteUrlstring | nullWebsite URL
administratorIdsstring[]User IDs of third-party administrators
createdAtstringCreation timestamp (RFC 3339)
updatedAtstringLast update timestamp (RFC 3339)

Sent for user:created, user:updated, and user:deleted events.

{
"id": "usr_01GHI789",
"organizationId": "org_01MNO345",
"emailAddress": "jane@example.com",
"fullName": "Jane Doe",
"kind": "EMPLOYEE",
"source": "MANUAL",
"additionalEmailAddresses": ["jane.doe@example.com"],
"position": "Security Engineer",
"contractStartDate": "2024-01-15T00:00:00Z",
"contractEndDate": null,
"createdAt": "2024-01-15T09:00:00Z",
"updatedAt": "2026-02-01T11:00:00Z",
"membership": {
"id": "mem_01ABC123",
"role": "ADMIN",
"state": "ACTIVE"
}
}
FieldTypeDescription
idstringUser identifier
organizationIdstringOrganization identifier
emailAddressstringPrimary email address
fullNamestringFull name
kindstring | nullUser kind (e.g. EMPLOYEE)
sourcestringProfile source: MANUAL, SAML, or SCIM
additionalEmailAddressesstring[]Additional email addresses
positionstring | nullJob position
contractStartDatestring | nullContract start date (RFC 3339)
contractEndDatestring | nullContract end date (RFC 3339)
createdAtstringCreation timestamp (RFC 3339)
updatedAtstringLast update timestamp (RFC 3339)
membershipobject | nullMembership details when present
membership.idstringMembership identifier
membership.rolestringMembership role: OWNER, ADMIN, EMPLOYEE, or VIEWER
membership.statestringProfile state: PENDING, ACTIVE, or DEACTIVATED

Sent for obligation:created, obligation:updated, and obligation:deleted events.

{
"id": "obl_01PQR678",
"organizationId": "org_01MNO345",
"area": "Data Protection",
"source": "GDPR",
"requirement": "Maintain records of processing activities",
"actionsToBeImplemented": "Implement ROPA template and quarterly review",
"regulator": "CNIL",
"ownerId": "usr_01GHI789",
"lastReviewDate": "2026-01-01T00:00:00Z",
"dueDate": "2026-06-30T00:00:00Z",
"status": "COMPLIANT",
"type": "LEGAL",
"createdAt": "2024-06-01T10:00:00Z",
"updatedAt": "2026-01-15T14:00:00Z"
}
FieldTypeDescription
idstringObligation identifier
organizationIdstringOrganization identifier
areastring | nullCompliance area
sourcestring | nullRegulatory source
requirementstring | nullRequirement description
actionsToBeImplementedstring | nullRequired actions
regulatorstring | nullRegulatory body
ownerIdstringOwner user ID
lastReviewDatestring | nullLast review date (RFC 3339)
dueDatestring | nullDue date (RFC 3339)
statusstringNON_COMPLIANT, PARTIALLY_COMPLIANT, or COMPLIANT
typestringLEGAL or CONTRACTUAL
createdAtstringCreation timestamp (RFC 3339)
updatedAtstringLast update timestamp (RFC 3339)

Sent for right-request:created, right-request:updated, and right-request:deleted events.

{
"id": "rr_01STU901",
"organizationId": "org_01MNO345",
"requestType": "ACCESS",
"requestState": "TODO",
"dataSubject": "Jane Doe",
"contact": "jane@example.com",
"details": "Please provide a copy of my personal data.",
"deadline": "2026-08-15T00:00:00Z",
"actionTaken": null,
"createdAt": "2026-07-20T10:00:00Z",
"updatedAt": "2026-07-20T10:00:00Z"
}
FieldTypeDescription
idstringRights request identifier
organizationIdstringOrganization identifier
requestTypestringACCESS, DELETION, RECTIFICATION, PORTABILITY, OBJECTION, or COMPLAINT
requestStatestringTODO, IN_PROGRESS, DONE, or REJECTED
dataSubjectstring | nullData subject name
contactstring | nullContact details
detailsstring | nullRequest details
deadlinestring | nullResponse deadline (RFC 3339)
actionTakenstring | nullActions taken
createdAtstringCreation timestamp (RFC 3339)
updatedAtstringLast update timestamp (RFC 3339)

Sent for document:created, document:updated, document:archived, document:unarchived, and document:deleted events.

{
"id": "doc_01VWX234",
"organizationId": "org_01MNO345",
"title": "Information Security Policy",
"documentType": "POLICY",
"status": "ACTIVE",
"currentPublishedMajor": 1,
"currentPublishedMinor": 0,
"archivedAt": null,
"createdAt": "2026-01-10T09:00:00Z",
"updatedAt": "2026-07-02T11:00:00Z"
}
FieldTypeDescription
idstringDocument identifier
organizationIdstringOrganization identifier
titlestringDocument title
documentTypestringOTHER, GOVERNANCE, POLICY, PROCEDURE, PLAN, REGISTER, RECORD, REPORT, TEMPLATE, or STATEMENT_OF_APPLICABILITY
statusstringACTIVE or ARCHIVED
currentPublishedMajornumber | nullCurrent published major version
currentPublishedMinornumber | nullCurrent published minor version
archivedAtstring | nullArchive timestamp (RFC 3339)
createdAtstringCreation timestamp (RFC 3339)
updatedAtstringLast update timestamp (RFC 3339)

Sent for document-version:* events. Includes the nested parent document.

{
"id": "docv_01YZA567",
"documentId": "doc_01VWX234",
"title": "Information Security Policy",
"major": 1,
"minor": 1,
"classification": "INTERNAL",
"documentType": "POLICY",
"changelog": "Updated remote work section",
"status": "DRAFT",
"publishedAt": null,
"createdAt": "2026-07-02T11:00:00Z",
"updatedAt": "2026-07-02T11:00:00Z",
"document": {
"id": "doc_01VWX234",
"organizationId": "org_01MNO345",
"title": "Information Security Policy",
"documentType": "POLICY",
"status": "ACTIVE",
"currentPublishedMajor": 1,
"currentPublishedMinor": 0,
"archivedAt": null,
"createdAt": "2026-01-10T09:00:00Z",
"updatedAt": "2026-07-02T11:00:00Z"
}
}
FieldTypeDescription
idstringDocument version identifier
documentIdstringParent document identifier
titlestringVersion title
majornumberMajor version number
minornumberMinor version number
classificationstringPUBLIC, INTERNAL, CONFIDENTIAL, or SECRET
documentTypestringSame values as document documentType
changelogstringDescription of changes
statusstringDRAFT, PENDING_APPROVAL, or PUBLISHED
publishedAtstring | nullPublication timestamp (RFC 3339)
createdAtstringCreation timestamp (RFC 3339)
updatedAtstringLast update timestamp (RFC 3339)
documentobjectParent document snapshot

Sent for document-version-signature:* events. Includes the nested version (with its document).

{
"id": "docs_01BCD890",
"documentVersionId": "docv_01YZA567",
"state": "REQUESTED",
"signedBy": "usr_01GHI789",
"signedAt": null,
"requestedAt": "2026-07-02T12:00:00Z",
"createdAt": "2026-07-02T12:00:00Z",
"updatedAt": "2026-07-02T12:00:00Z",
"version": {
"id": "docv_01YZA567",
"documentId": "doc_01VWX234",
"title": "Information Security Policy",
"major": 1,
"minor": 1,
"classification": "INTERNAL",
"documentType": "POLICY",
"changelog": "Updated remote work section",
"status": "DRAFT",
"publishedAt": null,
"createdAt": "2026-07-02T11:00:00Z",
"updatedAt": "2026-07-02T11:00:00Z",
"document": {
"id": "doc_01VWX234",
"organizationId": "org_01MNO345",
"title": "Information Security Policy",
"documentType": "POLICY",
"status": "ACTIVE",
"currentPublishedMajor": 1,
"currentPublishedMinor": 0,
"archivedAt": null,
"createdAt": "2026-01-10T09:00:00Z",
"updatedAt": "2026-07-02T11:00:00Z"
}
}
}
FieldTypeDescription
idstringSignature identifier
documentVersionIdstringDocument version identifier
statestringREQUESTED or SIGNED
signedBystringUser ID of the signer
signedAtstring | nullWhen the document was signed
requestedAtstringWhen the signature was requested
createdAtstringCreation timestamp (RFC 3339)
updatedAtstringLast update timestamp (RFC 3339)
versionobjectNested document version snapshot

Sent for document-version-approval-quorum:* events. Includes decisions and the nested version.

{
"id": "daq_01EFG123",
"versionId": "docv_01YZA567",
"status": "PENDING",
"createdAt": "2026-07-02T13:00:00Z",
"updatedAt": "2026-07-02T13:00:00Z",
"decisions": [
{
"id": "dad_01HIJ456",
"approverId": "usr_01GHI789",
"state": "PENDING",
"comment": null,
"decidedAt": null,
"createdAt": "2026-07-02T13:00:00Z",
"updatedAt": "2026-07-02T13:00:00Z"
}
],
"version": {
"id": "docv_01YZA567",
"documentId": "doc_01VWX234",
"title": "Information Security Policy",
"major": 1,
"minor": 1,
"classification": "INTERNAL",
"documentType": "POLICY",
"changelog": "Updated remote work section",
"status": "DRAFT",
"publishedAt": null,
"createdAt": "2026-07-02T11:00:00Z",
"updatedAt": "2026-07-02T11:00:00Z",
"document": {
"id": "doc_01VWX234",
"organizationId": "org_01MNO345",
"title": "Information Security Policy",
"documentType": "POLICY",
"status": "ACTIVE",
"currentPublishedMajor": 1,
"currentPublishedMinor": 0,
"archivedAt": null,
"createdAt": "2026-01-10T09:00:00Z",
"updatedAt": "2026-07-02T11:00:00Z"
}
}
}
FieldTypeDescription
idstringApproval quorum identifier
versionIdstringDocument version identifier
statusstringPENDING, APPROVED, REJECTED, or VOIDED
createdAtstringCreation timestamp (RFC 3339)
updatedAtstringLast update timestamp (RFC 3339)
decisionsobject[]One decision object per approver
versionobjectNested document version snapshot

Each item in decisions has this shape:

FieldTypeDescription
idstringApproval decision identifier
approverIdstringApprover user identifier
statestringPENDING, APPROVED, REJECTED, or VOIDED
commentstring | nullComment supplied by the approver
decidedAtstring | nullDecision timestamp (RFC 3339)
createdAtstringCreation timestamp (RFC 3339)
updatedAtstringLast update timestamp (RFC 3339)