From e3c9a35bae44c3b9f955325516557eb6df7c7603 Mon Sep 17 00:00:00 2001 From: Matthias Mair Date: Sun, 29 Mar 2026 05:27:05 +0200 Subject: [PATCH] feat(backend): add inventree version to every response (#11611) * feat(backend): add inventree version to every response * add more info --- src/backend/InvenTree/InvenTree/middleware.py | 17 +++++++++++++++++ src/backend/InvenTree/InvenTree/settings.py | 1 + 2 files changed, 18 insertions(+) diff --git a/src/backend/InvenTree/InvenTree/middleware.py b/src/backend/InvenTree/InvenTree/middleware.py index efed42d59c..369d9c29a2 100644 --- a/src/backend/InvenTree/InvenTree/middleware.py +++ b/src/backend/InvenTree/InvenTree/middleware.py @@ -19,6 +19,11 @@ from error_report.middleware import ExceptionProcessor from common.settings import get_global_setting from InvenTree.cache import create_session_cache, delete_session_cache from InvenTree.config import CONFIG_LOOKUPS, inventreeInstaller +from InvenTree.version import ( + inventreeApiVersion, + inventreePythonVersion, + inventreeVersion, +) from users.models import ApiToken logger = structlog.get_logger('inventree') @@ -393,3 +398,15 @@ class InvenTreeHostSettingsMiddleware(MiddlewareMixin): # All checks passed return None + + +class InvenTreeVersionHeaderMiddleware(MiddlewareMixin): + """Middleware to add the InvenTree version header to all responses.""" + + def process_response(self, request, response): + """Add the InvenTree version header to the response.""" + response['X-InvenTree-Version'] = inventreeVersion() + response['X-InvenTree-API'] = inventreeApiVersion() + response['X-InvenTree-Python'] = inventreePythonVersion() + response['X-InvenTree-Installer'] = inventreeInstaller() + return response diff --git a/src/backend/InvenTree/InvenTree/settings.py b/src/backend/InvenTree/InvenTree/settings.py index 83dfe37f6b..93d77826c2 100644 --- a/src/backend/InvenTree/InvenTree/settings.py +++ b/src/backend/InvenTree/InvenTree/settings.py @@ -372,6 +372,7 @@ MIDDLEWARE = CONFIG.get( 'InvenTree.middleware.InvenTreeRequestCacheMiddleware', # Request caching 'InvenTree.middleware.InvenTreeHostSettingsMiddleware', # Ensuring correct hosting/security settings 'django_structlog.middlewares.RequestMiddleware', # Structured logging + 'InvenTree.middleware.InvenTreeVersionHeaderMiddleware', ], )