🧩 Contexts
The Ocean framework provides a built-in thread-safe global variables store that holds relevant context information for the integration.
Ocean context
The Ocean context is available to the integration code and can be used to simplify the work of the integration developer.
The Ocean context holds the Ocean app along with aliases to ocean functionality, and can be accessed using the ocean
variable.
Context information
Using the Ocean context, the integration can access the following functionality:
ocean.config
: The integration configurationocean.router
: A FastAPI router that can be used to expose integration endpointsocean.integration
: The integration class that provides all the out of the box functionality of an Ocean integrationocean.port_client
: A Port client the Ocean framework uses to communicate with Port's APIocean.on_resync
: A decorator that can be used to register a function to be called when a resync is requestedocean.on_start
: A decorator that can be used to register a function to be called when the integration starts- And more methods that can be used to sync, register, unregister resources that are mentioned in the Sync page
Example
Here is an example snippet showing how to use some of the functions provided by the ocean
context:
from typing import Any
from port_ocean.context.ocean import ocean
from port_ocean.core.ocean_types import ASYNC_GENERATOR_RESYNC_TYPE
@ocean.on_resync("Issue")
async def on_resync_kind(kind: str) -> ASYNC_GENERATOR_RESYNC_TYPE:
# handle the request to resync catalog items of a specific kind
...
@ocean.router.post("/webhook")
async def handle_webhook_request(data: dict[str, Any]) -> None:
# handle an event sent to the integration's app host to the `/integration/webhook` route
# Get the value of the appHost parameter from the integration config
integration_app_host = ocean.integration_config.get("app_host")
await ocean.register_raw("myKind", [data])
# Called once when the integration starts.
@ocean.on_start()
async def on_start() -> None:
# integration startup logic
...
Event context
An event is a representation of an execution of the integration code. Event examples:
- Resync event: an event that is triggered when the integration is requested to perform a full resync of all resource kinds.
- Any Rest Event: an event that is triggered when an HTTP request to one of the integration endpoints is received.
You can access the event context using the event
variable.
The event variable is accessible only when the integration code is executed as a result of an event.
The event context is available to the integration code and can be used to simplify the work of the integration developer when trying to access event related data.