> ## Documentation Index
> Fetch the complete documentation index at: https://anaconda.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# ProjectEvent

The `ProjectEvent` type returned by event operations.

```python theme={null}
from obproject.project_events import ProjectEvent

ProjectEvent(name, project=None, branch=None).publish(payload=None)
ProjectEvent(name, project=None, branch=None).safe_publish(payload=None)
```

Publish events from **outside** a flow-notebooks, deployed apps, scripts. Inside a `@step`, prefer `prj.publish_event()` above.

Parameter

Type

Description

`name`

str

Event name (must match the `event=` in a `@project_trigger`)

`project`

str

Project name. If `None`, reads `OB_PROJECT` env or `current.project_name`.

`branch`

str

Branch name. If `None`, reads `OB_BRANCH` env or extracts from `current.branch_name`.

`payload`

dict

JSON-serializable payload

```python theme={null}
ProjectEvent("model_trained", project="my_prj", branch="main").safe_publish(
    payload={"accuracy": 0.95}
)
```

Events resolve to `prj.{project}.{branch}.{name}`, the same namespace consumed by `@project_trigger`. The equivalent low-level Metaflow call is `ArgoEvent("prj.my_prj.main.model_trained").safe_publish(payload=...)`.
