Skip to main content

Audit Event Reference

This is a reference for audit events emitted by Specmatic Insights.

For UI navigation and export setup workflows, see Audit Trail.

Reading Guide​

  • type is the stable contract key for programmatic handling.
  • details is event-specific; fields may be absent unless explicitly documented for that type.
  • summary is human-readable and non-contractual; do not parse it for automation.

Event Format​

Top-level fields:

field namedata typedescription
iduuidUnique audit event ID.
typestring (enum)Audit event type (for example AUTH_LOGIN_SUCCESS).
timestampstring (ISO-8601 UTC datetime)Event timestamp in UTC.
severitystring (enum)One of INFO, WARN, ERROR.
summarystringHuman-readable event summary.
actorTypestring (enum)One of SYSTEM, USER, LICENSE, LEGACY_INSIGHTS_BUILD_REPORTER.
actorIdstring | nullActor identifier when available. Typically a UUID string; for unauthenticated-user flows this is the literal "(unauthenticated)".
actorDisplaystring | nullActor display value (for example email) when available.
sourceIpstring | nullSource IP when available.
targetTypestring | nullTarget entity type when applicable. One of USER, ORGANIZATION, SCIM_GROUP, BUILD, SERVICE_BUILD_REPORT, LICENSE.
targetIdstring | nullTarget entity identifier when applicable. Treat this as an opaque string in downstream processing.
detailsobjectEvent-specific payload. Shape depends on type. Present as {} when no event-specific keys are defined.

Request context fields:

field namedata typedescription
destinationHostnamestringDestination hostname recorded for the request context. Always present.
httpUserAgentstring | nullHTTP user agent when available. For build submissions and license refresh/poll requests, this contains the version of Specmatic making the call.
httpRefererstring | nullHTTP referer when available.
httpMethodstring | nullHTTP method when available.
httpProtocolstring | nullRequest protocol (typically http or https) when available.
httpPortnumber | nullRequest port when available (for example 80, 443).
httpUrlstring | nullRequest path with query string (no scheme, host, or port).

Default severity behavior:

field namedata typedescription
severity for AUTH_LOGIN_FAILEDstringAlways WARN.
severity for AUDIT_EXPORT_FAILEDstringAlways ERROR.
severity for all other event typesstringDefaults to INFO.

details.error and details.exception are operational diagnostics. Treat these as non-contractual and potentially sensitive in downstream systems.

Event Categories and Details​

Authentication​

AUTH_LOGIN_SUCCESS​

Emitted when authentication succeeds (password login or SSO).

Allowed values:

  • details.authMethod: password, SAML, OIDC
field namedata typedescription
details.authMethodstringAuthentication method for the successful login (password, SAML, or OIDC).

Example event:

{
"id": "315f3f7f-59d5-43dd-b8b8-6f3f043ac2a5",
"type": "AUTH_LOGIN_SUCCESS",
"timestamp": "2026-03-10T10:15:30Z",
"severity": "INFO",
"summary": "User user@example.com logged in via OIDC.",
"actorType": "USER",
"actorId": "600a88a8-b41b-403c-8e0c-f462cfd94288",
"actorDisplay": "user@example.com",
"sourceIp": "203.0.113.10",
"targetType": "ORGANIZATION",
"targetId": "970ce194-6039-413a-9c6f-b514cee9cdff",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": "Mozilla/5.0",
"httpReferer": "https://insights.specmatic.io/login",
"httpMethod": "POST",
"httpProtocol": "https",
"httpPort": 443,
"httpUrl": "/api/auth/login",
"details": {
"authMethod": "OIDC"
}
}

AUTH_LOGIN_FAILED​

Emitted when authentication fails. details may vary by auth flow and failure point.

field namedata typedescription
details.errorstringError message for login failure.
details.authMethodstringAuthentication method for the failed login (password, SAML, or OIDC).
details.registrationIdstringPresent when the organization is resolved (for password failures and most SSO failures).
details.exceptionstringPresent for onboarding/internal failure variants to indicate exception type.

Example event:

{
"id": "d0ce4f17-b6d0-40cb-a3c7-5d6eaf279bac",
"type": "AUTH_LOGIN_FAILED",
"timestamp": "2026-03-10T10:16:10Z",
"severity": "WARN",
"summary": "Login failed for user@example.com",
"actorType": "USER",
"actorId": "600a88a8-b41b-403c-8e0c-f462cfd94288",
"actorDisplay": "user@example.com",
"sourceIp": "203.0.113.11",
"targetType": "ORGANIZATION",
"targetId": "970ce194-6039-413a-9c6f-b514cee9cdff",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": "Mozilla/5.0",
"httpReferer": "https://insights.specmatic.io/login",
"httpMethod": "POST",
"httpProtocol": "https",
"httpPort": 443,
"httpUrl": "/api/auth/login",
"details": {
"error": "Bad credentials",
"authMethod": "password"
}
}

AUTH_LOGOUT​

Emitted when a logged-in user signs out successfully.

field namedata typedescription
detailsobjectNo fixed details fields are currently defined; currently emitted as {}.

Example event:

{
"id": "521f870f-15ee-4195-a203-63d7c9521db2",
"type": "AUTH_LOGOUT",
"timestamp": "2026-03-10T10:20:00Z",
"severity": "INFO",
"summary": "User user@example.com logged out",
"actorType": "USER",
"actorId": "600a88a8-b41b-403c-8e0c-f462cfd94288",
"actorDisplay": "user@example.com",
"sourceIp": "203.0.113.10",
"targetType": "ORGANIZATION",
"targetId": "970ce194-6039-413a-9c6f-b514cee9cdff",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": "Mozilla/5.0",
"httpReferer": "https://insights.specmatic.io/settings/profile",
"httpMethod": "POST",
"httpProtocol": "https",
"httpPort": 443,
"httpUrl": "/api/auth/logout",
"details": {
}
}

User Lifecycle​

USER_CREATED​

Emitted when a new user account is created (for example invite flow or first-time SSO onboarding).

field namedata typedescription
detailsobjectUsually {} for invite flow.
details.authMethodstringPresent for SSO-created users (SAML or OIDC) to indicate which auth method created the user.

Example event:

{
"id": "fd499cb3-2f7d-43f7-a99b-a7d8678e0f80",
"type": "USER_CREATED",
"timestamp": "2026-03-10T10:25:00Z",
"severity": "INFO",
"summary": "User invitee@example.com created",
"actorType": "USER",
"actorId": "600a88a8-b41b-403c-8e0c-f462cfd94288",
"actorDisplay": "admin@example.com",
"sourceIp": "203.0.113.20",
"targetType": "USER",
"targetId": "9e531045-84b7-46cc-9318-0905c40c122f",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": "Mozilla/5.0",
"httpReferer": "https://insights.specmatic.io/settings/users",
"httpMethod": "POST",
"httpProtocol": "https",
"httpPort": 443,
"httpUrl": "/api/organizations/970ce194-6039-413a-9c6f-b514cee9cdff/invite",
"details": {
}
}

USER_INVITED_TO_ORG​

Emitted when a user is invited to join an organization through the invite flow. This event captures the invitation action itself, before the invited user actually joins the organization.

field namedata typedescription
targetTypestringORGANIZATION.
targetIdstringOrganization ID where the invitation was initiated.
detailsobjectNo fixed details fields are currently defined; currently emitted as {}.

Example event:

{
"id": "75f496fc-9ca2-4f8a-af59-f4fdbe7d5f73",
"type": "USER_INVITED_TO_ORG",
"timestamp": "2026-03-10T10:26:00Z",
"severity": "INFO",
"summary": "User invitee@example.com invited to Acme Corp by admin@example.com",
"actorType": "USER",
"actorId": "600a88a8-b41b-403c-8e0c-f462cfd94288",
"actorDisplay": "admin@example.com",
"sourceIp": "203.0.113.20",
"targetType": "ORGANIZATION",
"targetId": "970ce194-6039-413a-9c6f-b514cee9cdff",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": "Mozilla/5.0",
"httpReferer": "https://insights.specmatic.io/settings/users",
"httpMethod": "POST",
"httpProtocol": "https",
"httpPort": 443,
"httpUrl": "/api/organizations/970ce194-6039-413a-9c6f-b514cee9cdff/invite",
"details": {}
}

USER_ADDED_TO_ORG​

Emitted when a user is added to an organization. This includes organization creation flows and SSO onboarding flows that add the user to the organization on first login.

field namedata typedescription
targetTypestringORGANIZATION.
targetIdstringOrganization ID where the user was added.
detailsobjectUsually {} for org-create/invite paths.
details.authMethodstringPresent for SSO onboarding-created additions (SAML or OIDC) to indicate which auth method path.

Example event:

{
"id": "75f496fc-9ca2-4f8a-af59-f4fdbe7d5f73",
"type": "USER_ADDED_TO_ORG",
"timestamp": "2026-03-10T10:26:00Z",
"severity": "INFO",
"summary": "User invitee@example.com added to Acme Corp",
"actorType": "USER",
"actorId": "600a88a8-b41b-403c-8e0c-f462cfd94288",
"actorDisplay": "admin@example.com",
"sourceIp": "203.0.113.20",
"targetType": "ORGANIZATION",
"targetId": "970ce194-6039-413a-9c6f-b514cee9cdff",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": "Mozilla/5.0",
"httpReferer": "https://insights.specmatic.io/settings/users",
"httpMethod": "POST",
"httpProtocol": "https",
"httpPort": 443,
"httpUrl": "/api/organizations/970ce194-6039-413a-9c6f-b514cee9cdff/invite",
"details": {
}
}

USER_REMOVED_FROM_ORG​

Emitted when a user is removed from the organization. For bulk remove requests, events are emitted only for entries with a successful REMOVED outcome.

field namedata typedescription
details.idstringRequested user ID for this event.
details.emailstringRequested user email for this event.

Example event:

{
"id": "a5db1f1b-a2ff-41d0-b0d3-8a12ea40dc06",
"type": "USER_REMOVED_FROM_ORG",
"timestamp": "2026-03-10T10:27:00Z",
"severity": "INFO",
"summary": "User user@example.com removed from organization by admin@example.com",
"actorType": "USER",
"actorId": "600a88a8-b41b-403c-8e0c-f462cfd94288",
"actorDisplay": "admin@example.com",
"sourceIp": "203.0.113.20",
"targetType": "ORGANIZATION",
"targetId": "970ce194-6039-413a-9c6f-b514cee9cdff",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": "Mozilla/5.0",
"httpReferer": "https://insights.specmatic.io/settings/users",
"httpMethod": "POST",
"httpProtocol": "https",
"httpPort": 443,
"httpUrl": "/api/organizations/970ce194-6039-413a-9c6f-b514cee9cdff/users/remove/bulk",
"details": {
"id": "9e531045-84b7-46cc-9318-0905c40c122f",
"email": "user@example.com"
}
}

USER_ROLE_CHANGED​

Emitted when a user's role is changed (for example via bulk role update in collaborators settings). For bulk role updates, one event is emitted for each successful role change.

field namedata typedescription
details.idstringUser ID whose role changed.
details.emailstringUser email whose role changed.
details.oldRolestringPrevious role (USER, ORG_ADMIN, or SUPER_ADMIN).
details.newRolestringNew role (USER, ORG_ADMIN, or SUPER_ADMIN).

Example event:

{
"id": "8d808c5f-1e20-4cb3-91ad-f9879f12a957",
"type": "USER_ROLE_CHANGED",
"timestamp": "2026-03-10T10:27:30Z",
"severity": "INFO",
"summary": "User user@example.com role changed from USER to ORG_ADMIN by admin@example.com",
"actorType": "USER",
"actorId": "600a88a8-b41b-403c-8e0c-f462cfd94288",
"actorDisplay": "admin@example.com",
"sourceIp": "203.0.113.20",
"targetType": "USER",
"targetId": "9e531045-84b7-46cc-9318-0905c40c122f",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": "Mozilla/5.0",
"httpReferer": "https://insights.specmatic.io/settings/collaborators",
"httpMethod": "POST",
"httpProtocol": "https",
"httpPort": 443,
"httpUrl": "/api/organizations/970ce194-6039-413a-9c6f-b514cee9cdff/users/role/bulk",
"details": {
"id": "9e531045-84b7-46cc-9318-0905c40c122f",
"email": "user@example.com",
"oldRole": "USER",
"newRole": "ORG_ADMIN"
}
}

USER_PASSWORD_CHANGED​

Emitted when an authenticated user changes password via the settings flow.

field namedata typedescription
detailsobjectNo fixed details fields are currently defined; currently emitted as {}.

Example event:

{
"id": "f2ce92b1-ddd6-463f-a61e-8d98a77111c4",
"type": "USER_PASSWORD_CHANGED",
"timestamp": "2026-03-10T10:28:00Z",
"severity": "INFO",
"summary": "User user@example.com changed their password.",
"actorType": "USER",
"actorId": "600a88a8-b41b-403c-8e0c-f462cfd94288",
"actorDisplay": "user@example.com",
"sourceIp": "203.0.113.10",
"targetType": "USER",
"targetId": "600a88a8-b41b-403c-8e0c-f462cfd94288",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": "Mozilla/5.0",
"httpReferer": "https://insights.specmatic.io/settings/security",
"httpMethod": "POST",
"httpProtocol": "https",
"httpPort": 443,
"httpUrl": "/api/users/password",
"details": {}
}

USER_PASSWORD_RESET_REQUESTED​

Emitted when a password reset request is accepted for a user. This applies only to organizations that do not use SSO integration.

field namedata typedescription
detailsobjectNo fixed details fields are currently defined; currently emitted as {}.

Example event:

{
"id": "d3fd691f-a052-48c4-ad36-2ab572e4f0ac",
"type": "USER_PASSWORD_RESET_REQUESTED",
"timestamp": "2026-03-10T10:29:00Z",
"severity": "INFO",
"summary": "User requested password reset",
"actorType": "USER",
"actorId": "(unauthenticated)",
"actorDisplay": "user@example.com",
"sourceIp": "203.0.113.12",
"targetType": "USER",
"targetId": "600a88a8-b41b-403c-8e0c-f462cfd94288",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": "Mozilla/5.0",
"httpReferer": "https://insights.specmatic.io/forgot-password",
"httpMethod": "POST",
"httpProtocol": "https",
"httpPort": 443,
"httpUrl": "/api/auth/send-password-reset-email",
"details": {}
}

USER_PASSWORD_RESET​

Emitted when a password reset is completed (including invite acceptance password set). This applies only to organizations that do not use SSO integration.

field namedata typedescription
detailsobjectNo fixed details fields are currently defined; currently emitted as {}.

Example event:

{
"id": "bbca84ed-7231-4b9d-8caa-177f2ca2e61a",
"type": "USER_PASSWORD_RESET",
"timestamp": "2026-03-10T10:31:00Z",
"severity": "INFO",
"summary": "Password for user@example.com was reset using a password reset token.",
"actorType": "USER",
"actorId": "600a88a8-b41b-403c-8e0c-f462cfd94288",
"actorDisplay": "user@example.com",
"sourceIp": "203.0.113.12",
"targetType": "USER",
"targetId": "600a88a8-b41b-403c-8e0c-f462cfd94288",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": "Mozilla/5.0",
"httpReferer": "https://insights.specmatic.io/reset-password",
"httpMethod": "POST",
"httpProtocol": "https",
"httpPort": 443,
"httpUrl": "/api/auth/password-reset",
"details": {}
}

Organization Lifecycle and Configuration updates​

ORG_CREATED​

Emitted when a new organization is created.

field namedata typedescription
detailsobjectNo fixed details fields are currently defined; currently emitted as {}.

Example event:

{
"id": "2202299a-98b2-4f8c-b5b6-72ab8ff86d90",
"type": "ORG_CREATED",
"timestamp": "2026-03-10T10:40:00Z",
"severity": "INFO",
"summary": "Organization Acme Corp created by admin@example.com",
"actorType": "USER",
"actorId": "600a88a8-b41b-403c-8e0c-f462cfd94288",
"actorDisplay": "admin@example.com",
"sourceIp": "203.0.113.20",
"targetType": "ORGANIZATION",
"targetId": "970ce194-6039-413a-9c6f-b514cee9cdff",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": "Mozilla/5.0",
"httpReferer": "https://insights.specmatic.io/onboarding",
"httpMethod": "POST",
"httpProtocol": "https",
"httpPort": 443,
"httpUrl": "/api/organizations",
"details": {
}
}

ORG_CONFIG_CHANGED​

Emitted for organization-level configuration changes across audit export, license, and organization settings.

Allowed values:

  • details.configType: auditExport, license, organization

Common fields:

field namedata typedescription
details.configTypestringConfiguration scope changed.
details.beforeobject | nullPrevious configuration snapshot for the selected configType.
details.afterobject | nullNew configuration snapshot for the selected configType.

When details.configType = auditExport:

field namedata typedescription
details.before.enabledbooleanPrevious audit export enabled state.
details.before.batchSizenumberPrevious audit export batch size.
details.after.enabledbooleanNew audit export enabled state.
details.after.batchSizenumberNew audit export batch size.

When details.configType = license:

field namedata typedescription
details.before.seatCountnumberPrevious configured seat count.
details.before.individualRateLimitnumberPrevious individual rate limit.
details.before.ciDailyRunLimitnumberPrevious CI daily run limit.
details.before.endDatestringPrevious license end date.
details.before.licenseTypestringPrevious license type.
details.after.seatCountnumberNew configured seat count.
details.after.individualRateLimitnumberNew individual rate limit.
details.after.ciDailyRunLimitnumberNew CI daily run limit.
details.after.endDatestringNew license end date.
details.after.licenseTypestringNew license type.

When details.configType = organization:

field namedata typedescription
details.before.namestringPrevious organization name.
details.before.minCoverageThresholdnumberPrevious minimum coverage threshold.
details.before.maxMissedEndpointsThresholdnumberPrevious maximum missed endpoints threshold.
details.before.seatCountUsageThresholdPercentagesnumber[]Previous seat usage alert thresholds.
details.after.namestringNew organization name.
details.after.minCoverageThresholdnumberNew minimum coverage threshold.
details.after.maxMissedEndpointsThresholdnumberNew maximum missed endpoints threshold.
details.after.seatCountUsageThresholdPercentagesnumber[]New seat usage alert thresholds.

Example event:

{
"id": "9c94fcf4-1830-4a0e-8a35-0f8e35f0a8fe",
"type": "ORG_CONFIG_CHANGED",
"timestamp": "2026-03-10T11:00:00Z",
"severity": "INFO",
"summary": "Organization license config updated",
"actorType": "USER",
"actorId": "600a88a8-b41b-403c-8e0c-f462cfd94288",
"actorDisplay": "admin@example.com",
"sourceIp": "203.0.113.20",
"targetType": "ORGANIZATION",
"targetId": "970ce194-6039-413a-9c6f-b514cee9cdff",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": "Mozilla/5.0",
"httpReferer": "https://insights.specmatic.io/settings/audit",
"httpMethod": "POST",
"httpProtocol": "https",
"httpPort": 443,
"httpUrl": "/api/organizations/970ce194-6039-413a-9c6f-b514cee9cdff/license-config",
"details": {
"configType": "license",
"before": {
"seatCount": 50,
"licenseType": "TEAM"
},
"after": {
"seatCount": 75,
"licenseType": "TEAM"
}
}
}

SSO_CONFIG_CHANGED​

Emitted when SSO configuration for an organization is created, updated, or disabled.

field namedata typedescription
details.beforeobject | nullPrevious SSO configuration state.
details.afterobjectNew SSO configuration state.
details.before.typestringPrevious SSO type when present (SAML, OIDC, NONE).
details.after.typestringNew SSO type (SAML, OIDC, NONE).
details.before.enabledbooleanPrevious SSO enabled state when present.
details.after.enabledbooleanNew SSO enabled state.
details.before.spEntityIdstring | nullPrevious SAML SP entity ID.
details.after.spEntityIdstring | nullNew SAML SP entity ID.
details.before.idpEntityIdstring | nullPrevious SAML IdP entity ID.
details.after.idpEntityIdstring | nullNew SAML IdP entity ID.
details.before.metadataUrlstring | nullPrevious SAML metadata URL.
details.after.metadataUrlstring | nullNew SAML metadata URL.
details.before.certificatestring | nullPrevious SAML certificate.
details.after.certificatestring | nullNew SAML certificate.
details.before.discoveryUrlstring | nullPrevious OIDC discovery URL.
details.after.discoveryUrlstring | nullNew OIDC discovery URL.
details.before.clientIdstring | nullPrevious OIDC client ID.
details.after.clientIdstring | nullNew OIDC client ID.
details.before.scopesstring | nullPrevious OIDC scopes string.
details.after.scopesstring | nullNew OIDC scopes string.

clientSecret is intentionally never included in audit event details.

Example event:

{
"id": "680f7a95-f357-4f1d-bfdc-b7f4dc39a9b0",
"type": "SSO_CONFIG_CHANGED",
"timestamp": "2026-03-10T11:10:00Z",
"severity": "INFO",
"summary": "Organization SSO config updated",
"actorType": "USER",
"actorId": "600a88a8-b41b-403c-8e0c-f462cfd94288",
"actorDisplay": "admin@example.com",
"sourceIp": "203.0.113.20",
"targetType": "ORGANIZATION",
"targetId": "970ce194-6039-413a-9c6f-b514cee9cdff",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": "Mozilla/5.0",
"httpReferer": "https://insights.specmatic.io/settings/sso",
"httpMethod": "POST",
"httpProtocol": "https",
"httpPort": 443,
"httpUrl": "/api/organizations/970ce194-6039-413a-9c6f-b514cee9cdff/sso-config",
"details": {
"before": null,
"after": {
"type": "OIDC",
"enabled": true,
"spEntityId": null,
"idpEntityId": null,
"metadataUrl": null,
"certificate": null,
"discoveryUrl": "https://example.okta.com",
"clientId": "oidc-client-id",
"scopes": "openid profile email"
}
}
}

JWT_PROVIDER_CONFIG_CHANGED​

Emitted when an organization’s JWT provider configuration is created or updated.

The before snapshot is null when the provider is created. The after snapshot contains the saved configuration. Client secrets are not included.

field namedata typedescription
details.beforeobject | nullPrevious JWT provider configuration.
details.afterobjectNew JWT provider configuration.
details.*.enabledbooleanWhether JWT authentication is enabled.
details.*.issuerstringJWT issuer URL.
details.*.audiencestringExpected JWT audience.
details.*.jwksUrlstringJSON Web Key Set URL.
details.*.identityClaimstringClaim used to identify the user.
details.*.allowedAlgorithmsstring[]Accepted JWT signing algorithms.
details.*.clockSkewSecondsnumberAllowed clock skew in seconds.

Build Ingestion​

BUILD_SUBMITTED_SERVICE​

Emitted when a service build report is submitted and accepted.

For this event, httpUserAgent records the version of Specmatic used to post the build.

field namedata typedescription
details.repostring | nullRepository name.
details.repoIdstring | nullRepository identifier.
details.branchNamestring | nullBranch name for submitted build.
details.reportTypestringService report type. Value is TEST or MOCK.
details.buildIdstringBuild identifier.
details.runAttemptstringCI run attempt.

Example event:

{
"id": "a7bf7cf3-567b-46f4-bfcd-e4f4fdde8b3a",
"type": "BUILD_SUBMITTED_SERVICE",
"timestamp": "2026-03-10T11:40:00Z",
"severity": "INFO",
"summary": "Build with type SERVICE was submitted",
"actorType": "LICENSE",
"actorId": "f8e6d960-9816-4215-ad2e-07356da7c11e",
"actorDisplay": "bob@example.com",
"sourceIp": "198.51.100.30",
"targetType": "SERVICE_BUILD_REPORT",
"targetId": "456",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": "specmatic/2.3.1",
"httpReferer": null,
"httpMethod": "POST",
"httpProtocol": "https",
"httpPort": 443,
"httpUrl": "/api/builds/reports",
"details": {
"repo": "payments-service",
"repoId": "repo_42",
"branchName": "main",
"buildId": "github-run-42",
"reportType": "TEST",
"runAttempt": "1"
}
}

BUILD_SUBMITTED_CENTRAL_REPO (Deprecated)​

Deprecated

BUILD_SUBMITTED_CENTRAL_REPO is retained for historical audit events only. New Spec Metadata submissions use BUILD_SUBMITTED_SPEC_METADATA.

Emitted when a central-repository build report is submitted and accepted.

For this event, httpUserAgent records the version of Specmatic used to post the build.

field namedata typedescription
details.repostring | nullRepository name.
details.repoIdstring | nullRepository identifier.
details.branchNamestring | nullBranch name for submitted build.
details.reportTypestringBuild report type. Value is CENTRAL_REPO for this event.
details.buildIdstring | nullBuild identifier when supplied by the reporter.
details.runAttemptstring | nullCI run attempt when supplied by the reporter.

BUILD_SUBMITTED_SPEC_METADATA​

Emitted when a Spec Metadata Report is submitted and accepted.

For this event, httpUserAgent records the version of Specmatic used to post the build.

field namedata typedescription
details.repostring | nullRepository name.
details.repoIdstring | nullRepository identifier.
details.branchNamestring | nullBranch name for submitted build.
details.reportTypestringBuild report type. Value is SPEC_METADATA for this event.
details.buildIdstring | nullBuild identifier when supplied by the reporter.
details.runAttemptstring | nullCI run attempt when supplied by the reporter.

Example event:

{
"id": "701b51ee-3d80-4410-91d9-48eb06cda225",
"type": "BUILD_SUBMITTED_SPEC_METADATA",
"timestamp": "2026-09-15T13:11:11.649612Z",
"severity": "INFO",
"summary": "Build with type SPEC_METADATA was submitted",
"actorType": "LICENSE",
"actorId": "6b5c3d12-e660-422f-befd-fba3977ce74f",
"actorDisplay": "6b5c3d12-e660-422f-befd-fba3977ce74f",
"sourceIp": "127.0.0.1",
"targetType": "BUILD",
"targetId": "3007",
"destinationHostname": "localhost",
"httpUserAgent": "io.specmatic:specmatic-core/2.54.2",
"httpReferer": null,
"httpMethod": "POST",
"httpProtocol": "http",
"httpPort": 8088,
"httpUrl": "/api/builds/raw-reports",
"details": {
"repo": "specmatic-order-contracts",
"repoId": "378410509",
"branchName": "main",
"reportType": "SPEC_METADATA",
"buildId": "100",
"runAttempt": "1"
}
}

BUILD_SUBMITTED_BACKWARD_COMPATIBILITY_CHECK​

Emitted when a backward compatibility check build report is submitted and accepted.

field namedata typedescription
details.repostring | nullRepository name.
details.repoIdstring | nullRepository identifier.
details.branchNamestring | nullBranch name for submitted build.
details.reportTypestringBuild report type. Value is BACKWARD_COMPATIBILITY_CHECK.
details.buildIdstring | nullBuild identifier when supplied by the reporter.
details.runAttemptstring | nullCI run attempt when supplied by the reporter.

Example event:

{
"id": "b2d8dc5a-9b3b-4bd8-a3ca-8ab92c5d0c19",
"type": "BUILD_SUBMITTED_BACKWARD_COMPATIBILITY_CHECK",
"timestamp": "2026-03-10T11:50:00Z",
"severity": "INFO",
"summary": "Build with type BACKWARD_COMPATIBILITY_CHECK was submitted",
"actorType": "LICENSE",
"actorId": "f8e6d960-9816-4215-ad2e-07356da7c11e",
"actorDisplay": "bob@example.com",
"sourceIp": "198.51.100.32",
"targetType": "BUILD",
"targetId": "458",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": "specmatic/2.3.1",
"httpReferer": null,
"httpMethod": "POST",
"httpProtocol": "https",
"httpPort": 443,
"httpUrl": "/api/builds/reports",
"details": {
"repo": "contracts-central",
"repoId": "repo_87",
"branchName": "main",
"reportType": "BACKWARD_COMPATIBILITY_CHECK",
"buildId": "bcc-run-42",
"runAttempt": "1"
}
}

BUILD_DELETED_SERVICE​

Emitted when a service build or service build report is deleted.

For a build deletion, details contain repo, repoId, branchName, and reason. For a service build report deletion, details additionally contain buildId, reportType, and runAttempt.

field namedata typedescription
details.repostring | nullRepository name.
details.repoIdstring | nullRepository identifier.
details.branchNamestring | nullBranch name.
details.buildIdstring | nullService build report identifier when applicable.
details.reportTypestring | nullService report type when applicable.
details.runAttemptstring | nullCI run attempt when applicable.
details.reasonstringReason supplied for deletion.

License and Code Lifecycle​

LICENSE_CODE_APPROVED​

Emitted when a license code is approved for later exchange.

field namedata typedescription
details.codestringApproved code value.
details.labelsstring[]Labels associated with the code.

Example event:

{
"id": "ef98680d-dd8d-45a8-9802-63dd96bcf51d",
"type": "LICENSE_CODE_APPROVED",
"timestamp": "2026-03-10T12:00:00Z",
"severity": "INFO",
"summary": "License code approved by user@example.org",
"actorType": "USER",
"actorId": "3b86d32b-0caa-44a2-9ab6-60f58ed719d7",
"actorDisplay": "user@example.org",
"sourceIp": "198.51.100.40",
"targetType": "ORGANIZATION",
"targetId": "004a2af5-b572-4e23-9ec6-7e6bc1a6957d",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": "Mozilla/5.0",
"httpReferer": "https://insights.specmatic.io/dashboard/validate-license?code=ABC-123",
"httpMethod": "POST",
"httpProtocol": "https",
"httpPort": 443,
"httpUrl": "/api/orgs/004a2af5-b572-4e23-9ec6-7e6bc1a6957d/licenses/approve-request",
"details": {
"code": "ABC-123",
"labels": [
"enterprise"
]
}
}

LICENSE_ISSUED_FROM_CODE​

Emitted when an approved code is exchanged and a license is issued.

field namedata typedescription
details.codestringConsumed code value.
details.licenseIdstringIssued license ID.
details.licenseestringLicensee field of the generated license.
details.generatedBystringIdentity that generated the license.
details.licenseExpirystring (ISO-8601 datetime)License expiry timestamp.
details.labelsstring[]Labels attached to the issued license/code.

Example event:

{
"id": "f8f8e5a2-cbd8-4fe5-a4d8-0bbfd82d2991",
"type": "LICENSE_ISSUED_FROM_CODE",
"timestamp": "2026-03-10T12:10:00Z",
"severity": "INFO",
"summary": "License issued to user@example.org from approved code",
"actorType": "USER",
"actorId": "7775ef9b-cca6-4118-86f1-5116cddfcf59",
"actorDisplay": "user@example.org",
"sourceIp": "198.51.100.40",
"targetType": "ORGANIZATION",
"targetId": "970ce194-6039-413a-9c6f-b514cee9cdff",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": "specmatic-enterprise/2.3.1",
"httpReferer": null,
"httpMethod": "POST",
"httpProtocol": "https",
"httpPort": 443,
"httpUrl": "/api/license/poll?code=ABC-123",
"details": {
"code": "ABC-123",
"licenseId": "153ad73c-d7ee-4cfd-8edb-4c48a9579d08",
"licensee": "user@example.org",
"generatedBy": "user@example.org",
"licenseExpiry": "2027-03-10T00:00:00Z",
"labels": [
"enterprise"
]
}
}

LICENSE_REFRESH​

Emitted when license validation results in issuing a refreshed license.

For license refresh/poll requests, httpUserAgent records the version of Specmatic that performed the call.

field namedata typedescription
details.oldLicenseIdstringLicense ID before refresh.
details.newLicenseIdstringLicense ID after refresh.

Example event:

{
"id": "6b981ec3-5b74-4afa-a180-67f8e37717e7",
"type": "LICENSE_REFRESH",
"timestamp": "2026-03-10T12:20:00Z",
"severity": "INFO",
"summary": "License refreshed for status-check-ci",
"actorType": "LICENSE",
"actorId": "153ad73c-d7ee-4cfd-8edb-4c48a9579d08",
"actorDisplay": "status-check-ci",
"sourceIp": "198.51.100.41",
"targetType": "ORGANIZATION",
"targetId": "970ce194-6039-413a-9c6f-b514cee9cdff",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": "specmatic/2.3.1",
"httpReferer": null,
"httpMethod": "POST",
"httpProtocol": "https",
"httpPort": 443,
"httpUrl": "/api/orgs/970ce194-6039-413a-9c6f-b514cee9cdff/licenses/status/153ad73c-d7ee-4cfd-8edb-4c48a9579d08",
"details": {
"oldLicenseId": "153ad73c-d7ee-4cfd-8edb-4c48a9579d08",
"newLicenseId": "6f03bc44-7f8c-4eeb-9ba4-5a3f57fd10aa"
}
}

LICENSE_SERVICE_ACCOUNT_CREATED​

Emitted when a new service-account license is created.

field namedata typedescription
details.licenseIdstringCreated service account license ID.
details.licenseestringService account licensee identifier.
details.labelsstring[]Labels attached to the service account license.

Example event:

{
"id": "0c47db5a-f318-40f2-8f68-6401885ec11f",
"type": "LICENSE_SERVICE_ACCOUNT_CREATED",
"timestamp": "2026-03-10T12:25:00Z",
"severity": "INFO",
"summary": "Service account license created by admin@example.org for svc:ci-bot",
"actorType": "USER",
"actorId": "600a88a8-b41b-403c-8e0c-f462cfd94288",
"actorDisplay": "admin@example.org",
"sourceIp": "198.51.100.42",
"targetType": "ORGANIZATION",
"targetId": "970ce194-6039-413a-9c6f-b514cee9cdff",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": "Mozilla/5.0",
"httpReferer": null,
"httpMethod": "POST",
"httpProtocol": "https",
"httpPort": 443,
"httpUrl": "/api/orgs/970ce194-6039-413a-9c6f-b514cee9cdff/license",
"details": {
"licenseId": "153ad73c-d7ee-4cfd-8edb-4c48a9579d08",
"licensee": "svc:ci-bot",
"labels": [
"service-account"
]
}
}

LICENSE_REVOKED​

Emitted once per revoked license in bulk revoke operations.

field namedata typedescription
detailsobjectNo fixed details fields are currently defined; currently emitted as {}.

Example event:

{
"id": "86bc0fd2-d96f-44f5-9f0e-9dcb916019a0",
"type": "LICENSE_REVOKED",
"timestamp": "2026-03-10T12:30:00Z",
"severity": "INFO",
"summary": "License for svc:ci-bot revoked by admin@example.org",
"actorType": "USER",
"actorId": "600a88a8-b41b-403c-8e0c-f462cfd94288",
"actorDisplay": "admin@example.org",
"sourceIp": "198.51.100.43",
"targetType": "LICENSE",
"targetId": "153ad73c-d7ee-4cfd-8edb-4c48a9579d08",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": "Mozilla/5.0",
"httpReferer": null,
"httpMethod": "POST",
"httpProtocol": "https",
"httpPort": 443,
"httpUrl": "/api/orgs/970ce194-6039-413a-9c6f-b514cee9cdff/users/licenses/revoke/bulk",
"details": {}
}

Audit Export Lifecycle​

For where organization admins configure audit export in the product UI, see Audit Trail.

AUDIT_EXPORT_STARTED​

Emitted when an audit export run starts for an organization.

field namedata typedescription
details.runIdstring (uuid)Audit export run identifier.

Example event:

{
"id": "6f22797f-d99a-40ff-9d0d-cf51e26e2183",
"type": "AUDIT_EXPORT_STARTED",
"timestamp": "2026-03-10T13:00:00Z",
"severity": "INFO",
"summary": "Audit export started",
"actorType": "SYSTEM",
"actorId": null,
"actorDisplay": null,
"sourceIp": null,
"targetType": "ORGANIZATION",
"targetId": "970ce194-6039-413a-9c6f-b514cee9cdff",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": null,
"httpReferer": null,
"httpMethod": null,
"httpProtocol": null,
"httpPort": null,
"httpUrl": null,
"details": {
"runId": "b7ebeb4f-7b63-4bb4-a6c3-8fb8ca565f34"
}
}

AUDIT_EXPORT_COMPLETED​

Emitted when an audit export run completes successfully.

field namedata typedescription
details.runIdstring (uuid)Audit export run identifier.
details.eventsExportednumberNumber of events exported in the run.
details.batchesnumberNumber of batches exported in the run.

Example event:

{
"id": "f8c13ebf-e272-4edc-9dc8-c28d30f7c19b",
"type": "AUDIT_EXPORT_COMPLETED",
"timestamp": "2026-03-10T13:04:00Z",
"severity": "INFO",
"summary": "Audit export completed - exported 500 event(s) in 5 batch(es).",
"actorType": "SYSTEM",
"actorId": null,
"actorDisplay": null,
"sourceIp": null,
"targetType": "ORGANIZATION",
"targetId": "970ce194-6039-413a-9c6f-b514cee9cdff",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": null,
"httpReferer": null,
"httpMethod": null,
"httpProtocol": null,
"httpPort": null,
"httpUrl": null,
"details": {
"runId": "b7ebeb4f-7b63-4bb4-a6c3-8fb8ca565f34",
"eventsExported": 500,
"batches": 5
}
}

AUDIT_EXPORT_FAILED​

Emitted when an audit export run fails after starting.

field namedata typedescription
details.runIdstring (uuid)Audit export run identifier.
details.eventsExportednumberNumber of events exported before failure.
details.batchesnumberNumber of batches exported before failure.
details.errorstringFailure message captured for the run.

Example event:

{
"id": "3d47fe12-bec1-4e36-9f15-f0e2ac9e95ed",
"type": "AUDIT_EXPORT_FAILED",
"timestamp": "2026-03-10T13:05:00Z",
"severity": "ERROR",
"summary": "Audit export failed. Exported 320 event(s) in 4 batch(es) before failure. Error: Connection timed out while publishing batch 5",
"actorType": "SYSTEM",
"actorId": null,
"actorDisplay": null,
"sourceIp": null,
"targetType": "ORGANIZATION",
"targetId": "970ce194-6039-413a-9c6f-b514cee9cdff",
"destinationHostname": "insights.specmatic.io",
"httpUserAgent": null,
"httpReferer": null,
"httpMethod": null,
"httpProtocol": null,
"httpPort": null,
"httpUrl": null,
"details": {
"runId": "b7ebeb4f-7b63-4bb4-a6c3-8fb8ca565f34",
"eventsExported": 320,
"batches": 4,
"error": "Connection timed out while publishing batch 5"
}
}

SCIM Config and Token Lifecycle​

These events are emitted for organization-level SCIM configuration and token lifecycle changes.

The following three event types share the same details contract shape.

SCIM_CONFIG_CHANGED​

Emitted when SCIM enablement state changes for an organization.

field namedata typedescription
details.enabledbooleanFinal persisted SCIM enablement state for the organization after the update request is applied.
details.tokenConfiguredbooleanIndicates whether a valid SCIM bearer token is configured and usable after the update completes.
details.tokenIdstringCurrent SCIM token identifier associated with the org; omitted when no token is configured.

Example event:

{
"id": "a3216ef8-6168-4c4f-8b16-09e8e7d3225f",
"type": "SCIM_CONFIG_CHANGED",
"timestamp": "2026-04-17T05:40:00Z",
"severity": "INFO",
"summary": "SCIM config updated for organization acme",
"actorType": "USER",
"actorId": "600a88a8-b41b-403c-8e0c-f462cfd94288",
"actorDisplay": "admin@example.com",
"sourceIp": "203.0.113.121",
"targetType": "ORGANIZATION",
"targetId": "970ce194-6039-413a-9c6f-b514cee9cdff",
"destinationHostname": "insights.specmatic.io",
"httpMethod": "POST",
"httpUrl": "/api/organizations/970ce194-6039-413a-9c6f-b514cee9cdff/org-identity",
"details": {
"enabled": true,
"tokenConfigured": false
}
}

SCIM_TOKEN_ROTATED​

Emitted when an organization’s SCIM bearer token is rotated.

field namedata typedescription
details.enabledbooleanSCIM enablement state at the time rotation succeeds (typically unchanged by rotate itself).
details.tokenConfiguredbooleanAlways true for a successful token rotation because a new token is issued and stored.
details.tokenIdstringIdentifier of the newly issued token; this is the value used to correlate subsequent SCIM auth attempts.

Example event:

{
"id": "bb77b5fb-c88e-4ab2-a00c-c2d3bc31ae7c",
"type": "SCIM_TOKEN_ROTATED",
"timestamp": "2026-04-17T05:41:00Z",
"severity": "INFO",
"summary": "SCIM token rotated for organization acme",
"actorType": "USER",
"actorId": "600a88a8-b41b-403c-8e0c-f462cfd94288",
"actorDisplay": "admin@example.com",
"sourceIp": "203.0.113.122",
"targetType": "ORGANIZATION",
"targetId": "970ce194-6039-413a-9c6f-b514cee9cdff",
"destinationHostname": "insights.specmatic.io",
"httpMethod": "POST",
"httpUrl": "/api/organizations/970ce194-6039-413a-9c6f-b514cee9cdff/org-identity/token/rotate",
"details": {
"enabled": true,
"tokenConfigured": true,
"tokenId": "b9e87456-cdf5-4efa-a4f7-5374b4fd3f2e"
}
}

SCIM_TOKEN_REVOKED​

Emitted when an organization’s SCIM bearer token is revoked.

field namedata typedescription
details.enabledbooleanSCIM enablement state after revoke completes (current flow sets this to false).
details.tokenConfiguredbooleanAlways false because token credentials are cleared as part of revoke processing.
details.tokenIdstringOmitted after revoke because no active token identifier remains on the organization config.

Example event:

{
"id": "f14fa00d-ed43-46ee-8de9-ed4ca6f03785",
"type": "SCIM_TOKEN_REVOKED",
"timestamp": "2026-04-17T05:42:00Z",
"severity": "INFO",
"summary": "SCIM token revoked for organization acme",
"actorType": "USER",
"actorId": "600a88a8-b41b-403c-8e0c-f462cfd94288",
"actorDisplay": "admin@example.com",
"sourceIp": "203.0.113.123",
"targetType": "ORGANIZATION",
"targetId": "970ce194-6039-413a-9c6f-b514cee9cdff",
"destinationHostname": "insights.specmatic.io",
"httpMethod": "POST",
"httpUrl": "/api/organizations/970ce194-6039-413a-9c6f-b514cee9cdff/org-identity/token/revoke",
"details": {
"enabled": false,
"tokenConfigured": false
}
}

SCIM Provisioning Events​

These events are emitted for SCIM User and Group provisioning mutations.

Target behavior:

  • User provisioning events (SCIM_USER_*) target USER when a projected local user exists; otherwise target ORGANIZATION.
  • Group provisioning events (SCIM_GROUP_*) target ORGANIZATION.

Common details fields for all SCIM provisioning events:

field namedata typedescription
details.resourceTypestringSCIM resource category (USER or GROUP).
details.resourceScimIdstringSCIM resource identifier for the mutated user/group.
details.operationstringProvisioning operation for the mutation (CREATE, UPDATE, PATCH, DEACTIVATE, REACTIVATE, DELETE).
details.statusstringProvisioning outcome status; currently SUCCESS.
details.idempotencyKeystringRequest key recorded with the audit event for traceability across retries/call chains.

SCIM_USER_CREATED​

Emitted when a SCIM user is provisioned (created).

field namedata typedescription
details.operationstringOperation discriminator for created user events; this event emits CREATE.
details.userNamestringCanonical SCIM userName value.
details.projectedUserEmailstring | nullProjected local email when the SCIM user maps to a local user.
details.externalIdstring | nullSCIM external ID when supplied.
details.activebooleanCurrent SCIM active state for the created user.

Example event:

{
"id": "868311d7-cf2f-4372-9f5a-1f220cd0d9f5",
"type": "SCIM_USER_CREATED",
"timestamp": "2026-04-17T05:43:00Z",
"severity": "INFO",
"summary": "SCIM user user@example.com provisioned",
"actorType": "SYSTEM",
"actorId": null,
"actorDisplay": null,
"sourceIp": null,
"targetType": "USER",
"targetId": "9e531045-84b7-46cc-9318-0905c40c122f",
"destinationHostname": "insights.specmatic.io",
"httpMethod": "POST",
"httpUrl": "/66fe6c555e232d36a28fef94/scim/v2/Users",
"details": {
"resourceType": "USER",
"resourceScimId": "4b56c08a-8565-47cb-af3d-76260da123fe",
"operation": "CREATE",
"status": "SUCCESS",
"idempotencyKey": "b48607d6-f5eb-4851-9252-f8f179583303",
"userName": "user@example.com",
"projectedUserEmail": "user@example.com",
"externalId": "ext-user",
"active": true
}
}

SCIM_USER_UPDATED​

Emitted when a SCIM user is updated via replace semantics (PUT).

field namedata typedescription
details.operationstringOperation discriminator for full replacement mutations; this event emits UPDATE.
details.userNamestringCanonical SCIM userName value after update.
details.projectedUserEmailstring | nullProjected local email after update.
details.externalIdstring | nullSCIM external ID after update.
details.activebooleanCurrent SCIM active state after update.
details.beforeobjectSnapshot before mutation.
details.before.userNamestringuserName before update.
details.before.projectedUserEmailstring | nullProjected local email before update.
details.before.externalIdstring | nullExternal id before update.
details.before.activebooleanActive state before update.
details.afterobjectSnapshot after mutation.
details.after.userNamestringuserName after update.
details.after.projectedUserEmailstring | nullProjected local email after update.
details.after.externalIdstring | nullExternal id after update.
details.after.activebooleanActive state after update.

Example event:

{
"id": "df0df66f-8cb2-43ca-88b9-1724e466f009",
"type": "SCIM_USER_UPDATED",
"timestamp": "2026-04-17T05:44:00Z",
"severity": "INFO",
"summary": "SCIM user user.updated@example.com updated",
"actorType": "SYSTEM",
"actorId": null,
"actorDisplay": null,
"sourceIp": null,
"targetType": "USER",
"targetId": "9e531045-84b7-46cc-9318-0905c40c122f",
"destinationHostname": "insights.specmatic.io",
"httpMethod": "PUT",
"httpUrl": "/66fe6c555e232d36a28fef94/scim/v2/Users/4b56c08a-8565-47cb-af3d-76260da123fe",
"details": {
"resourceType": "USER",
"resourceScimId": "4b56c08a-8565-47cb-af3d-76260da123fe",
"operation": "UPDATE",
"status": "SUCCESS",
"idempotencyKey": "43af4f5d-a347-4665-b8fb-3d807b315603",
"userName": "user.updated@example.com",
"projectedUserEmail": "user.updated@example.com",
"externalId": "ext-user-updated",
"active": true,
"before": {
"userName": "user@example.com",
"projectedUserEmail": "user@example.com",
"externalId": "ext-user",
"active": true
},
"after": {
"userName": "user.updated@example.com",
"projectedUserEmail": "user.updated@example.com",
"externalId": "ext-user-updated",
"active": true
}
}
}

SCIM_USER_PATCHED​

Emitted when a SCIM user is updated via patch semantics (PATCH).

field namedata typedescription
details.operationstringOperation discriminator for partial user mutations; this event emits PATCH.
details.userNamestringCanonical SCIM userName value after patch.
details.projectedUserEmailstring | nullProjected local email after patch.
details.externalIdstring | nullSCIM external ID after patch.
details.activebooleanCurrent SCIM active state after patch.
details.beforeobjectSnapshot before mutation.
details.before.userNamestringuserName before patch.
details.before.projectedUserEmailstring | nullProjected local email before patch.
details.before.externalIdstring | nullExternal id before patch.
details.before.activebooleanActive state before patch.
details.afterobjectSnapshot after mutation.
details.after.userNamestringuserName after patch.
details.after.projectedUserEmailstring | nullProjected local email after patch.
details.after.externalIdstring | nullExternal id after patch.
details.after.activebooleanActive state after patch.

Example event:

{
"id": "4a00e7fb-7f85-4b8c-834a-0419917ab12a",
"type": "SCIM_USER_PATCHED",
"timestamp": "2026-04-17T05:44:30Z",
"severity": "INFO",
"summary": "SCIM user user.updated@example.com patched",
"actorType": "SYSTEM",
"actorId": null,
"actorDisplay": null,
"sourceIp": null,
"targetType": "USER",
"targetId": "9e531045-84b7-46cc-9318-0905c40c122f",
"destinationHostname": "insights.specmatic.io",
"httpMethod": "PATCH",
"httpUrl": "/66fe6c555e232d36a28fef94/scim/v2/Users/4b56c08a-8565-47cb-af3d-76260da123fe",
"details": {
"resourceType": "USER",
"resourceScimId": "4b56c08a-8565-47cb-af3d-76260da123fe",
"operation": "PATCH",
"status": "SUCCESS",
"idempotencyKey": "e9972cf7-b6f7-4704-8f88-ee61c766f2fb",
"userName": "user.updated@example.com",
"projectedUserEmail": "user.updated@example.com",
"externalId": "ext-user-patched",
"active": true,
"before": {
"userName": "user.updated@example.com",
"projectedUserEmail": "user.updated@example.com",
"externalId": "ext-user-updated",
"active": true
},
"after": {
"userName": "user.updated@example.com",
"projectedUserEmail": "user.updated@example.com",
"externalId": "ext-user-patched",
"active": true
}
}
}

SCIM_USER_DEACTIVATED​

Emitted when a SCIM user is deprovisioned with active=false.

field namedata typedescription
details.operationstringOperation discriminator for user deprovision events; this event emits DEACTIVATE.
details.userNamestringCanonical SCIM userName value for the affected user.
details.projectedUserEmailstring | nullProjected local email when the SCIM user maps to a local user.
details.externalIdstring | nullSCIM external ID when supplied.
details.activebooleanCurrent SCIM active state (false).

Example event:

{
"id": "2bf8cc9b-258b-466d-8da4-5a06dd261f06",
"type": "SCIM_USER_DEACTIVATED",
"timestamp": "2026-04-17T05:45:30Z",
"severity": "INFO",
"summary": "SCIM user user.updated@example.com deactivated",
"actorType": "SYSTEM",
"actorId": null,
"actorDisplay": null,
"sourceIp": null,
"targetType": "USER",
"targetId": "9e531045-84b7-46cc-9318-0905c40c122f",
"destinationHostname": "insights.specmatic.io",
"httpMethod": "PATCH",
"httpUrl": "/66fe6c555e232d36a28fef94/scim/v2/Users/4b56c08a-8565-47cb-af3d-76260da123fe",
"details": {
"resourceType": "USER",
"resourceScimId": "4b56c08a-8565-47cb-af3d-76260da123fe",
"operation": "DEACTIVATE",
"status": "SUCCESS",
"idempotencyKey": "03e04af8-7259-4ab3-ac4b-bfd7b82a9e80",
"userName": "user.updated@example.com",
"projectedUserEmail": "user.updated@example.com",
"externalId": "ext-user-patched",
"active": false
}
}

SCIM_USER_REACTIVATED​

Emitted when a previously deactivated SCIM user is reactivated (active=true).

field namedata typedescription
details.operationstringOperation discriminator for restoring a previously deactivated user; this event emits REACTIVATE.
details.userNamestringCanonical SCIM userName value for the affected user.
details.projectedUserEmailstring | nullProjected local email when the SCIM user maps to a local user.
details.externalIdstring | nullSCIM external ID when supplied.
details.activebooleanCurrent SCIM active state (true).

Example event:

{
"id": "4afb4455-47c0-4462-abf3-a7d0bb12ac93",
"type": "SCIM_USER_REACTIVATED",
"timestamp": "2026-04-17T05:46:00Z",
"severity": "INFO",
"summary": "SCIM user user.updated@example.com reactivated",
"actorType": "SYSTEM",
"actorId": null,
"actorDisplay": null,
"sourceIp": null,
"targetType": "USER",
"targetId": "9e531045-84b7-46cc-9318-0905c40c122f",
"destinationHostname": "insights.specmatic.io",
"httpMethod": "PUT",
"httpUrl": "/66fe6c555e232d36a28fef94/scim/v2/Users/4b56c08a-8565-47cb-af3d-76260da123fe",
"details": {
"resourceType": "USER",
"resourceScimId": "4b56c08a-8565-47cb-af3d-76260da123fe",
"operation": "REACTIVATE",
"status": "SUCCESS",
"idempotencyKey": "cf08be29-f9f1-4967-a77a-18926ec191f5",
"userName": "user.updated@example.com",
"projectedUserEmail": "user.updated@example.com",
"externalId": "ext-user-patched",
"active": true
}
}

SCIM_USER_DELETED​

Emitted when a SCIM user is deleted via SCIM DELETE.

field namedata typedescription
details.operationstringOperation discriminator for hard-delete mutations; this event emits DELETE.
details.userNamestringCanonical SCIM userName value at delete time.
details.projectedUserEmailstring | nullProjected local email when the SCIM user maps to a local user.
details.externalIdstring | nullSCIM external ID when supplied.
details.activebooleanFinal SCIM active state at delete time (false).

Example event:

{
"id": "2cbf7f3f-b6a4-49d9-ac2e-f6f9c7707f95",
"type": "SCIM_USER_DELETED",
"timestamp": "2026-04-17T05:45:00Z",
"severity": "INFO",
"summary": "SCIM user user@example.com deleted",
"actorType": "SYSTEM",
"actorId": null,
"actorDisplay": null,
"sourceIp": null,
"targetType": "USER",
"targetId": "9e531045-84b7-46cc-9318-0905c40c122f",
"destinationHostname": "insights.specmatic.io",
"httpMethod": "DELETE",
"httpUrl": "/66fe6c555e232d36a28fef94/scim/v2/Users/4b56c08a-8565-47cb-af3d-76260da123fe",
"details": {
"resourceType": "USER",
"resourceScimId": "4b56c08a-8565-47cb-af3d-76260da123fe",
"operation": "DELETE",
"status": "SUCCESS",
"idempotencyKey": "user:delete:4b56c08a-8565-47cb-af3d-76260da123fe:7df77c20-2d76-490a-8f14-f04288076926",
"userName": "user@example.com",
"projectedUserEmail": "user@example.com",
"externalId": "ext-user",
"active": false
}
}

SCIM_GROUP_CREATED​

Emitted when a SCIM group is created.

field namedata typedescription
details.operationstringOperation discriminator for created group events; this event emits CREATE.
details.displayNamestringCanonical SCIM group display name at creation time.
details.externalIdstring | nullSCIM external ID when supplied.

Example event:

{
"id": "f0979664-04e4-40a8-a4c3-f4688d6f72c8",
"type": "SCIM_GROUP_CREATED",
"timestamp": "2026-04-17T05:47:00Z",
"severity": "INFO",
"summary": "SCIM group Platform Team provisioned",
"actorType": "SYSTEM",
"actorId": null,
"actorDisplay": null,
"sourceIp": null,
"targetType": "ORGANIZATION",
"targetId": "970ce194-6039-413a-9c6f-b514cee9cdff",
"destinationHostname": "insights.specmatic.io",
"httpMethod": "POST",
"httpUrl": "/66fe6c555e232d36a28fef94/scim/v2/Groups",
"details": {
"resourceType": "GROUP",
"resourceScimId": "d8d7cf67-3d25-4cde-a3be-4798ba45b742",
"operation": "CREATE",
"status": "SUCCESS",
"idempotencyKey": "group:create:d8d7cf67-3d25-4cde-a3be-4798ba45b742",
"displayName": "Platform Team",
"externalId": "ext-platform-team"
}
}

SCIM_GROUP_UPDATED​

Emitted when a SCIM group is updated via replace semantics (PUT).

field namedata typedescription
details.operationstringOperation discriminator for full group replacement mutations; this event emits UPDATE.
details.displayNamestringCanonical SCIM group display name after update.
details.externalIdstring | nullSCIM external ID after update.
details.beforeobjectSnapshot before mutation (displayName, externalId).
details.before.displayNamestringGroup display name before update.
details.before.externalIdstring | nullGroup external id before update.
details.afterobjectSnapshot after mutation (displayName, externalId).
details.after.displayNamestringGroup display name after update.
details.after.externalIdstring | nullGroup external id after update.

Example event:

{
"id": "728f7e2c-7396-4d73-8dbf-7d995fdf3341",
"type": "SCIM_GROUP_UPDATED",
"timestamp": "2026-04-17T05:47:30Z",
"severity": "INFO",
"summary": "SCIM group Platform Team Updated updated",
"actorType": "SYSTEM",
"actorId": null,
"actorDisplay": null,
"sourceIp": null,
"targetType": "ORGANIZATION",
"targetId": "970ce194-6039-413a-9c6f-b514cee9cdff",
"destinationHostname": "insights.specmatic.io",
"httpMethod": "PUT",
"httpUrl": "/66fe6c555e232d36a28fef94/scim/v2/Groups/d8d7cf67-3d25-4cde-a3be-4798ba45b742",
"details": {
"resourceType": "GROUP",
"resourceScimId": "d8d7cf67-3d25-4cde-a3be-4798ba45b742",
"operation": "UPDATE",
"status": "SUCCESS",
"idempotencyKey": "group:update:d8d7cf67-3d25-4cde-a3be-4798ba45b742",
"displayName": "Platform Team Updated",
"externalId": "ext-platform-team-updated",
"before": {
"displayName": "Platform Team",
"externalId": "ext-platform-team"
},
"after": {
"displayName": "Platform Team Updated",
"externalId": "ext-platform-team-updated"
}
}
}

SCIM_GROUP_PATCHED​

Emitted when a SCIM group is updated via patch semantics (PATCH), including membership mutations.

field namedata typedescription
details.operationstringOperation discriminator for partial group/membership mutations; this event emits PATCH.
details.displayNamestringCanonical SCIM group display name after patch.
details.externalIdstring | nullSCIM external ID after patch.
details.beforeobjectSnapshot before mutation (displayName, externalId).
details.before.displayNamestringGroup display name before patch.
details.before.externalIdstring | nullGroup external id before patch.
details.afterobjectSnapshot after mutation (displayName, externalId).
details.after.displayNamestringGroup display name after patch.
details.after.externalIdstring | nullGroup external id after patch.

Example event:

{
"id": "6f5be68e-e2f0-4f6c-9f87-91db995f5b70",
"type": "SCIM_GROUP_PATCHED",
"timestamp": "2026-04-17T05:48:00Z",
"severity": "INFO",
"summary": "SCIM group Platform Team patched",
"actorType": "SYSTEM",
"actorId": null,
"actorDisplay": null,
"sourceIp": null,
"targetType": "ORGANIZATION",
"targetId": "970ce194-6039-413a-9c6f-b514cee9cdff",
"destinationHostname": "insights.specmatic.io",
"httpMethod": "PATCH",
"httpUrl": "/66fe6c555e232d36a28fef94/scim/v2/Groups/d8d7cf67-3d25-4cde-a3be-4798ba45b742",
"details": {
"resourceType": "GROUP",
"resourceScimId": "d8d7cf67-3d25-4cde-a3be-4798ba45b742",
"operation": "PATCH",
"status": "SUCCESS",
"idempotencyKey": "group:patch:d8d7cf67-3d25-4cde-a3be-4798ba45b742",
"displayName": "Platform Team",
"externalId": "ext-platform-team",
"before": {
"displayName": "Platform Team Updated",
"externalId": "ext-platform-team-updated"
},
"after": {
"displayName": "Platform Team",
"externalId": "ext-platform-team"
}
}
}

SCIM_GROUP_DELETED​

Emitted when a SCIM group is deleted via SCIM DELETE.

field namedata typedescription
details.operationstringOperation discriminator for group deletion mutations; this event emits DELETE.
details.displayNamestringCanonical SCIM group display name at delete time.
details.externalIdstring | nullSCIM external ID when supplied.

Example event:

{
"id": "77a8b8be-ac99-4d6d-a6aa-6e62a3e2c1d8",
"type": "SCIM_GROUP_DELETED",
"timestamp": "2026-04-17T05:48:30Z",
"severity": "INFO",
"summary": "SCIM group Platform Team deleted",
"actorType": "SYSTEM",
"actorId": null,
"actorDisplay": null,
"sourceIp": null,
"targetType": "ORGANIZATION",
"targetId": "970ce194-6039-413a-9c6f-b514cee9cdff",
"destinationHostname": "insights.specmatic.io",
"httpMethod": "DELETE",
"httpUrl": "/66fe6c555e232d36a28fef94/scim/v2/Groups/d8d7cf67-3d25-4cde-a3be-4798ba45b742",
"details": {
"resourceType": "GROUP",
"resourceScimId": "d8d7cf67-3d25-4cde-a3be-4798ba45b742",
"operation": "DELETE",
"status": "SUCCESS",
"idempotencyKey": "group:delete:d8d7cf67-3d25-4cde-a3be-4798ba45b742",
"displayName": "Platform Team",
"externalId": "ext-platform-team"
}
}

SCIM Group Mapping Events​

These events are emitted for Insights-side SCIM group mapping changes (role/identity mapping), separate from SCIM provisioning events.

SCIM_GROUP_MAPPING_CHANGED​

Emitted when an org admin updates the Insights role/identity mapping for one or more SCIM groups. One event is emitted per changed group.

field namedata typedescription
targetTypestringAlways SCIM_GROUP.
targetIdstringSCIM group ID whose mapping changed.
details.resourceScimIdstringSCIM group ID (same value as targetId).
details.displayNamestringSCIM group display name at the time of update.
details.externalIdstring | nullOptional SCIM group external ID when present.
details.before.insightsRolestringPrevious Insights role mapping (USER or ORG_ADMIN).
details.before.insightsIdentityTypestringPrevious identity mapping (HUMAN_IDENTITY or NON_HUMAN_IDENTITY).
details.after.insightsRolestringNew Insights role mapping (USER or ORG_ADMIN).
details.after.insightsIdentityTypestringNew identity mapping (HUMAN_IDENTITY or NON_HUMAN_IDENTITY).

Example event:

{
"id": "6fa7583a-777d-4633-8ecf-4cdb60dd7b82",
"type": "SCIM_GROUP_MAPPING_CHANGED",
"timestamp": "2026-04-26T06:48:10Z",
"severity": "INFO",
"summary": "SCIM group mapping changed for Platform Team",
"actorType": "USER",
"actorId": "600a88a8-b41b-403c-8e0c-f462cfd94288",
"actorDisplay": "admin@example.com",
"sourceIp": "203.0.113.20",
"targetType": "SCIM_GROUP",
"targetId": "d8d7cf67-3d25-4cde-a3be-4798ba45b742",
"destinationHostname": "insights.specmatic.io",
"httpMethod": "POST",
"httpUrl": "/api/organizations/970ce194-6039-413a-9c6f-b514cee9cdff/scim-groups/mapping",
"details": {
"resourceScimId": "d8d7cf67-3d25-4cde-a3be-4798ba45b742",
"displayName": "Platform Team",
"externalId": "ext-platform-team",
"before": {
"insightsRole": "USER",
"insightsIdentityType": "HUMAN_IDENTITY"
},
"after": {
"insightsRole": "ORG_ADMIN",
"insightsIdentityType": "NON_HUMAN_IDENTITY"
}
}
}