Understanding Application Repository Files
This page provides a detailed field-by-field reference for every file in an app-* repository. For an overview with annotated examples, see the parent page Working with Application Repositories.
application.template.json
This is the primary configuration file that defines the application's module composition. The CI system reads this file to resolve module versions and generate the final application descriptor.
Top-Level Fields
Field | Type | Description |
|---|
Field | Type | Description |
|---|---|---|
| string | Application name. Use |
| string | Application version. Use |
| string | Brief description. Use |
| array | Other applications this app depends on (optional) |
| array | Backend modules ( |
| array | Frontend modules ( |
Module Entry Fields
Each entry in modules and uiModules arrays has:
Field | Type | Required | Description |
|---|
Field | Type | Required | Description |
|---|---|---|---|
| string | Yes | Module name (e.g., |
| string | Yes | Version constraint — see Version Constraints below |
| string | Yes | Pre-release filter: |
Pre-release branch example:
{
"name": "mod-agreements",
"version": "latest",
"preRelease": "only"
}Release branch example:
{
"name": "mod-agreements",
"version": "^2.1.0",
"preRelease": "false"
}Dependency Entry Fields
Entries in the dependencies array follow the same format as module entries:
{
"name": "app-licenses",
"version": "^1.0.0",
"preRelease": "false"
}On pre-release branches, dependency versions include a -SNAPSHOT suffix:
{
"name": "app-licenses",
"version": "^1.0.0-SNAPSHOT",
"preRelease": "only"
}Legacy File: app-{name}.template.json
The app-{name}.template.json file (e.g., app-agreements.template.json) is a legacy file. It is not referenced in pom.xml and is not used by the Maven build. Do not edit it. It may be removed in the future.
Version Constraints
Version constraints control which module versions the CI system resolves from the FOLIO module registry.
Version constraint syntax (supported operators):
Constraint | Meaning | Example |
|---|
Constraint | Meaning | Example |
|---|---|---|
| Any version (equivalent to | Resolve the newest available version |
| Compatible with major version |
|
| Compatible with minor version |
|
| Greater than or equal |
|
| Greater than |
|
| Less than or equal |
|
| Less than |
|
| Exact version |
|
Constraints can include a -SNAPSHOT suffix for pre-release dependency resolution (e.g., ^1.0.0-SNAPSHOT).
preRelease field controls which module builds are considered:
Value | Behavior |
|---|
Value | Behavior |
|---|---|
| Only pre-release versions — used on pre-release branches (e.g., snapshot) |
| Only stable (release) versions — used on release branches |
| Both pre-release and release versions |
Typical branch patterns:
Pre-release branch:
"version": "latest"+"preRelease": "only"— resolves the newest pre-release buildRelease branch:
"version": "^X.Y.Z"+"preRelease": "false"— resolves the newest stable release within the caret range
application.lock.json (State File)
The application.lock.json is an auto-generated file that contains the fully resolved application descriptor — the same descriptor that is published to FAR. Never edit it manually.
Purpose:
Holds the latest version of the application descriptor with pinned module versions
Used by the folio-application-generator as the baseline to produce an updated descriptor and determine whether any module versions have changed
Tracked in git — committed alongside template changes
Contents:
Field | Description |
|---|
Field | Description |
|---|---|
| Resolved application identifier (e.g., |
| Application name |
| Resolved application version (with build offset for pre-release) |
| Application description |
| Array of backend modules with resolved |
| Array of frontend modules with resolved |
| Application dependencies (with version constraints, not resolved) |
| Full backend module descriptors (interfaces, permissions, launch descriptors) |
| Full frontend module descriptors |
When it changes: Every time the update scheduler runs and resolves new module versions, this file is updated automatically (committed directly on branches with need_pr: false, included in PRs on branches with need_pr: true).
pom.xml
The Maven build configuration file. Key elements for application repositories:
Element | Purpose | Example |
|---|
Element | Purpose | Example |
|---|---|---|
| Application version (source of truth) |
|
| Application identifier |
|
| Display name (used for |
|
| Application description (used for |
|
| Path to the active template |
|
Plugin configuration:
Element | Value |
|---|
Element | Value |
|---|---|
Plugin |
|
Version |
|
Goal |
|
Registry URL |
|
Note: Application versions do not use -SNAPSHOT suffix. The version is a plain semver (e.g., 1.0.0, 2.0.0). During release preparation, the version is incremented automatically.
.github/update-config.yml
This file controls how the CI automation updates the application across different branches.
update_config Section
Field | Type | Description | Example |
|---|
Field | Type | Description | Example |
|---|---|---|---|
| boolean | Enable/disable automated updates globally |
|
| string | Branch naming template for update PRs. |
|
| array | Labels applied to automated PRs |
|
| array | GitHub teams/users for PR review. Format: |
|
ruleset Section
Controls GitHub branch protection rulesets applied automatically. The ruleset section contains several sub-sections described below. For a guide on how rulesets are applied in practice, see Branch Ruleset Automation.
Field | Type | Description | Example |
|---|
Field | Type | Description | Example |
|---|---|---|---|
| boolean | Enable branch protection ruleset |
|
| string | Ruleset name pattern ( |
|
| array | Status checks that must pass | See below |
Each required_checks entry:
Field | Description |
|---|
Field | Description |
|---|---|
| Check name (typically |
merge_queue Sub-Section
The merge_queue configuration is part of the ruleset section and controls how the merge queue operates for release branches:
Field | Type | Description | Default |
|---|
Field | Type | Description | Default |
|---|---|---|---|
| boolean | Enable merge queue |
|
| number | Timeout for CI checks |
|
| string | How PRs are grouped: |
|
| number | Max concurrent builds in queue |
|
| number | Max concurrent merges |
|
| string | Merge method: |
|
| number | Min entries before merging starts |
|
| number | Wait time for batching |
|
bypass_actors Sub-Section
The bypass_actors configuration is part of the ruleset section and defines which actors can bypass the ruleset checks:
Field | Type | Description | Example |
|---|
Field | Type | Description | Example |
|---|---|---|---|
| string | Type of actor that can bypass |
|
| string | When bypass applies |
|
This allows the Eureka CI GitHub Application to commit directly without triggering ruleset checks.
branches Section
Array of branch-specific configurations:
Field | Type | Description |
|---|
Field | Type | Description |
|---|---|---|
| boolean | Toggle updates for this branch |
| boolean |
|
|