chainctl
chainctl Chainguard Control
For the complete documentation index, see llms.txt.
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://<Your webhook URL>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.
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:
0475f6baca584a8964a6bce6b74dbe78dd8805b6b74ce966caf448d1b74ce966caf448d1 with its own SUID of dda9aab2d2d90f9eThe complete UIDP in the event’s Ce-Subject header would be:
0475f6baca584a8964a6bce6b74dbe78dd8805b6/b74ce966caf448d1/dda9aab2d2d90f9e/1a4b29ca6df80013Every Chainguard event has a JWT formatted OIDC ID token in its Authorization header. For authorization purposes, there are two important fields to validate:
iss field to ensure that the issuer is Chainguard, specifically https://issuer.enforce.dev.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.
Chainguard CloudEvents are delivered from a stable set of egress IP
addresses. These are also published as A records on egress.cgr.dev, so you
can allowlist that name instead of hard-coding the individual addresses:
34.132.193.4035.237.242.3735.230.121.2034.85.183.217The following list of services and methods show example HTTP headers and bodies for public facing Chainguard events.
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-08-06T11:47:23.252076264Z
Ce-Type: dev.chainguard.registry.pull.v1
Content-Length: 777
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"digest": "The digest of the image being pulled",
"error": {
"code": "The OCI distribution-spec error code",
"message": "The error message",
"status": 0
},
"location": "Location holds the detected approximate location of the client who pulled. For example, \"ColumbusOHUS\" or \"Minato City13JP",
"method": "The method used to pull the image. One of: HEAD or GET",
"remote_address": "",
"repo_id": "The identifier of the repository being pulled from",
"repository": "The identifier of the repository being pulled from",
"tag": "The tag of the image being pulled",
"type": "Type determines whether the object being pulled is a manifest or blob",
"user_agent": "The user-agent of the client who pulled",
"when": "2026-08-06T11:47:23.250154"
}
}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-08-06T11:47:23.250349422Z
Ce-Type: dev.chainguard.registry.push.v1
Content-Length: 707
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"digest": "The digest of the image being pushed",
"error": {
"code": "The OCI distribution-spec error code",
"message": "The error message",
"status": 0
},
"location": "Location holds the detected approximate location of the client who pushed. For example, \"ColumbusOHUS\" or \"Minato City13JP",
"remote_address": "",
"repo_id": "The identifier of the repository being pushed to",
"repository": "The identifier of the repository being pushed to",
"tag": "The tag of the image being pushed",
"type": "Type determines whether the object being pushed is a manifest or blob",
"user_agent": "The user-agent of the client who pushed",
"when": "2026-08-06T11:47:23.250128"
}
}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-08-06T11:47:23.259127589Z
Ce-Type: dev.chainguard.api.auth.registered.v1
Content-Length: 154
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"group": "the group this identity has joined by invitation",
"identity": "Chainguard UIDP"
}
}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-08-06T11:47:23.258439665Z
Ce-Type: dev.chainguard.api.events.subscription.created.v1
Content-Length: 152
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "UIDP identifier of the subscription",
"sink": "Webhook endpoint (http/https URL)"
}
}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-08-06T11:47:23.258547772Z
Ce-Type: dev.chainguard.api.events.subscription.deleted.v1
Content-Length: 119
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "UIDP identifier of the subscription to delete"
}
}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/externalGroupRoleMappings
Ce-Specversion: 1.0
Ce-Subject: UIDP of the mapping
Ce-Time: 2026-08-06T11:47:23.258712649Z
Ce-Type: dev.chainguard.api.iam.external_group_role_mappings.created.v1
Content-Length: 290
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"external_group_id": "The IdP group identifier",
"id": "UIDP of the mapping",
"identity_provider_uidp": "UIDP of the identity provider",
"role_uidp": "UIDP of the Chainguard role",
"scope": "UIDP of the group where the role applies"
}
}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/externalGroupRoleMappings
Ce-Specversion: 1.0
Ce-Subject: UIDP of the mapping
Ce-Time: 2026-08-06T11:47:23.258834068Z
Ce-Type: dev.chainguard.api.iam.external_group_role_mappings.deleted.v1
Content-Length: 93
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "UIDP of the mapping"
}
}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/externalGroupRoleMappings:batchDelete
Ce-Specversion: 1.0
Ce-Subject: UIDP of the identity provider
Ce-Time: 2026-08-06T11:47:23.258979185Z
Ce-Type: dev.chainguard.api.iam.external_group_role_mappings.deleted.batch.v1
Content-Length: 346
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"items": [
{
"external_group_id": "The IdP group identifier",
"id": "UIDP of the mapping",
"identity_provider_uidp": "UIDP of the identity provider",
"role_uidp": "UIDP of the Chainguard role",
"scope": "UIDP of the group where the role applies"
}
],
"parent_id": "UIDP of the identity provider"
}
}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-08-06T11:47:23.252658697Z
Ce-Type: dev.chainguard.api.iam.account_associations.created.v1
Content-Length: 385
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"amazon": {
"account": "Amazon account ID (if applicable)"
},
"description": "description of this association",
"google": {
"project_id": "Google Cloud Project ID (if applicable)",
"project_number": "Google Cloud Project Number (if applicable)"
},
"group": "UIDP with which this account information is associated",
"name": "group name"
}
}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-08-06T11:47:23.252960234Z
Ce-Type: dev.chainguard.api.iam.account_associations.updated.v1
Content-Length: 336
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"amazon": {
"account": "amazon account if applicable"
},
"description": "group description",
"google": {
"project_id": "project id if applicable",
"project_number": "project number if applicable"
},
"group": "UIDP with which this account information is associated",
"name": "group name"
}
}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-08-06T11:47:23.253135527Z
Ce-Type: dev.chainguard.api.iam.account_associations.deleted.v1
Content-Length: 129
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"group": "UIDP of the group whose associations will be deleted"
}
}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-08-06T11:47:23.267614332Z
Ce-Type: dev.chainguard.api.iam.group_invite.created.v1
Content-Length: 145
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"expiration": {
"seconds": 100
},
"id": "group UIDP under which this invite resides"
}
}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-08-06T11:47:23.267766448Z
Ce-Type: dev.chainguard.api.iam.group_invite.deleted.v1
Content-Length: 92
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "UIDP of the record"
}
}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-08-06T11:47:23.254833752Z
Ce-Type: dev.chainguard.api.iam.group.created.v1
Content-Length: 169
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"description": "group description",
"id": "group UIDP under which this group resides",
"name": "group name"
}
}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-08-06T11:47:23.255078295Z
Ce-Type: dev.chainguard.api.iam.group.updated.v1
Content-Length: 169
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"description": "group description",
"id": "group UIDP under which this group resides",
"name": "group name"
}
}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-08-06T11:47:23.255207531Z
Ce-Type: dev.chainguard.api.iam.group.deleted.v1
Content-Length: 92
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "UIDP of the record"
}
}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-08-06T11:47:23.266955016Z
Ce-Type: dev.chainguard.api.iam.identity.created.v1
Content-Length: 329
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"identity": {
"Relationship": null,
"description": "The human readable description of identity",
"id": "The unique identifier of this specific identity",
"name": "The human readable name of identity"
},
"parent_id": "The Group UIDP path under which the new Identity resides"
}
}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-08-06T11:47:23.267125381Z
Ce-Type: dev.chainguard.api.iam.identity.updated.v1
Content-Length: 245
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"Relationship": null,
"description": "The human readable description of identity",
"id": "The unique identifier of this specific identity",
"name": "The human readable name of identity"
}
}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-08-06T11:47:23.267258433Z
Ce-Type: dev.chainguard.api.iam.identity.deleted.v1
Content-Length: 92
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "UIDP of the record"
}
}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-08-06T11:47:23.261463969Z
Ce-Type: dev.chainguard.api.iam.identity_providers.created.v1
Content-Length: 378
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"identity_provider": {
"Configuration": null,
"description": "The human readable description of identity provider",
"id": "The UIDP of the IAM group to nest this identity provider under",
"name": "The human readable name of identity provider"
},
"parent_id": "The UIDP of the IAM group to nest this identity provider under"
}
}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-08-06T11:47:23.26163315Z
Ce-Type: dev.chainguard.api.iam.identity_providers.updated.v1
Content-Length: 279
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"Configuration": null,
"description": "The human readable description of identity provider",
"id": "The UIDP of the IAM group to nest this identity provider under",
"name": "The human readable name of identity provider"
}
}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-08-06T11:47:23.261773058Z
Ce-Type: dev.chainguard.api.iam.identity_providers.deleted.v1
Content-Length: 89
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "UIDP of the IdP"
}
}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 identity provider
Ce-Time: 2026-08-06T11:47:23.261922254Z
Ce-Type: dev.chainguard.api.iam.identity_providers.scim_token.generated.v1
Content-Length: 250
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"endpoint_url": "SCIM endpoint URL for the identity provider",
"etag": "Opaque version of the SCIM configuration",
"expire_time": {},
"identity_provider_uid": "UIDP of the identity provider"
}
}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 identity provider
Ce-Time: 2026-08-06T11:47:23.262077763Z
Ce-Type: dev.chainguard.api.iam.identity_providers.scim_token.regenerated.v1
Content-Length: 319
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"endpoint_url": "SCIM endpoint URL for the identity provider",
"etag": "Opaque version of the SCIM configuration",
"expire_time": {},
"identity_provider_uid": "UIDP of the identity provider",
"previous_token_expire_time": {},
"requested_overlap": {
"seconds": 3600
}
}
}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 identity provider
Ce-Time: 2026-08-06T11:47:23.262214639Z
Ce-Type: dev.chainguard.api.iam.identity_providers.scim_token.revoked.v1
Content-Length: 189
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"etag": "Opaque version of the SCIM configuration",
"identity_provider_uid": "UIDP of the identity provider",
"revoke_time": {}
}
}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 identity provider
Ce-Time: 2026-08-06T11:47:23.262348706Z
Ce-Type: dev.chainguard.api.iam.identity_providers.scim_enabled.updated.v1
Content-Length: 187
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"enabled": true,
"etag": "Opaque version of the SCIM configuration",
"identity_provider_uid": "UIDP of the identity provider"
}
}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-08-06T11:47:23.266272605Z
Ce-Type: dev.chainguard.api.iam.rolebindings.created.v1
Content-Length: 261
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"parent": "The Group UIDP path under which the new RoleBinding resides",
"role_binding": {
"id": "UID of this role binding",
"identity": "UID of the Identity to bind",
"role": "UIDP of the Role to bind"
}
}
}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-08-06T11:47:23.266405872Z
Ce-Type: dev.chainguard.api.iam.rolebindings.created.batch.v1
Content-Length: 220
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"role_bindings": [
{
"id": "UID of this role binding, under a parent group UIDP",
"identity": "UID of the Identity to bind",
"role": "UIDP of the Role to bind"
}
]
}
}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-08-06T11:47:23.266523404Z
Ce-Type: dev.chainguard.api.iam.rolebindings.updated.v1
Content-Length: 173
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "UID of this role binding",
"identity": "UID of the Identity to bind",
"role": "UIDP of the Role to bind"
}
}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-08-06T11:47:23.266641135Z
Ce-Type: dev.chainguard.api.iam.rolebindings.deleted.v1
Content-Length: 91
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "UID of the record"
}
}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/roles
Ce-Specversion: 1.0
Ce-Subject: UIDP of the role under the group
Ce-Time: 2026-08-06T11:47:23.262525976Z
Ce-Type: dev.chainguard.api.iam.roles.created.v1
Content-Length: 159
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"description": "role description",
"name": "role name",
"uid": "UIDP of the role under the group"
}
}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/roles
Ce-Specversion: 1.0
Ce-Subject: UIDP of the role under the group
Ce-Time: 2026-08-06T11:47:23.262654227Z
Ce-Type: dev.chainguard.api.iam.roles.updated.v1
Content-Length: 159
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"description": "role description",
"name": "role name",
"uid": "UIDP of the role under the group"
}
}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/roles
Ce-Specversion: 1.0
Ce-Subject: UIDP of the role to delete
Ce-Time: 2026-08-06T11:47:23.262798944Z
Ce-Type: dev.chainguard.api.iam.roles.deleted.v1
Content-Length: 101
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"uid": "UIDP of the role to delete"
}
}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/terms
Ce-Specversion: 1.0
Ce-Subject: Chainguard UIDP of the organization
Ce-Time: 2026-08-06T11:47:23.255379784Z
Ce-Type: dev.chainguard.api.iam.terms.accepted.v1
Content-Length: 159
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"document_ids": [
"guardener-tos.v1",
"sfdpa.v1"
],
"group": "Chainguard UIDP of the organization"
}
}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: UIDP of the destination organization
Ce-Time: 2026-08-06T11:47:23.267385509Z
Ce-Type: dev.chainguard.api.platform.registry.chart.added.v1
Content-Length: 208
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"repos": [
{
"created": true,
"id": "The UIDP of the created repo",
"name": "The path of the created repo relative to the destination organization"
}
]
}
}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-08-06T11:47:23.263106657Z
Ce-Type: dev.chainguard.api.platform.registry.repo.created.v1
Content-Length: 243
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "The identifier of this specific repository",
"name": "The name is the human-readable name of the repository",
"sync_config": {
"expiration": {},
"source": "Repo ID to sync from"
}
}
}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-08-06T11:47:23.264072549Z
Ce-Type: dev.chainguard.api.platform.registry.repo.updated.v1
Content-Length: 243
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "The identifier of this specific repository",
"name": "The name is the human-readable name of the repository",
"sync_config": {
"expiration": {},
"source": "Repo ID to sync from"
}
}
}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-08-06T11:47:23.265051089Z
Ce-Type: dev.chainguard.api.platform.registry.repo.deleted.v1
Content-Length: 116
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "The identifier of this specific repository"
}
}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-08-06T11:47:23.265220406Z
Ce-Type: dev.chainguard.api.platform.registry.tag.created.v1
Content-Length: 197
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"digest": "The digest of the manifest with this tag",
"id": "The identifier of this specific tag",
"name": "The unique name of the tag"
}
}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-08-06T11:47:23.265370858Z
Ce-Type: dev.chainguard.api.platform.registry.tag.updated.v1
Content-Length: 197
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"digest": "The digest of the manifest with this tag",
"id": "The identifier of this specific tag",
"name": "The unique name of the tag"
}
}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-08-06T11:47:23.265494934Z
Ce-Type: dev.chainguard.api.platform.registry.tag.deleted.v1
Content-Length: 109
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "The identifier of this specific tag"
}
}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/policies/v1/bindings
Ce-Specversion: 1.0
Ce-Subject: UIDP of the binding
Ce-Time: 2026-08-06T11:47:23.253963463Z
Ce-Type: dev.chainguard.api.policies.bindings.created.v1
Content-Length: 245
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"created_at": {},
"id": "UIDP of the binding",
"mode": 1,
"policy": "UIDP of the policy bound to the parent",
"resource_types": [
"Resource type(s) the binding applies to"
],
"updated_at": {}
}
}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/policies/v1/bindings
Ce-Specversion: 1.0
Ce-Subject: UIDP of the binding
Ce-Time: 2026-08-06T11:47:23.2541521Z
Ce-Type: dev.chainguard.api.policies.bindings.updated.v1
Content-Length: 245
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"created_at": {},
"id": "UIDP of the binding",
"mode": 1,
"policy": "UIDP of the policy bound to the parent",
"resource_types": [
"Resource type(s) the binding applies to"
],
"updated_at": {}
}
}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/policies/v1/bindings
Ce-Specversion: 1.0
Ce-Subject: UIDP of the binding
Ce-Time: 2026-08-06T11:47:23.254290184Z
Ce-Type: dev.chainguard.api.policies.bindings.deleted.v1
Content-Length: 93
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "UIDP of the binding"
}
}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/policies/v1/overrides
Ce-Specversion: 1.0
Ce-Subject: UIDP of the override
Ce-Time: 2026-08-06T11:47:23.254430052Z
Ce-Type: dev.chainguard.api.policies.overrides.created.v1
Content-Length: 303
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"created_at": {},
"created_by": "Identity of the actor that created the override",
"digest": "Digest of the image being waived",
"id": "UIDP of the override",
"policy_id": "UIDP of the policy being waived",
"reason": "Justification for the waiver"
}
}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/policies/v1/overrides
Ce-Specversion: 1.0
Ce-Subject: UIDP of the override
Ce-Time: 2026-08-06T11:47:23.254621554Z
Ce-Type: dev.chainguard.api.policies.overrides.deleted.v1
Content-Length: 94
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "UIDP of the override"
}
}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/policies/v1/policies
Ce-Specversion: 1.0
Ce-Subject: UIDP of the policy
Ce-Time: 2026-08-06T11:47:23.25337315Z
Ce-Type: dev.chainguard.api.policies.policies.created.v1
Content-Length: 337
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"created_at": {},
"description": "Description of the policy",
"expression": "Rego expression that defines the policy",
"id": "UIDP of the policy",
"name": "Name of the policy",
"policy_type": 2,
"supported_resource_type": "Versioned resource type the policy supports",
"updated_at": {}
}
}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/policies/v1/policies
Ce-Specversion: 1.0
Ce-Subject: UIDP of the policy
Ce-Time: 2026-08-06T11:47:23.253616349Z
Ce-Type: dev.chainguard.api.policies.policies.updated.v1
Content-Length: 337
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"created_at": {},
"description": "Description of the policy",
"expression": "Rego expression that defines the policy",
"id": "UIDP of the policy",
"name": "Name of the policy",
"policy_type": 2,
"supported_resource_type": "Versioned resource type the policy supports",
"updated_at": {}
}
}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/policies/v1/policies
Ce-Specversion: 1.0
Ce-Subject: UIDP of the policy
Ce-Time: 2026-08-06T11:47:23.253761745Z
Ce-Type: dev.chainguard.api.policies.policies.deleted.v1
Content-Length: 92
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "UIDP of the policy"
}
}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/v2beta1/accountAssociations
Ce-Specversion: 1.0
Ce-Subject: UIDP with which this account information is associated
Ce-Time: 2026-08-06T11:47:23.260934537Z
Ce-Type: dev.chainguard.api.iam.account_associations.created.v1
Content-Length: 385
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"amazon": {
"account": "Amazon account ID (if applicable)"
},
"description": "description of this association",
"google": {
"project_id": "Google Cloud Project ID (if applicable)",
"project_number": "Google Cloud Project Number (if applicable)"
},
"group": "UIDP with which this account information is associated",
"name": "group name"
}
}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/v2beta1/accountAssociations
Ce-Specversion: 1.0
Ce-Subject: UIDP of the group whose associations will be deleted
Ce-Time: 2026-08-06T11:47:23.261096486Z
Ce-Type: dev.chainguard.api.iam.account_associations.deleted.v1
Content-Length: 129
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"group": "UIDP of the group whose associations will be deleted"
}
}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/v2beta1/accountAssociations
Ce-Specversion: 1.0
Ce-Subject: UIDP with which this account information is associated
Ce-Time: 2026-08-06T11:47:23.261245042Z
Ce-Type: dev.chainguard.api.iam.account_associations.updated.v1
Content-Length: 336
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"amazon": {
"account": "amazon account if applicable"
},
"description": "group description",
"google": {
"project_id": "project id if applicable",
"project_number": "project number if applicable"
},
"group": "UIDP with which this account information is associated",
"name": "group name"
}
}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/v2beta1/externalGroupRoleMappings
Ce-Specversion: 1.0
Ce-Subject: UIDP of the mapping
Ce-Time: 2026-08-06T11:47:23.259289858Z
Ce-Type: dev.chainguard.api.iam.external_group_role_mappings.created.v1
Content-Length: 290
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"external_group_id": "The IdP group identifier",
"id": "UIDP of the mapping",
"identity_provider_uidp": "UIDP of the identity provider",
"role_uidp": "UIDP of the Chainguard role",
"scope": "UIDP of the group where the role applies"
}
}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/v2beta1/externalGroupRoleMappings
Ce-Specversion: 1.0
Ce-Subject: UIDP of the mapping
Ce-Time: 2026-08-06T11:47:23.259395469Z
Ce-Type: dev.chainguard.api.iam.external_group_role_mappings.deleted.v1
Content-Length: 93
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "UIDP of the mapping"
}
}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/v2beta1/externalGroupRoleMappings:batchDelete
Ce-Specversion: 1.0
Ce-Subject: UIDP of the identity provider
Ce-Time: 2026-08-06T11:47:23.259476543Z
Ce-Type: dev.chainguard.api.iam.external_group_role_mappings.deleted.batch.v1
Content-Length: 346
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"items": [
{
"external_group_id": "The IdP group identifier",
"id": "UIDP of the mapping",
"identity_provider_uidp": "UIDP of the identity provider",
"role_uidp": "UIDP of the Chainguard role",
"scope": "UIDP of the group where the role applies"
}
],
"parent_id": "UIDP of the identity provider"
}
}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/v2beta1/groupInvites
Ce-Specversion: 1.0
Ce-Subject: group UIDP under which this invite resides
Ce-Time: 2026-08-06T11:47:23.265849496Z
Ce-Type: dev.chainguard.api.iam.group_invite.created.v1
Content-Length: 145
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"expiration": {
"seconds": 100
},
"id": "group UIDP under which this invite resides"
}
}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/v2beta1/groupInvites
Ce-Specversion: 1.0
Ce-Subject: UIDP of the record
Ce-Time: 2026-08-06T11:47:23.266091767Z
Ce-Type: dev.chainguard.api.iam.group_invite.deleted.v1
Content-Length: 92
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "UIDP of the record"
}
}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/v2beta1/groups
Ce-Specversion: 1.0
Ce-Subject: UIDP of the record
Ce-Time: 2026-08-06T11:47:23.257867904Z
Ce-Type: dev.chainguard.api.iam.group.deleted.v1
Content-Length: 92
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "UIDP of the record"
}
}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/v2beta1/groups
Ce-Specversion: 1.0
Ce-Subject: group UIDP under which this group resides
Ce-Time: 2026-08-06T11:47:23.258074638Z
Ce-Type: dev.chainguard.api.iam.group.created.v1
Content-Length: 169
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"description": "group description",
"id": "group UIDP under which this group resides",
"name": "group name"
}
}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/v2beta1/groups
Ce-Specversion: 1.0
Ce-Subject: group UIDP under which this group resides
Ce-Time: 2026-08-06T11:47:23.258174905Z
Ce-Type: dev.chainguard.api.iam.group.updated.v1
Content-Length: 169
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"description": "group description",
"id": "group UIDP under which this group resides",
"name": "group name"
}
}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/v2beta1/identities
Ce-Specversion: 1.0
Ce-Subject: UIDP of identity
Ce-Time: 2026-08-06T11:47:23.259646108Z
Ce-Type: dev.chainguard.api.iam.identity.created.v1
Content-Length: 329
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"identity": {
"Relationship": null,
"description": "The human readable description of identity",
"id": "The unique identifier of this specific identity",
"name": "The human readable name of identity"
},
"parent_id": "The Group UIDP path under which the new Identity resides"
}
}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/v2beta1/identities
Ce-Specversion: 1.0
Ce-Subject: UIDP of the record
Ce-Time: 2026-08-06T11:47:23.25979448Z
Ce-Type: dev.chainguard.api.iam.identity.deleted.v1
Content-Length: 92
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "UIDP of the record"
}
}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/v2beta1/identities
Ce-Specversion: 1.0
Ce-Subject: The unique identifier of this specific identity
Ce-Time: 2026-08-06T11:47:23.259967445Z
Ce-Type: dev.chainguard.api.iam.identity.updated.v1
Content-Length: 245
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"Relationship": null,
"description": "The human readable description of identity",
"id": "The unique identifier of this specific identity",
"name": "The human readable name of identity"
}
}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/v2beta1/identities:updateIdentityMetadata
Ce-Specversion: 1.0
Ce-Subject: The caller's identity UID
Ce-Time: 2026-08-06T11:47:23.260164675Z
Ce-Type: dev.chainguard.api.iam.identity.metadata.updated.v1
Content-Length: 135
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"name": "The caller's display name",
"uid": "The caller's identity UID"
}
}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/v2beta1/identityProviders
Ce-Specversion: 1.0
Ce-Subject: UIDP of identity provider
Ce-Time: 2026-08-06T11:47:23.256676958Z
Ce-Type: dev.chainguard.api.iam.identity_providers.created.v1
Content-Length: 378
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"identity_provider": {
"Configuration": null,
"description": "The human readable description of identity provider",
"id": "The UIDP of the IAM group to nest this identity provider under",
"name": "The human readable name of identity provider"
},
"parent_id": "The UIDP of the IAM group to nest this identity provider under"
}
}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/v2beta1/identityProviders
Ce-Specversion: 1.0
Ce-Subject: The UIDP of the IAM group to nest this identity provider under
Ce-Time: 2026-08-06T11:47:23.256832914Z
Ce-Type: dev.chainguard.api.iam.identity_providers.updated.v1
Content-Length: 279
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"Configuration": null,
"description": "The human readable description of identity provider",
"id": "The UIDP of the IAM group to nest this identity provider under",
"name": "The human readable name of identity provider"
}
}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/v2beta1/identityProviders
Ce-Specversion: 1.0
Ce-Subject: UIDP of the IdP
Ce-Time: 2026-08-06T11:47:23.256977246Z
Ce-Type: dev.chainguard.api.iam.identity_providers.deleted.v1
Content-Length: 89
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "UIDP of the IdP"
}
}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/v2beta1/identityProviders
Ce-Specversion: 1.0
Ce-Subject: UIDP of the identity provider
Ce-Time: 2026-08-06T11:47:23.257076113Z
Ce-Type: dev.chainguard.api.iam.identity_providers.scim_token.generated.v1
Content-Length: 250
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"endpoint_url": "SCIM endpoint URL for the identity provider",
"etag": "Opaque version of the SCIM configuration",
"expire_time": {},
"identity_provider_uid": "UIDP of the identity provider"
}
}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/v2beta1/identityProviders
Ce-Specversion: 1.0
Ce-Subject: UIDP of the identity provider
Ce-Time: 2026-08-06T11:47:23.257246254Z
Ce-Type: dev.chainguard.api.iam.identity_providers.scim_token.regenerated.v1
Content-Length: 319
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"endpoint_url": "SCIM endpoint URL for the identity provider",
"etag": "Opaque version of the SCIM configuration",
"expire_time": {},
"identity_provider_uid": "UIDP of the identity provider",
"previous_token_expire_time": {},
"requested_overlap": {
"seconds": 3600
}
}
}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/v2beta1/identityProviders
Ce-Specversion: 1.0
Ce-Subject: UIDP of the identity provider
Ce-Time: 2026-08-06T11:47:23.25738301Z
Ce-Type: dev.chainguard.api.iam.identity_providers.scim_token.revoked.v1
Content-Length: 189
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"etag": "Opaque version of the SCIM configuration",
"identity_provider_uid": "UIDP of the identity provider",
"revoke_time": {}
}
}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/v2beta1/identityProviders
Ce-Specversion: 1.0
Ce-Subject: UIDP of the identity provider
Ce-Time: 2026-08-06T11:47:23.257490333Z
Ce-Type: dev.chainguard.api.iam.identity_providers.scim_enabled.updated.v1
Content-Length: 187
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"enabled": true,
"etag": "Opaque version of the SCIM configuration",
"identity_provider_uid": "UIDP of the identity provider"
}
}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/v2beta1/roleBindings
Ce-Specversion: 1.0
Ce-Subject: UIDP of the Role to bind
Ce-Time: 2026-08-06T11:47:23.25571169Z
Ce-Type: dev.chainguard.api.iam.rolebindings.created.v1
Content-Length: 261
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"parent": "The Group UIDP path under which the new RoleBinding resides",
"role_binding": {
"id": "UID of this role binding",
"identity": "UID of the Identity to bind",
"role": "UIDP of the Role to bind"
}
}
}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/v2beta1/roleBindings
Ce-Specversion: 1.0
Ce-Subject: UID of the record
Ce-Time: 2026-08-06T11:47:23.256242473Z
Ce-Type: dev.chainguard.api.iam.rolebindings.deleted.v1
Content-Length: 91
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "UID of the record"
}
}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/v2beta1/roleBindings:batchCreate
Ce-Specversion: 1.0
Ce-Subject: UID of this role binding, under a parent group UIDP
Ce-Time: 2026-08-06T11:47:23.256386333Z
Ce-Type: dev.chainguard.api.iam.rolebindings.created.batch.v1
Content-Length: 220
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"role_bindings": [
{
"id": "UID of this role binding, under a parent group UIDP",
"identity": "UID of the Identity to bind",
"role": "UIDP of the Role to bind"
}
]
}
}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/v2beta1/roleBindings
Ce-Specversion: 1.0
Ce-Subject: UID of this role binding
Ce-Time: 2026-08-06T11:47:23.256502481Z
Ce-Type: dev.chainguard.api.iam.rolebindings.updated.v1
Content-Length: 173
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"id": "UID of this role binding",
"identity": "UID of the Identity to bind",
"role": "UIDP of the Role to bind"
}
}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/v2beta1/roles
Ce-Specversion: 1.0
Ce-Subject: UIDP of the role under the group
Ce-Time: 2026-08-06T11:47:23.26040981Z
Ce-Type: dev.chainguard.api.iam.roles.created.v1
Content-Length: 159
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"description": "role description",
"name": "role name",
"uid": "UIDP of the role under the group"
}
}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/v2beta1/roles
Ce-Specversion: 1.0
Ce-Subject: UIDP of the role under the group
Ce-Time: 2026-08-06T11:47:23.260596712Z
Ce-Type: dev.chainguard.api.iam.roles.updated.v1
Content-Length: 159
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"description": "role description",
"name": "role name",
"uid": "UIDP of the role under the group"
}
}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/v2beta1/roles
Ce-Specversion: 1.0
Ce-Subject: UIDP of the role to delete
Ce-Time: 2026-08-06T11:47:23.260726307Z
Ce-Type: dev.chainguard.api.iam.roles.deleted.v1
Content-Length: 101
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"uid": "UIDP of the role to delete"
}
}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/v2beta1/terms
Ce-Specversion: 1.0
Ce-Subject: Chainguard UIDP of the organization
Ce-Time: 2026-08-06T11:47:23.258309885Z
Ce-Type: dev.chainguard.api.iam.terms.accepted.v1
Content-Length: 159
Content-Type: application/json
User-Agent: Chainguard Enforce{
"actor": {
"subject": "identity that triggered the event"
},
"body": {
"document_ids": [
"guardener-tos.v1",
"sfdpa.v1"
],
"group": "Chainguard UIDP of the organization"
}
}Last updated: 2026-08-06 11:47