Why contribute?

When your pull request merges to maximilianoPizarro/openshift-integration-operator, GitHub Pages republishes docs/flow-catalog.json within minutes. Every cluster with the operator installed loads that catalog from:

https://maximilianopizarro.github.io/openshift-integration-operator/flow-catalog.json

Users see your template in Integration Platform → Create IntegrationFlow → Browse templates after refreshing the modal. No Helm upgrade, no operator RC, no console-plugin image rebuild is required for catalog-only changes.

Multi-cluster reach: ROSA, ARO, on-prem OpenShift — any environment that already runs the operator receives your flow globally via the shared GitHub Pages URL.

What to contribute

  • Security Report
  • ArtifactPurposeVisible in cluster
    docs/flow-catalog.json Template catalog entry (console create form + Ready Flows Examples Catalog) After GitHub Pages deploy
    k8s/examples/NN-*.yaml Runnable IntegrationFlow CR for Quick Try After oc apply
    Both (recommended) Template + one-click YAML for docs and CI Catalog + manual apply

    Flow requirements

    • deploymentMode: EPHEMERAL for public-API demos (no Git, Tekton, or secrets)
    • Public HTTP APIs only — no API keys in the repository
    • Camel components covered by camel-worker-http or camel-worker-full
    • Community flows in publicapi category must include an owner field (GitHub username)

    Catalog entry fields

    FieldRequiredExample
    nameYespublicapi-open-meteo-weather
    ownerYes (community)your-github-username
    typeYesCAMEL_ROUTE
    patternYesScheduled Public API Poll
    componentsYestimer, https, jsonpath, choice
    descriptionYesOne-line summary
    kaotoDesignYesYAML route body (escaped in JSON)

    Step-by-step PR workflow

    1. Fork and branch
      git clone https://github.com/<your-user>/openshift-integration-operator.git
      cd openshift-integration-operator
      git checkout -b contrib/my-public-api-flow
    2. Add catalog entry — append to the publicapi category in docs/flow-catalog.json with your owner field.
    3. Add runnable YAML — e.g. k8s/examples/22-ephemeral-open-meteo-weather.yaml with label platform.io/flow-owner: <owner>.
    4. Register validation — add your flow name to REQUIRES_OWNER in scripts/validate-ready-flows.js (same PR).
    5. Validate locally
      bash scripts/prepare-flow-contribution.sh
      # or individually:
      node scripts/validate-ready-flows.js
      python3 scripts/validate-catalog.py
    6. Open PR to main with checklist below and your GitHub username in the description.

    PR checklist

    • No operator RC — PR must not modify src/, pom.xml, bundle/, or helm/openshift-integration-operator/
    • Owner setowner in JSON and platform.io/flow-owner label in YAML
    • Validation passesbash scripts/prepare-flow-contribution.sh exits 0
    • Public API only — no secrets, tokens, or private endpoints

    Reference example: Open-Meteo weather

    The repository includes a complete community contribution you can copy: publicapi-open-meteo-weather polls Open-Meteo (no API key) every 2 minutes and logs temperature alerts for Madrid.

    oc apply -f k8s/examples/22-ephemeral-open-meteo-weather.yaml
    oc logs -f deploy/iflow-ephemeral-open-meteo-weather-worker -n openshift-integration

    Browse the template on Ready Flows Examples Catalog — look for the @owner badge.

  • Security Report
  • Automate with GitHub Actions

    Workflow Contribute flow example (Open-Meteo PR) demonstrates validation and PR creation. Run it manually from Actionsworkflow_dispatch:

    • owner — your GitHub username (required)
    • dry_runtrue to validate only, false to open a PR
    # Local equivalent
    bash scripts/prepare-flow-contribution.sh --owner your-github-username
    bash scripts/prepare-flow-contribution.sh

    See .github/workflows/contrib-flow-example.yml. Forks can copy this workflow; upstream PRs are typically opened manually from your fork.

    After a successful merge

    Document and verify the publication path:

    1. GitHub Pages workflow deploys docs/ (usually within 2–5 minutes)
    2. Confirm the catalog contains your flow:
      curl -s https://maximilianopizarro.github.io/openshift-integration-operator/flow-catalog.json \
        | python3 -c "import sys,json; d=json.load(sys.stdin); \
      f=[x for c in d if c['id']=='publicapi' for x in c['flows'] if x['name']=='publicapi-open-meteo-weather']; \
      print(f[0]['owner'] if f else 'NOT FOUND')"
    3. In OpenShift Console: Integration Platform → Integration Flows → CreateBrowse templates → search your flow name
    4. Optional cluster test: oc apply -f k8s/examples/22-ephemeral-open-meteo-weather.yaml
    Success criteria: flow visible in published JSON + searchable in console template modal + worker pod reaches Running phase — all without upgrading the operator Helm release.

    Contributing operator code

    Changes to the Java operator, CRDs, or Helm chart follow a separate process (fork, mvn test, PR). Those changes do require a new operator image release. Flow catalog contributions do not.

    See the README Contributing section for operator development.