Skip to content
GitHub

ReportArtefact

ReportArtefact manifests define top-level report outputs. Each artefact typically corresponds to one PDF file.

A rendered PDF page from a ReportArtefact showing a sales dashboard
apiVersion: bino.bi/v1alpha1
kind: ReportArtefact
metadata:
  name: sales_report
spec:
  format: xga              # logical page size (e.g. xga, a4, letter)
  orientation: landscape   # portrait | landscape
  language: en             # de | en
  layoutPages:             # optional: LayoutPage selection patterns
    - cover                # exact name match
    - sales-*              # glob pattern
  filename: sales-report.pdf
  title: "Sales Overview"
  description: "Quarterly sales overview for the group."
  subject: "Sales report"
  author: "Group Controlling"
  keywords: ["sales", "quarterly", "internal"]
  signingProfile: corporateSigner

Fields:

  • spec.format – logical page size, default xga.
  • spec.orientationportrait or landscape, default landscape.
  • spec.language – current options: de or en.
  • spec.layoutPages – optional list of patterns to select LayoutPages by metadata.name. Supports glob syntax (*, ?, [abc]). Pages appear in pattern order; within each pattern, pages are sorted alphabetically. Default: ["*"] (all pages matching format).
  • spec.filename – required output filename (relative to output directory).
  • spec.title – required human-readable title; also used in PDF metadata.
  • spec.description – optional description.
  • spec.subject – optional subject stored in PDF metadata.
  • spec.author – optional author name.
  • spec.keywords – optional list of metadata keywords.
  • spec.signingProfile – optional reference to a SigningProfile manifest.
---
apiVersion: bino.bi/v1alpha1
kind: ReportArtefact
metadata:
  name: monthly_sales
spec:
  filename: monthly-sales.pdf
  title: "Monthly Sales Report"
---
apiVersion: bino.bi/v1alpha1
kind: SigningProfile
metadata:
  name: corporateSigner
spec:
  certificate:
    path: ./certs/corporate-cert.pem
  privateKey:
    path: ./certs/corporate-key.pem
  signer:
    name: "Group Controlling"
    location: "Headquarters"
    reason: "Approved financial report"
---
apiVersion: bino.bi/v1alpha1
kind: ReportArtefact
metadata:
  name: annual_sales
spec:
  format: a4
  orientation: portrait
  language: en
  filename: annual-sales.pdf
  title: "Annual Sales Report"
  description: "Yearly consolidated sales figures."
  author: "Group Controlling"
  signingProfile: corporateSigner

By default, a ReportArtefact includes all LayoutPages that match its spec.format. Use spec.layoutPages to explicitly select which pages to include and control their order.

---
apiVersion: bino.bi/v1alpha1
kind: ReportArtefact
metadata:
  name: quarterly-report
spec:
  format: xga
  layoutPages:
    - cover              # cover page first
    - executive-summary  # then summary
    - detail-*           # all detail pages (alphabetically)
    - appendix-*         # appendices last
  filename: quarterly-report.pdf
  title: "Quarterly Report"

Pattern syntax:

  • * matches any sequence of characters
  • ? matches a single character
  • [abc] matches any character in the set

Pages are rendered in the order their patterns appear. Within each pattern, matching pages are sorted alphabetically by name.

You can include the same LayoutPage multiple times with different parameter values. This is useful for generating reports that repeat a layout for different regions, time periods, or other dimensions.

Use the object form with page and params to pass parameter values:

apiVersion: bino.bi/v1alpha1
kind: ReportArtefact
metadata:
  name: regional-report
spec:
  format: xga
  layoutPages:
    # String form - simple page reference
    - cover-page

    # Object form - page with parameters
    - page: regional-sales
      params:
        REGION: EU
        YEAR: "2024"

    # Same page with different parameters
    - page: regional-sales
      params:
        REGION: US
        YEAR: "2024"

    - page: regional-sales
      params:
        REGION: APAC
        YEAR: "2024"

  filename: regional-report.pdf
  title: "Regional Sales Report"

Each parameterized reference creates a unique page instance with the specified values substituted into the LayoutPage’s spec.

You can mix string patterns and parameterized objects in the same list:

layoutPages:
  - cover                          # String: exact name
  - executive-summary              # String: exact name
  - page: regional-sales           # Object: with params
    params:
      REGION: EU
  - page: regional-sales
    params:
      REGION: US
  - appendix-*                     # String: glob pattern

Parameter values can reference environment variables:

layoutPages:
  - page: regional-sales
    params:
      REGION: ${DEFAULT_REGION}      # Resolved from environment
      YEAR: ${REPORT_YEAR:2024}      # With fallback default

This enables runtime configuration of reports without modifying the manifest.

---
# Define a parameterized LayoutPage (in pages.yaml)
apiVersion: bino.bi/v1alpha1
kind: LayoutPage
metadata:
  name: regional-sales
  params:
    - name: REGION
      type: select
      required: true
      options:
        items:
          - value: "EU"
            label: "Europe"
          - value: "US"
            label: "North America"
          - value: "APAC"
            label: "Asia Pacific"
    - name: YEAR
      type: number
      default: "2024"
spec:
  titleBusinessUnit: "Sales Report - ${REGION}"
  pageLayout: split-vertical
  children:
    - kind: Text
      spec:
        value: "Region: ${REGION} | Year: ${YEAR}"
    - kind: Table
      spec:
        dataset: regional-sales-data

---
# Use it multiple times (in report.yaml)
apiVersion: bino.bi/v1alpha1
kind: ReportArtefact
metadata:
  name: all-regions-report
spec:
  format: xga
  orientation: landscape
  layoutPages:
    - page: regional-sales
      params:
        REGION: EU
        YEAR: "2024"
    - page: regional-sales
      params:
        REGION: US
        YEAR: "2024"
    - page: regional-sales
      params:
        REGION: APAC
        YEAR: "2024"
  filename: all-regions-2024.pdf
  title: "2024 Sales by Region"

This generates a single PDF with three pages, each showing sales data for a different region.

---
apiVersion: bino.bi/v1alpha1
kind: LayoutPage
metadata:
  name: quarterly-summary
  params:
    - name: QUARTER
      type: string
      required: true
    - name: START_DATE
      type: date
      required: true
    - name: END_DATE
      type: date
      required: true
spec:
  titleBusinessUnit: "${QUARTER} Summary"
  children:
    - kind: Text
      spec:
        value: "${QUARTER}: ${START_DATE} to ${END_DATE}"
    - kind: ChartStructure
      spec:
        dataset: quarterly-data

---
apiVersion: bino.bi/v1alpha1
kind: ReportArtefact
metadata:
  name: year-in-review
spec:
  layoutPages:
    - page: quarterly-summary
      params:
        QUARTER: "Q1 2024"
        START_DATE: "2024-01-01"
        END_DATE: "2024-03-31"
    - page: quarterly-summary
      params:
        QUARTER: "Q2 2024"
        START_DATE: "2024-04-01"
        END_DATE: "2024-06-30"
    - page: quarterly-summary
      params:
        QUARTER: "Q3 2024"
        START_DATE: "2024-07-01"
        END_DATE: "2024-09-30"
    - page: quarterly-summary
      params:
        QUARTER: "Q4 2024"
        START_DATE: "2024-10-01"
        END_DATE: "2024-12-31"
  filename: year-in-review-2024.pdf
  title: "2024 Year in Review"

For complete documentation on defining parameters in LayoutPages, see LayoutPage Parameters.