Skip to main content
Use this guide to automatically publish data store schema components from .avsc and .proto files whenever changes are pushed to your repository. This workflow scans for schema files, extracts and combines their fields using the recap-core library, and publishes to Gable’s API as a DATA_STORE component. For managing data store components in the UI, see Services & Data Components.

1. Set up your repo

This guide assumes the following repo structure. Add your schema files, publishing script, and GitHub Action using this layout (or adapt the guide to fit your repo structure if different).
Install the required Python dependencies:

2. Add the scan + publish script

Create scripts/publish_schemas.py. The script:
  1. Starts a run to track the relevant git info
  2. Finds all .avsc and .proto files under schemas/.
  3. Converts each file to Recap schema format.
  4. Combines their fields into a single schema.
  5. Publishes the DATA_STORE component to Gable’s ingestion API.

3. Configure the API payload

The API expects one POST per schema with this shape:
  • external_component_id is the UUID that the data store component will be stored under in Gable. It can be any stable UUID that uniquely identifies the data store component.
  • run_id identifies the run associated with the lineage version.
  • external_table_id identifies the specific schema or table.

4. Add the GitHub Action

Create .github/workflows/publish-schemas.yml:

5. Trigger publish of schemas

To publish schemas automatically, merge changes to .avsc or .proto files into main. After the workflow runs, confirm that the data store schemas are visible in Gable and that the generated data store component reflects the expected fields.