# Chainguard Events

URL: https://edu.chainguard.dev/chainguard/administration/cloudevents/events-reference.md
Last Modified: April 20, 2026
Tags: Platform, Reference, Product

Chainguard Events

Chainguard generates and emits CloudEvents based on actions that occur within a Chainguard account, such as registering a Kubernetes cluster or creating an IAM invitation. Chainguard also emits events when workloads or policies are changed in a cluster.
Check out this GitHub repository for some sample applications that demonstrate how to use events to create Slack notifications, open GitHub issues, and mirror images.
To subscribe to Chainguard events for your account, use the chainctl command like this:
chainctl events subscriptions create –parent $YOUR_ORGANIZATION_OR_FOLDER https://&lt;Your webhook URL&gt;Once you are subscribed to Chainguard events, you will start receiving HTTP POST requests. Each request has a common set of CloudEvent header fields, denoted by the Ce- prefix. The event body is encoded using JSON and will have two top-level keys, actor and body.
The actor field is the identity of the actor in your Chainguard account that triggered the event, such as a team member or a Kubernetes cluster. The body field contains the specific data about the event, for example the response status for an invite creation request, or a cluster delete request.
UIDP Identifiers Each Chainguard event includes a Ce-Subject header that contains a UIDP (UID Path) identifier. Identifiers follow POSIX directory semantics and components are separated by / delimiters. A UIDP is comprised of:
A globally unique identifier (UID), consisting of 20 bytes, that are URL safe hex encoded. For example, account identities like 0475f6baca584a8964a6bce6b74dbe78dd8805b6.
One, or multiple / separated, scoped unique identifiers (SUID). An SUID is 8 bytes that are unique within a scope (like a group), and are URL safe hex encoded. The following is an example SUID: b74ce966caf448d1. SUIDs are used to identify every entity in Chainguard, from groups, policies, Kubernetes cluster IDs, event subscriptions, to IAM invitations, roles and role-bindings.
Since Chainguard groups can contain child groups, events in a child group will propagate to the parent and thus the UIDP will contain multiple group SUIDs, along with the entity SUID itself. For example, assuming the following components:
An account UID of 0475f6baca584a8964a6bce6b74dbe78dd8805b6 A group SUID of b74ce966caf448d1 A child of group b74ce966caf448d1 with its own SUID of dda9aab2d2d90f9e The complete UIDP in the event&rsquo;s Ce-Subject header would be:
0475f6baca584a8964a6bce6b74dbe78dd8805b6/b74ce966caf448d1/dda9aab2d2d90f9e/1a4b29ca6df80013 Authorization Header Every Chainguard event has a JWT formatted OIDC ID token in its Authorization header. For authorization purposes, there are two important fields to validate:
Use the iss field to ensure that the issuer is Chainguard, specifically https://issuer.enforce.dev. Use the sub field to check that the event matches your configured Chainguard identity. For example, assuming a UIDP ID of 0475f6baca584a8964a6bce6b74dbe78dd8805b6, the value will resemble the following: webhook:0475f6baca584a8964a6bce6b74dbe78dd8805b6. If the subscription is in a sub-group, then the value will have the corresponding group SUID appended to the path. Validating these fields before processing the JWT token using a verification library can save resources, as well as alert about suspicious traffic, or misconfigured Chainguard group settings.
CloudEvents Sources Chainguard CloudEvents can come from one of three IP addresses:
34.132.193.40 35.237.242.37 35.230.121.20 Events Reference The following list of services and methods show example HTTP headers and bodies for public facing Chainguard events.
Service: Registry - Pull Method: Pulled Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: cgr.devCe-Specversion: 1.0Ce-Subject: The identifier of the repository being pulled fromCe-Time: 2026-04-20T19:01:57.791218236ZCe-Type: dev.chainguard.registry.pull.v1Content-Length: 777Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;digest&#34;: &#34;The digest of the image being pulled&#34;, &#34;error&#34;: { &#34;code&#34;: &#34;The OCI distribution-spec error code&#34;, &#34;message&#34;: &#34;The error message&#34;, &#34;status&#34;: 0 }, &#34;location&#34;: &#34;Location holds the detected approximate location of the client who pulled. For example, \&#34;ColumbusOHUS\&#34; or \&#34;Minato City13JP&#34;, &#34;method&#34;: &#34;The method used to pull the image. One of: HEAD or GET&#34;, &#34;remote_address&#34;: &#34;&#34;, &#34;repo_id&#34;: &#34;The identifier of the repository being pulled from&#34;, &#34;repository&#34;: &#34;The identifier of the repository being pulled from&#34;, &#34;tag&#34;: &#34;The tag of the image being pulled&#34;, &#34;type&#34;: &#34;Type determines whether the object being pulled is a manifest or blob&#34;, &#34;user_agent&#34;: &#34;The user-agent of the client who pulled&#34;, &#34;when&#34;: &#34;2026-04-20T19:01:57.790086&#34; } } Service: Registry - Push Method: Pushed Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: cgr.devCe-Specversion: 1.0Ce-Subject: The identifier of the repository being pushed toCe-Time: 2026-04-20T19:01:57.790294339ZCe-Type: dev.chainguard.registry.push.v1Content-Length: 707Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;digest&#34;: &#34;The digest of the image being pushed&#34;, &#34;error&#34;: { &#34;code&#34;: &#34;The OCI distribution-spec error code&#34;, &#34;message&#34;: &#34;The error message&#34;, &#34;status&#34;: 0 }, &#34;location&#34;: &#34;Location holds the detected approximate location of the client who pushed. For example, \&#34;ColumbusOHUS\&#34; or \&#34;Minato City13JP&#34;, &#34;remote_address&#34;: &#34;&#34;, &#34;repo_id&#34;: &#34;The identifier of the repository being pushed to&#34;, &#34;repository&#34;: &#34;The identifier of the repository being pushed to&#34;, &#34;tag&#34;: &#34;The tag of the image being pushed&#34;, &#34;type&#34;: &#34;Type determines whether the object being pushed is a manifest or blob&#34;, &#34;user_agent&#34;: &#34;The user-agent of the client who pushed&#34;, &#34;when&#34;: &#34;2026-04-20T19:01:57.790066&#34; } } Service: auth - Auth Method: Register Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/auth/v1/registerCe-Specversion: 1.0Ce-Subject: Chainguard UIDPCe-Time: 2026-04-20T19:01:57.795815812ZCe-Type: dev.chainguard.api.auth.registered.v1Content-Length: 154Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;group&#34;: &#34;the group this identity has joined by invitation&#34;, &#34;identity&#34;: &#34;Chainguard UIDP&#34; } } Service: events - Subscriptions Method: Create Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/events/v1/subscriptionsCe-Specversion: 1.0Ce-Subject: UIDP identifier of the subscriptionCe-Time: 2026-04-20T19:01:57.801147219ZCe-Type: dev.chainguard.api.events.subscription.created.v1Content-Length: 152Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;id&#34;: &#34;UIDP identifier of the subscription&#34;, &#34;sink&#34;: &#34;Webhook endpoint (http/https URL)&#34; } } Method: Delete Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/events/v1/subscriptionsCe-Specversion: 1.0Ce-Subject: UIDP identifier of the subscription to deleteCe-Time: 2026-04-20T19:01:57.801449394ZCe-Type: dev.chainguard.api.events.subscription.deleted.v1Content-Length: 119Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;id&#34;: &#34;UIDP identifier of the subscription to delete&#34; } } Service: iam - GroupAccountAssociations Method: Create Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/iam/v1/account_associationsCe-Specversion: 1.0Ce-Subject: UIDP with which this account information is associatedCe-Time: 2026-04-20T19:01:57.791799964ZCe-Type: dev.chainguard.api.iam.account_associations.created.v1Content-Length: 385Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;amazon&#34;: { &#34;account&#34;: &#34;Amazon account ID (if applicable)&#34; }, &#34;description&#34;: &#34;description of this association&#34;, &#34;google&#34;: { &#34;project_id&#34;: &#34;Google Cloud Project ID (if applicable)&#34;, &#34;project_number&#34;: &#34;Google Cloud Project Number (if applicable)&#34; }, &#34;group&#34;: &#34;UIDP with which this account information is associated&#34;, &#34;name&#34;: &#34;group name&#34; } } Method: Update Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/iam/v1/account_associationsCe-Specversion: 1.0Ce-Subject: UIDP with which this account information is associatedCe-Time: 2026-04-20T19:01:57.793788311ZCe-Type: dev.chainguard.api.iam.account_associations.updated.v1Content-Length: 336Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;amazon&#34;: { &#34;account&#34;: &#34;amazon account if applicable&#34; }, &#34;description&#34;: &#34;group description&#34;, &#34;google&#34;: { &#34;project_id&#34;: &#34;project id if applicable&#34;, &#34;project_number&#34;: &#34;project number if applicable&#34; }, &#34;group&#34;: &#34;UIDP with which this account information is associated&#34;, &#34;name&#34;: &#34;group name&#34; } } Method: Delete Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/iam/v1/account_associationsCe-Specversion: 1.0Ce-Subject: UIDP of the group whose associations will be deletedCe-Time: 2026-04-20T19:01:57.794079536ZCe-Type: dev.chainguard.api.iam.account_associations.deleted.v1Content-Length: 129Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;group&#34;: &#34;UIDP of the group whose associations will be deleted&#34; } } Service: iam - GroupInvites Method: Create Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/iam/v1/group_invitesCe-Specversion: 1.0Ce-Subject: group UIDP under which this invite residesCe-Time: 2026-04-20T19:01:57.794367474ZCe-Type: dev.chainguard.api.iam.group_invite.created.v1Content-Length: 145Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;expiration&#34;: { &#34;seconds&#34;: 100 }, &#34;id&#34;: &#34;group UIDP under which this invite resides&#34; } } Method: Delete Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/iam/v1/group_invitesCe-Specversion: 1.0Ce-Subject: UIDP of the recordCe-Time: 2026-04-20T19:01:57.794667435ZCe-Type: dev.chainguard.api.iam.group_invite.deleted.v1Content-Length: 92Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;id&#34;: &#34;UIDP of the record&#34; } } Service: iam - Groups Method: Create Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/iam/v1/groupsCe-Specversion: 1.0Ce-Subject: group UIDP under which this group residesCe-Time: 2026-04-20T19:01:57.796739298ZCe-Type: dev.chainguard.api.iam.group.created.v1Content-Length: 169Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;description&#34;: &#34;group description&#34;, &#34;id&#34;: &#34;group UIDP under which this group resides&#34;, &#34;name&#34;: &#34;group name&#34; } } Method: Update Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/iam/v1/groupsCe-Specversion: 1.0Ce-Subject: group UIDP under which this group residesCe-Time: 2026-04-20T19:01:57.797035652ZCe-Type: dev.chainguard.api.iam.group.updated.v1Content-Length: 169Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;description&#34;: &#34;group description&#34;, &#34;id&#34;: &#34;group UIDP under which this group resides&#34;, &#34;name&#34;: &#34;group name&#34; } } Method: Delete Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/iam/v1/groupsCe-Specversion: 1.0Ce-Subject: UIDP of the recordCe-Time: 2026-04-20T19:01:57.797256585ZCe-Type: dev.chainguard.api.iam.group.deleted.v1Content-Length: 92Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;id&#34;: &#34;UIDP of the record&#34; } } Service: iam - Identities Method: Create Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/iam/v1/identitiesCe-Specversion: 1.0Ce-Subject: UIDP of identityCe-Time: 2026-04-20T19:01:57.80174696ZCe-Type: dev.chainguard.api.iam.identity.created.v1Content-Length: 329Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;identity&#34;: { &#34;Relationship&#34;: null, &#34;description&#34;: &#34;The human readable description of identity&#34;, &#34;id&#34;: &#34;The unique identifier of this specific identity&#34;, &#34;name&#34;: &#34;The human readable name of identity&#34; }, &#34;parent_id&#34;: &#34;The Group UIDP path under which the new Identity resides&#34; } } Method: Update Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/iam/v1/identitiesCe-Specversion: 1.0Ce-Subject: The unique identifier of this specific identityCe-Time: 2026-04-20T19:01:57.802096845ZCe-Type: dev.chainguard.api.iam.identity.updated.v1Content-Length: 245Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;Relationship&#34;: null, &#34;description&#34;: &#34;The human readable description of identity&#34;, &#34;id&#34;: &#34;The unique identifier of this specific identity&#34;, &#34;name&#34;: &#34;The human readable name of identity&#34; } } Method: Delete Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/iam/v1/identitiesCe-Specversion: 1.0Ce-Subject: UIDP of the recordCe-Time: 2026-04-20T19:01:57.802368893ZCe-Type: dev.chainguard.api.iam.identity.deleted.v1Content-Length: 92Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;id&#34;: &#34;UIDP of the record&#34; } } Service: iam - IdentityProviders Method: Create Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/iam/v1/identityProvidersCe-Specversion: 1.0Ce-Subject: UIDP of identity providerCe-Time: 2026-04-20T19:01:57.794979278ZCe-Type: dev.chainguard.api.iam.identity_providers.created.v1Content-Length: 378Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;identity_provider&#34;: { &#34;Configuration&#34;: null, &#34;description&#34;: &#34;The human readable description of identity provider&#34;, &#34;id&#34;: &#34;The UIDP of the IAM group to nest this identity provider under&#34;, &#34;name&#34;: &#34;The human readable name of identity provider&#34; }, &#34;parent_id&#34;: &#34;The UIDP of the IAM group to nest this identity provider under&#34; } } Method: Update Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/iam/v1/identityProvidersCe-Specversion: 1.0Ce-Subject: The UIDP of the IAM group to nest this identity provider underCe-Time: 2026-04-20T19:01:57.795279519ZCe-Type: dev.chainguard.api.iam.identity_providers.updated.v1Content-Length: 279Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;Configuration&#34;: null, &#34;description&#34;: &#34;The human readable description of identity provider&#34;, &#34;id&#34;: &#34;The UIDP of the IAM group to nest this identity provider under&#34;, &#34;name&#34;: &#34;The human readable name of identity provider&#34; } } Method: Delete Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/iam/v1/identityProvidersCe-Specversion: 1.0Ce-Subject: UIDP of the IdPCe-Time: 2026-04-20T19:01:57.795516272ZCe-Type: dev.chainguard.api.iam.identity_providers.deleted.v1Content-Length: 89Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;id&#34;: &#34;UIDP of the IdP&#34; } } Service: iam - RoleBindings Method: Create Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/iam/v1/rolebindingsCe-Specversion: 1.0Ce-Subject: UIDP of the Role to bindCe-Time: 2026-04-20T19:01:57.797698371ZCe-Type: dev.chainguard.api.iam.rolebindings.created.v1Content-Length: 261Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;parent&#34;: &#34;The Group UIDP path under which the new RoleBinding resides&#34;, &#34;role_binding&#34;: { &#34;id&#34;: &#34;UID of this role binding&#34;, &#34;identity&#34;: &#34;UID of the Identity to bind&#34;, &#34;role&#34;: &#34;UIDP of the Role to bind&#34; } } } Method: CreateBatch Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/iam/v1/rolebindings/batchCe-Specversion: 1.0Ce-Subject: UID of this role binding, under a parent group UIDPCe-Time: 2026-04-20T19:01:57.798758994ZCe-Type: dev.chainguard.api.iam.rolebindings.created.batch.v1Content-Length: 220Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;role_bindings&#34;: [ { &#34;id&#34;: &#34;UID of this role binding, under a parent group UIDP&#34;, &#34;identity&#34;: &#34;UID of the Identity to bind&#34;, &#34;role&#34;: &#34;UIDP of the Role to bind&#34; } ] } } Method: Update Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/iam/v1/rolebindingsCe-Specversion: 1.0Ce-Subject: UID of this role bindingCe-Time: 2026-04-20T19:01:57.798992401ZCe-Type: dev.chainguard.api.iam.rolebindings.updated.v1Content-Length: 173Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;id&#34;: &#34;UID of this role binding&#34;, &#34;identity&#34;: &#34;UID of the Identity to bind&#34;, &#34;role&#34;: &#34;UIDP of the Role to bind&#34; } } Method: Delete Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/iam/v1/rolebindingsCe-Specversion: 1.0Ce-Subject: UID of the recordCe-Time: 2026-04-20T19:01:57.799152039ZCe-Type: dev.chainguard.api.iam.rolebindings.deleted.v1Content-Length: 91Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;id&#34;: &#34;UID of the record&#34; } } Service: registry - Registry Method: CreateRepo Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/registry/v1/reposCe-Specversion: 1.0Ce-Subject: The identifier of this specific repositoryCe-Time: 2026-04-20T19:01:57.79963411ZCe-Type: dev.chainguard.api.platform.registry.repo.created.v1Content-Length: 243Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;id&#34;: &#34;The identifier of this specific repository&#34;, &#34;name&#34;: &#34;The name is the human-readable name of the repository&#34;, &#34;sync_config&#34;: { &#34;expiration&#34;: {}, &#34;source&#34;: &#34;Repo ID to sync from&#34; } } } Method: UpdateRepo Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/registry/v1/reposCe-Specversion: 1.0Ce-Subject: The identifier of this specific repositoryCe-Time: 2026-04-20T19:01:57.800006577ZCe-Type: dev.chainguard.api.platform.registry.repo.updated.v1Content-Length: 243Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;id&#34;: &#34;The identifier of this specific repository&#34;, &#34;name&#34;: &#34;The name is the human-readable name of the repository&#34;, &#34;sync_config&#34;: { &#34;expiration&#34;: {}, &#34;source&#34;: &#34;Repo ID to sync from&#34; } } } Method: DeleteRepo Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/registry/v1/reposCe-Specversion: 1.0Ce-Subject: The identifier of this specific repositoryCe-Time: 2026-04-20T19:01:57.800198115ZCe-Type: dev.chainguard.api.platform.registry.repo.deleted.v1Content-Length: 116Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;id&#34;: &#34;The identifier of this specific repository&#34; } } Method: CreateTag Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/registry/v1/tagsCe-Specversion: 1.0Ce-Subject: The identifier of this specific tagCe-Time: 2026-04-20T19:01:57.800367031ZCe-Type: dev.chainguard.api.platform.registry.tag.created.v1Content-Length: 197Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;digest&#34;: &#34;The digest of the manifest with this tag&#34;, &#34;id&#34;: &#34;The identifier of this specific tag&#34;, &#34;name&#34;: &#34;The unique name of the tag&#34; } } Method: UpdateTag Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/registry/v1/tagsCe-Specversion: 1.0Ce-Subject: The identifier of this specific tagCe-Time: 2026-04-20T19:01:57.800540836ZCe-Type: dev.chainguard.api.platform.registry.tag.updated.v1Content-Length: 197Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;digest&#34;: &#34;The digest of the manifest with this tag&#34;, &#34;id&#34;: &#34;The identifier of this specific tag&#34;, &#34;name&#34;: &#34;The unique name of the tag&#34; } } Method: DeleteTag Example HTTP Headers POST / HTTP/1.1Host: console-api.enforce.devAccept-Encoding: gzipAuthorization: Bearer oidctokenCe-Audience: customerCe-Group: UID of parent groupCe-Id: cloudevent generated UUIDCe-Source: https://console-api.enforce.dev/registry/v1/tagsCe-Specversion: 1.0Ce-Subject: The identifier of this specific tagCe-Time: 2026-04-20T19:01:57.800721253ZCe-Type: dev.chainguard.api.platform.registry.tag.deleted.v1Content-Length: 109Content-Type: application/jsonUser-Agent: Chainguard Enforce Example HTTP Body { &#34;actor&#34;: { &#34;subject&#34;: &#34;identity that triggered the event&#34; }, &#34;body&#34;: { &#34;id&#34;: &#34;The identifier of this specific tag&#34; } }
