Skip to main content
The OpenLineage component, @bijection/openlineage, is not yet distributed on npm. Its token providers are installed from its public repository, bijectionhq/openlineage.
The OpenLineage component accepts standard OpenLineage events at POST /api/lineage on your deployment’s HTTP actions host. A reporter, such as Airflow, dbt or a Spark job, sends them as one of your services. Four things take part:
  • A source in your defineOpenLineage declaration names the service and the job and dataset namespaces it may report.
  • A service in your access model is the reporter’s identity. It holds a role that permits report on its source.
  • A credential authenticates the service: a key bijection auth credential create writes, or a machine client of your identity provider that bijection auth credential add trusts.
  • A token provider in the reporter’s OpenLineage HTTP transport turns the credential into a short-lived bearer token for each request.

Declare the source

Name the service that reports for each source, and every namespace it reports:
bijection/lineage.ts
A service reports for at most one source. Namespaces are exact: an event whose job or any dataset carries another namespace is refused, and the refusal names the namespace to add. Airflow reports its jobs under the namespace set by AIRFLOW__OPENLINEAGE__NAMESPACE, dbt under OPENLINEAGE_NAMESPACE and Spark under spark.openlineage.namespace; dataset namespaces come from the warehouse connection, such as postgres://host:5432 or snowflake://<account>. The service is declared in your access model with a ceiling that allows reporting. The component asks your access policy about these resource kinds:
bijection/access.ts
Answer each request with the same-named permission:
bijection/lineageAccess.ts

Create a credential

A credential belongs to one deployment; create one for each of development, staging and production.
This installs the credential’s public key and writes the private key to airflow.production.servicekey. Bijection keeps no copy. Store the file’s one line as a secret where the reporter runs, then delete the file. The token providers below sign a one-minute token per minute with it.
Either way the deployment verifies the reporter as the service airflow. bijection auth credential revoke <credential> refuses its tokens from then on.

Grant reporting

Grant the service the reporter role on its source:
Withdrawing the grant stops reporting at once. The grant permits nothing beyond reporting events for that source.

Configure the reporter

Install the token provider where the reporter runs, then point the OpenLineage HTTP transport at your deployment’s HTTP actions host, https://<deployment>.bijection.run, with the endpoint api/lineage.
Install the Python token provider next to the OpenLineage provider:
Then set the transport, for example as an environment variable:
credential takes the key’s one line instead of a file.
With an identity provider’s machine client, use its client-credentials token provider instead: The Java provider sends no audience; with Auth0, set the API as the tenant’s default audience.

When a report is refused

Every refusal names the check that failed and links the section of this page that fixes it, in error.code and error.docs of the response body (in failed_events for a batch). Refusals are not retriable as sent. Capacity and availability failures (429 and 503) are; see the component’s limits in Inspection.