Skip to main content

Integration Events

As described in Architecture Overview holi uses Google Cloud Pub/Sub to communicate asynchronously and reliably between applications.

Event Types

EmitterTopicEvent NameDescription
okunaokuna_$ENVUserNameUpdatedEmitted when a user updates their username.
okunaokuna_$ENVUserEmailUpdatedEmitted when a user updates their email address.
okunaokuna_$ENVUserDeletedEmitted when a user deletes their account.
okunaokuna_$ENVSpaceCreatedEmitted when a user creates a space.
okunaokuna_$ENVSpaceUpdatedEmitted when a user updates a spaces attributes (e.g. name/slug)
okunaokuna_$ENVSpaceUserAddedEmitted when a user joins a space.
okunaokuna_$ENVSpaceUserLeftEmitted when a user leaves a space.
okunaokuna_$ENVSpaceUserRemovedEmitted when a user is removed from a space by a space administrator.
okunaokuna_$ENVSpaceDeletedEmitted when a space is deleted.
okunaokuna_$ENVTaskCreatedEmitted when a space task is created.
okunaokuna_$ENVTaskUpdatedEmitted when a space task is updated.
okunaokuna_$ENVTaskDeletedEmitted when a space task is deleted.
donations crawlerdonations_$ENVDonationCreatedEmitted when the donation crawler finds a new donation project.
donations crawlerdonations_$ENVDonationUpdatedEmitted when a previously known donation project was updated.
donations crawlerdonations_$ENVDonationDeletedEmitted when the donation crawler detects that a donation project was deleted.
volunteering crawlerexternal-data-$ENVVolunteeringDeletedEmitted when the donation crawler detects that a donation project was deleted.

Event Payloads

Messages on Google Cloud Pub/Sub follow this (exemplary) structure:

{
"message": {
"data": "<BASE64_ENCODED_PAYLOAD>",
"attributes": {
"eventType": "SpaceCreated",
"eventVersion": "1.0.0"
}
},
"subscription": "projects/MY-PROJECT/subscriptions/MY-SUB"
}

For every event emitted by a holi emitter two key/value pairs are to be added to the attributes object:

  • eventType: name of the event
  • eventVersion: version of the event (uses semantic versioning)

At this point of time, there's no dedicated documentation for the data field of the event (which varies depending on eventType). Please refer to the publisher source code in

to learn more about the payloads.

Publish/Subscribe Topics

Currently, topics are separated per environment only: okuna_$ENVIRONMENT (in which $ENVIRONMENT is either staging or production).