Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
64 commits
Select commit Hold shift + click to select a range
94f588f
sync indexes by key and drop by name
axgiri May 24, 2026
85ea693
feat: javaDoc
axgiri May 24, 2026
8bba744
refactor: improve index management in MongoService
axgiri May 25, 2026
b5a4444
Core - API - initial addition of new storage block settings object
GregJohnStewart May 26, 2026
cd046cc
Merge branch 'development' into dev/1226-fr-core-api-enable-per-block…
GregJohnStewart May 26, 2026
3bd7431
Core - API - Added more fields to storage block settings
GregJohnStewart May 26, 2026
a7846b7
Core - API - Fixing main code for new storage block scheme, added to …
GregJohnStewart May 26, 2026
1addb2d
Core - API - Fixing tests for storage block changes. Some optimizatio…
GregJohnStewart May 26, 2026
7807ca9
Bump org.apache.tika:tika-core in /software/core/oqm-core-api
dependabot[bot] May 27, 2026
5c21e4b
Core - API - Worked new storage block stats low stock into stats calc…
GregJohnStewart May 27, 2026
c232396
fix: handle index creation failure by dropping and recreating index
axgiri May 27, 2026
1e7dc36
Core - API - Added schema upgrader for new object for associated stor…
GregJohnStewart May 28, 2026
30bf681
Core - Base Station - Improvements to user info in top bar
GregJohnStewart May 28, 2026
d3acde9
Lib - Core API for Quarkus - Adding username, initial generating code…
GregJohnStewart May 28, 2026
87f8439
Merge branch 'development' into dependabot/gradle/software/core/oqm-c…
GregJohnStewart May 28, 2026
fed347f
Merge pull request #1278 from Epic-Breakfast-Productions/dependabot/g…
GregJohnStewart May 28, 2026
977aa50
Merge branch 'development' into dev/1226-fr-core-api-enable-per-block…
GregJohnStewart May 28, 2026
a13666b
Merge branch 'main' into development
GregJohnStewart May 28, 2026
cdbcfdc
Merge branch 'development' into dev/1226-fr-core-api-enable-per-block…
GregJohnStewart May 28, 2026
342e835
Lib - Core API for Quarkus - Adjusting for new storage block schema
GregJohnStewart May 28, 2026
e1b563a
Core - API - fixing schema upgrade for new block settings in item. Fi…
GregJohnStewart May 28, 2026
9ca7f70
Core - Base Station - Baseline fixing for new storage block settings …
GregJohnStewart May 28, 2026
7a44896
feat: add logging for index setup
axgiri May 29, 2026
62db992
Core - Base Station - Upgraded overType to 2.3.10
GregJohnStewart May 29, 2026
3181308
Core - Base Station - Storage block selection advanced option low sto…
GregJohnStewart May 30, 2026
2eb9d6f
Merge pull request #1275 from axgiri/dev/1274-core-api-drop-indexes
GregJohnStewart May 30, 2026
65a3e1d
Core - Base Station - setup
GregJohnStewart May 30, 2026
ae6f6c2
Core - Base Station - Finished implementation of setting storage bloc…
GregJohnStewart May 31, 2026
05add3d
Core - API - small fixes and adding of convenience methods
GregJohnStewart Jun 1, 2026
1cdf00b
Core - Base Station - Initial work in item view to display low stock …
GregJohnStewart Jun 1, 2026
985859a
Core - API - small fix to test
GregJohnStewart Jun 1, 2026
898a1d5
Core - API - adding some convenience fields to stats
GregJohnStewart Jun 2, 2026
cceaee9
Core - Base Station - Finished integrating low stock in storage block…
GregJohnStewart Jun 2, 2026
55541ce
Merge branch 'development' into dev/1226-fr-core-api-enable-per-block…
GregJohnStewart Jun 2, 2026
33c5cca
Core - API - tweaks from review
GregJohnStewart Jun 3, 2026
077ef33
Core - Base Station - Updates from review
GregJohnStewart Jun 3, 2026
7493550
Core - API - more tweaks from review
GregJohnStewart Jun 3, 2026
3500292
Merge pull request #1277 from Epic-Breakfast-Productions/dev/1226-fr-…
GregJohnStewart Jun 3, 2026
dee9d0a
implement startup readiness health checks
axgiri Jun 3, 2026
f4bff14
refactor(health): replace StatusProvider with typed health check inte…
axgiri Jun 3, 2026
6096af9
Merge branch 'development' into dev/1282-core-api-organize-readiness-…
GregJohnStewart Jun 4, 2026
410bec4
Bump com.fasterxml.jackson.datatype:jackson-datatype-javax-money
dependabot[bot] Jun 4, 2026
e91cdc6
refactor(health): update health check interfaces and improve readines…
axgiri Jun 4, 2026
9b26229
Core - API - Fleshed out a bit of docs related to configuring the cor…
GregJohnStewart Jun 5, 2026
f19e25e
Merge branch 'development' into dependabot/gradle/software/core/oqm-c…
GregJohnStewart Jun 5, 2026
2fbc54e
Merge pull request #1285 from Epic-Breakfast-Productions/dependabot/g…
GregJohnStewart Jun 5, 2026
5e52bc9
function reference readability fix
axgiri Jun 6, 2026
b1375aa
add default constructors for health check classes
axgiri Jun 7, 2026
2b384a2
Merge pull request #1284 from axgiri/dev/1282-core-api-organize-readi…
GregJohnStewart Jun 8, 2026
8aae32a
Core - API - Minor tweak after review
GregJohnStewart Jun 8, 2026
602144c
Lib - Core API for Quarkus - Adding helper event utilities
GregJohnStewart Jun 9, 2026
ea4c8c7
Lib - Core API for Quarkus - No longer requiring host network mode fo…
GregJohnStewart Jun 9, 2026
50bcd4f
Core - API - Adding some convenience fields to event notification wra…
GregJohnStewart Jun 9, 2026
d9e9cad
Lib - Core API for Quarkus - Tweak to use configurable port instead
GregJohnStewart Jun 9, 2026
8c75823
Lib - Core API for Quarkus - reverting changes for eliminating need f…
GregJohnStewart Jun 9, 2026
089eb53
Bump uk.org.okapibarcode:okapibarcode in /software/core/oqm-core-api
dependabot[bot] Jun 9, 2026
e54bac9
Bump uk.org.okapibarcode:okapibarcode
dependabot[bot] Jun 9, 2026
1a79886
Merge branch 'development' into dependabot/gradle/software/core/oqm-c…
GregJohnStewart Jun 10, 2026
8c27bee
Core - API - Fis to event wrapper for tests
GregJohnStewart Jun 10, 2026
792fd9d
Merge pull request #1288 from Epic-Breakfast-Productions/dependabot/g…
GregJohnStewart Jun 10, 2026
7191106
Merge branch 'development' into dependabot/gradle/software/core/oqm-c…
GregJohnStewart Jun 10, 2026
c58ced5
Merge pull request #1289 from Epic-Breakfast-Productions/dependabot/g…
GregJohnStewart Jun 10, 2026
ae85533
Lib - Core API for Quarkus - small improvements to filter utility
GregJohnStewart Jun 10, 2026
1f96041
Lib - Core API for Quarkus - fixing hostnames in devservice
GregJohnStewart Jun 10, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions software/core/oqm-core-api/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ plugins {
}

group 'com.ebp.openQuarterMaster'
version '5.0.0'
version '6.0.0-SNAPSHOT'

repositories {
mavenCentral()
Expand Down Expand Up @@ -39,7 +39,7 @@ dependencies {
implementation 'org.jboss.slf4j:slf4j-jboss-logmanager'

implementation 'com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
implementation "com.fasterxml.jackson.datatype:jackson-datatype-javax-money:2.21.3"
implementation "com.fasterxml.jackson.datatype:jackson-datatype-javax-money:2.22.0"
implementation 'com.fasterxml.jackson.module:jackson-module-blackbird'

// https://mvnrepository.com/artifact/tech.units/indriya
Expand All @@ -53,8 +53,8 @@ dependencies {
implementation 'org.apache.commons:commons-compress:1.28.0'
implementation 'org.apache.commons:commons-io:1.3.2'
implementation("commons-validator:commons-validator:1.10.1")
implementation 'org.apache.tika:tika-core:3.3.0'
implementation 'uk.org.okapibarcode:okapibarcode:0.5.5'
implementation 'org.apache.tika:tika-core:3.3.1'
implementation 'uk.org.okapibarcode:okapibarcode:0.5.6'

implementation("org.javamoney:moneta:1.4.5")

Expand Down
3 changes: 0 additions & 3 deletions software/core/oqm-core-api/docs/metricsAndObservability.md

This file was deleted.

5 changes: 4 additions & 1 deletion software/core/oqm-core-api/docs/sphinx-test/source/conf.py
Original file line number Diff line number Diff line change
Expand Up @@ -36,11 +36,14 @@
'github_repo': 'OpenQuarterMaster',
'github_banner': True,
"github_button": False,
"show_relbars": True
"show_relbars": True,
# 'github_count': True,
# 'extra_nav_links': {
# 'Index': 'genindex.html',
# }

'body_max_width': 'none',
'page_width': '90%',
}
html_sidebars = {
'**': [
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,30 +10,60 @@ Operational / Architecture Decisions
This section talks to how we arrived at the decisions surrounding how we have built the service, and
why we chose the tools we did.

Quarkus
-------
Quarkus / Java
--------------

`Quarkus <https://quarkus.io>`_ is a fully featured, lean, and performant framework for building many things, but most notably web, container-native services.

Quarkus is Java-based, and thus is the language we are working in. Java was chosen as is a good choice for such services, being a strongly typed language with a mature
framework ecosystem.

Other options could include Spring, or things in other

Container Deployment
--------------------

`Containers <https://www.docker.com/resources/what-container/>`_ provide an extreme level of flexibility and ease of deployment in a variety of environments.

If it can run Podman/ Docker, it can run the core API.

MongoDB
-------

`MongoDB <https://www.mongodb.com/>`_ Is a highly flexible and scalable database. We chose this over \*.sql to leverage:

* flexibility in data model; can directly use polymorphic objects within the same collection
* scalability; naturally a clustered system, can grow with OQM as a cluster

JWT Auth
--------

`JWTs <https://www.jwt.io/introduction#what-is-json-web-token>`_ are a flexible, implementation independent method for authorization. Being a widely
used web standard, was a natural choice

Kafka Messaging
---------------

`Apache Kafka <https://kafka.apache.org/>`_ is a widely used and supported messaging platform. What made it stand out was a relative level of simplicity,
both in usage and in deployment.

Optionality
^^^^^^^^^^^

It is important to the project to be flexible and modular, and Kafka frankly eats up a lot of computing resources. By making the Core API only optionally
include connection to a Kafka server, we can omit that overhead when we don't need to include it when the downstream functionality is unused.

OpenTelemetry
-------------

`OpenTelemetry <https://opentelemetry.io/>`_ is a widely used standard for transferring metrics, logs, and tracing information to tools that can use that information.
It made sense to adopt, as is largely vendor agnostic.

Optionality
^^^^^^^^^^^

As with Kafka, if users don't want the overhead of a metrics stack, the should not need to provide and use one.

Functional / Design Decisions (major)
=====================================

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,235 @@
Configuration Reference
#######################

Below is the configuration reference to configure your Core API instance.

All values are optional, unless otherwise marked by: *Required*

Core API Specific Configuration
===============================

.. list-table::
:header-rows: 1

* - Config Key
- Description
- Values (Examples)
- Default
* - .. code-block:: none

service.ops.currency
- Sets the currency to be used by the system. Use any value that can be passed to
`Currency.getInstance() <https://docs.oracle.com/javase/8/docs/api/java/util/Currency.html#getInstance-java.lang.String->`_
- .. code-block:: none

USD
.. code-block:: none

GBP
- .. code-block:: none

USD
* - .. code-block:: none

service.item.expiryCheck.cron
- Sets the interval at which expiry checks happen. In a cron format. `Docs <https://quarkus.io/guides/scheduler-reference#cron>`_
- .. code-block:: none

0 0 * ? * * # Every Hour
- .. code-block:: none

0 0 * ? * * # Every Hour
* - .. code-block:: none

service.tempDir
- The directory to be used for temporary file creation and storage. Used for
- .. code-block:: none

/tmp
- .. code-block:: none

/tmp/oqm-core-api
* - .. code-block:: none

service.image.resizing.enabled
- If the service is to resize images when they are uploaded (images for attached images, not images uploaded as generic files)
- .. code-block:: none

true
.. code-block:: none

false
- .. code-block:: none

true
* - .. code-block:: none

service.image.resizing.height
- The height to resize images to, in number of pixels.
- .. code-block:: none

500
- .. code-block:: none

750
* - .. code-block:: none

service.image.resizing.width
- The width to resize images to, in number of pixels.
- .. code-block:: none

500
- .. code-block:: none

${service.image.resizing.height}
* - .. code-block:: none

service.image.resizing.savedType
- The image format to use to save the resulting images as.
- Either:

.. code-block:: none

jpg

or:

.. code-block:: none

png
- .. code-block:: none

jpg

MongoDB Configuration
=====================

For Mongo configuration, we leverage the settings as presented by Quarkus. For convenience, we have the most important configuration below, but
further options can be found on the `Quarkus MongoDB Configuration <https://quarkus.io/guides/mongodb#configuration-reference>`_ documentation.

Please see :doc:`04_mongo` for more information on how MongoDB is leveraged and used by the Core API.

.. list-table::
:header-rows: 1

* - Config Key
- Description
- Values (Examples)
- Default
* - .. code-block:: none

QUARKUS_MONGODB_CONNECTION-STRING

*Required*
- The connection string to actually connect to Mongo
- .. code-block:: none

mongodb://${user}:${pass}@${host}:${port}
- None, must supply this value.
* - .. code-block:: none

QUARKUS_MONGODB_DATABASE
- The database to use for OQM. Also the prefix to use for specific datasets.
- .. code-block:: none

openQuarterMaster
- .. code-block:: none

openQuarterMaster

Kafka Configuration
=====================

For Kafka configuration, we leverage the settings as presented by Quarkus. For convenience, we have the most important configuration below, but
further options can be found on the `Quarkus Kafka Configuration <https://quarkus.io/guides/kafka#kafka-configuration>`_ documentation.

.. list-table::
:header-rows: 1

* - Config Key
- Description
- Values (Examples)
- Default
* - .. code-block:: none

mp.messaging.outgoing.events-outgoing.enabled

*Required*
- Whether or not to enable the messaging functionality.
- Either:

.. code-block:: none

true

or:

.. code-block:: none

false
- None, must supply this value.
* - .. code-block:: none

mp.messaging.outgoing.events-outgoing.bootstrap.servers

*Required*, if kafka enabled
- The kafka bootstrap server(s) to connect to.
- .. code-block:: none

OUTSIDE://{infra.kafka.host}:{infra.kafka.port}

- None, must supply this value (if kafka enabled).

JWT Configuration
=====================

For JWT configuration, we leverage the settings as presented by Quarkus. For convenience, we have the most important configuration below, but
further options can be found on the `Quarkus JWT Configuration <https://quarkus.io/guides/security-jwt#configuration-reference>`_ documentation.

.. list-table::
:header-rows: 1

* - Config Key
- Description
- Values (Examples)
- Default
* - .. code-block:: none

smallrye.jwt.verify.key.location

*Required*

Or, some configuration that provides the certs for JWT verification.
- The location of where to retrieve certs to verify JWT's. Config property allows for a specified external or internal
location of the public key. The value can be a relative path or a URL.
- .. code-block:: none

http://oqm-infra-keycloak:8080/realms/oqm/protocol/openid-connect/certs

.. code-block:: none

/path/to/cert.pub
- None, must supply this value.

Metrics/OpenTelemetry Configuration
=====================

For OpenTelemetry configuration, we leverage the settings as presented by Quarkus. For convenience, we have the most important configuration below, but
further options can be found on the `Quarkus OpenTelemetry Configuration <https://quarkus.io/guides/opentelemetry#configuration-reference>`_ documentation.

.. list-table::
:header-rows: 1

* - Config Key
- Description
- Values (Examples)
- Default
* - .. code-block:: none

quarkus.otel.exporter.otlp.endpoint

- Where to export OpenTelemetry metrics to.
- .. code-block:: none

http://#{host}:4317
- None.
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
MongoDB Reference
#######################

This guide is an explainer to how MongoDB is leveraged by the Core API

Databases
=========

TODO


Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
JWT Reference
#######################

This guide is an explainer to how JWT's are used by the Core API, and what needs to be included.




Original file line number Diff line number Diff line change
Expand Up @@ -10,3 +10,6 @@ This section is concerned with how to run, configure, and otherwise manage your

01_prerequisites
02_basic_quickstart
03_configuration
04_mongo
05_jwt
Loading
Loading