CloudEvents (cloudevents.io) is a specification for describing event data in a common way. The specification is under the Cloud Native Computing Foundation (CNCF) and is organized by the CNCF's Serverless Working Group.
Eventarc delivers events to the event receiver in the CloudEvents format through an HTTP request.
HTTP request headers
Target services receive events from event routers as HTTP POST
requests formatted to the CloudEvents version 1.0
HTTP protocol binding specification. Each HTTP request contains event-specific
headers and a body, and is sent to the root URL path (/
) of the service.
In addition to other HTTP headers, all events have the following CloudEvents HTTP headers:
Header | Description | Example |
---|---|---|
ce-id | Unique identifier for the event | 1096434104173400 |
ce-source | Identifies the source of the event | //pubsub.googleapis.com/projects/my-project/topics/my-topic |
ce-specversion | The CloudEvents specification version used for this event | 1.0 |
ce-type | The type of event data | google.cloud.pubsub.topic.v1.messagePublished |
ce-time | Event generation time, in RFC 3339 format (optional) | 2020-12-20T13:37:33.647Z |
HTTP payload format
Cloud Audit Logs
Events of type google.cloud.audit.log.v1.written
have the following format:
Headers
ce-specversion: 1.0 ce-type: google.cloud.audit.log.v1.written ce-source: //SERVICE_NAME/projects/PROJECT_ID ce-id: MESSAGE_ID ce-time: PUBLISH_TIME Content-Type: application/json; charset=utf-8 Content-Length: CONTENT_LENGTH
SERVICE_NAME
: the Google API URI for the service issuing the event; for example,bigquery.googleapis.com
for events from BigQuery.PROJECT_ID
: your GCP project ID.MESSAGE_ID
,PUBLISH_TIME
,CONTENT_LENGTH
: system-generated.
Body
The payload is a JSON object detailing the Cloud Audit Logs event. In
protoPayload
you can find the resourceName
, serviceName
, and methodName
values. For more information, see
Determine event filters for Cloud Audit Logs.
Pub/Sub
Events of type google.cloud.pubsub.topic.v1.messagePublished
have the following
format:
Headers
ce-specversion: 1.0 ce-type: google.cloud.pubsub.topic.v1.messagePublished ce-source: //pubsub.googleapis.com/TOPIC ce-id: MESSAGE_ID ce-time: PUBLISH_TIME Content-Type: application/json; charset=utf-8 Content-Length: CONTENT_LENGTH
TOPIC
: the Pub/Sub topic the event was published to.MESSAGE_ID
,PUBLISH_TIME
,CONTENT_LENGTH
: system-generated.
Body
The payload is a Pub/Sub push message. In the data
field you
can find the message as a Base64-encoded string. See the
example in this document.
Open source repository
The structure of the HTTP body for all events are available on the CloudEvents GitHub repository.
The repository contains the following to help you understand and use CloudEvents data in your programming language:
- Google Protocol Buffers for CloudEvents data payloads
- Generated JSON schemas
- A public JSON schema catalog
Links to client libraries are also included.
Common events
Protocol Buffers (or protobufs) represent the data within events that are generated by Eventarc. Protocol Buffers for CloudEvents are provided as machine-readable schemas, allowing libraries of data types to be created and making it easier to consume events.
There are two protobuf messages that are relevant for any given CloudEvent type:
- The envelope message that represents the complete CloudEvent,
including any extension attributes; for example,
AuditLogWrittenEvent
. - The data message; for example,
LogEntryData
orStorageObjectData
.
StorageObjectData
as the data message. Each envelope message
specifies the CloudEvent type that it is associated with through a proto annotation.
For more information, see Relationship between protobuf messages and CloudEvent types.
The following tables detail the components of some common events:
Cloud Audit Logs
Proto files | google/events/cloud/audit/v1/events.proto google/events/cloud/audit/v1/data.proto |
Envelope message | google.events.cloud.audit.v1.AuditLogWrittenEvent |
Data message | google.events.cloud.audit.v1.LogEntryData |
Event type (when an audit log entry is written) | google.cloud.audit.log.v1.written |
Event extensions |
|
Example |
Pub/Sub audit log BigQuery audit log |
Cloud Storage
Proto files |
google/events/cloud/storage/v1/events.proto google/events/cloud/storage/v1/data.proto |
Envelope messages | google.events.cloud.storage.v1.ObjectFinalizedEvent google.events.cloud.storage.v1.ObjectArchivedEvent google.events.cloud.storage.v1.ObjectDeletedEvent google.events.cloud.storage.v1.ObjectMetadataUpdatedEvent |
Data message | google.events.cloud.storage.v1.StorageObjectData |
Resource |
Objects |
Event types (when a Cloud Storage job is finalized, archived, deleted, updated) |
google.cloud.storage.object.v1.finalized google.cloud.storage.object.v1.archived google.cloud.storage.object.v1.deleted google.cloud.storage.object.v1.metadataUpdated |
Examples |
Simple Complex |
Firestore
Proto files |
google/events/cloud/firestore/v1/events.proto google/events/cloud/firestore/v1/data.proto |
Envelope messages | google.events.cloud.firestore.v1.DocumentCreatedEvent google.events.cloud.firestore.v1.DocumentUpdatedEvent google.events.cloud.firestore.v1.DocumentDeletedEvent google.events.cloud.firestore.v1.DocumentWrittenEvent |
Data message | google.events.cloud.firestore.v1.DocumentEventData |
Resource |
Document
|
Event types (when a Firestore document is created, updated, deleted, written) |
google.cloud.firestore.document.v1.created google.cloud.firestore.document.v1.updated google.cloud.firestore.document.v1.deleted google.cloud.firestore.document.v1.written |
Examples |
Simple Complex |
Pub/Sub
Proto files |
google/events/cloud/pubsub/v1/events.proto google/events/cloud/pubsub/v1/data.proto |
Envelope message | google.events.cloud.pubsub.v1.MessagePublishedEvent |
Data message | google.events.cloud.pubsub.v1.MessagePublishedData |
Resource |
PubsubMessage
|
Event type (when a Pub/Sub message is published) |
google.cloud.pubsub.topic.v1.messagePublished |
Examples | Text |