
MESO-OData API
(.NET Core) WebService, welcher Zugriff auf die Mesonic WinLine© WinLine Daten im REST OData-Standard bietet. Ideal zur Anbindung externer Systeme und mobiler Apps
Stand: 06.10.2025
MESO API Framework
Enterprise-REST-APIs für die Integration mit Mesonic WinLine© ERP-Systemen
Dieses Framework stellt containerisierte REST-APIs zur nahtlosen Integration mit WinLine ERP-Systemen bereit. Perfekt für Entwickler, die Anwendungen, mobile Apps, Web-Portale oder beliebige Systeme erstellen, die auf WinLine-Daten zugreifen müssen.
🚀 Verfügbare API-Services
1. MESOOData API
(mesoapi-odata
)
Vollständige OData v4 REST-API für umfassenden WinLine-Datenzugriff
Bietet standardisierte OData-REST-Endpunkte für alle WinLine-Entitäten. Ideal für datengetriebene Anwendungen, Reporting-Tools und umfassende Integrationen.
Docker Image:
ghcr.io/css-edv-support/mesoapi-odata
Endpunkte: /api/odata/
|
Dokumentation: /swagger
2. MESOOData Reduced
API (mesoapireduced-odata
)
Schlanke OData-API optimiert für wesentliche Geschäftsdaten
Optimierte Version mit Fokus auf Kern-Geschäftsentitäten wie Artikel, Kunden, Aufträge. Perfekt für mobile Apps und leistungskritische Anwendungen.
Docker Image:
ghcr.io/css-edv-support/mesoapireduced-odata
Endpunkte: /odata/
|
Dokumentation: /swagger
3. MesoWebAPI
(mesoapi-webapi
)
Geschäftsorientierte REST-API mit benutzerdefinierten Operationen
Bietet spezialisierte Geschäftsmethoden, Datenvalidierung und komplexe Operationen über einfache CRUD-Vorgänge hinaus. Ideal für Geschäftslogik-Integrationen und Workflow-Automatisierung.
Docker Image:
ghcr.io/css-edv-support/mesoapi-webapi
Endpunkte: /business/api/
und
/business/odata/
| Dokumentation:
/swagger
4. MesoIdentityApi
Zentrale Authentifizierung und Benutzerverwaltung
Übernimmt Benutzerauthentifizierung, JWT-Token-Management und rollenbasierte Zugriffskontrolle, integriert mit WinLine-Benutzersystemen.
Docker Image: Auf Anfrage verfügbar
Endpunkte: /auth/
|
Dokumentation: /swagger
5. MesoWebBrowser
Demo-Blazor-Anwendung zur Veranschaulichung der API-Integration
Interaktive Webanwendung, die zeigt, wie MESO-APIs in realen Szenarien verwendet werden. Enthält Beispiele für Datenanzeige, Filterung und Benutzerinteraktionen mit WinLine-Daten.
Technologie: Blazor Server mit DevExpress-Komponenten Zweck: Referenzimplementierung und Test-Interface
6. MesoOData.Client
.NET Client-Bibliothek für einfache API-Integration
NuGet-Package mit vorgefertigten C#-Klassen und Methoden für die nahtlose Integration der MESO-APIs in .NET-Anwendungen. Vereinfacht den Zugriff auf WinLine-Daten erheblich.
NuGet Package: MesoOData.Client
Zweck: Vereinfachte .NET-Integration
🏗️ Integrations-Architektur
┌─────────────────────────────────────────────┐
│ Ihre Anwendungen │
│ (Web Apps, Mobile Apps, Portale) │
├─────────────────────────────────────────────┤
│ MESO APIs │
│ OData API │ Reduced API │ Business API │
├─────────────────────────────────────────────┤
│ WinLine ERP System │
│ (Daten + System Datenbanken) │
└─────────────────────────────────────────────┘
Einfacher Integrations-Workflow: 1. Bereitstellen der MESO-API-Container mit Ihren WinLine-Datenbankverbindungen 2. Konfigurieren der Authentifizierung (API-Keys oder JWT) 3. Zugriff auf WinLine-Daten über Standard-REST/OData-Aufrufe 4. Erstellen Ihrer Anwendungen mit bekannten HTTP/JSON-APIs
⚡ Schnellstart - Container-Hosting
Voraussetzungen
- Docker oder kompatible Container-Runtime
- WinLine ERP System (Version 11.5+)
- SQL Server Datenbankzugriff (WinLine Daten + System Datenbanken)
- Gültige CSS EDV Support Lizenz (erforderlich für alle APIs)
Wählen Sie Ihren API-Container
Beginnen Sie mit der Reduced API (empfohlen für die meisten Anwendungsfälle):
docker run -d \
--name meso-api \
-p 5500:80 \
-e ConnectionStrings__WinLineXPODataConnection="Server=ihr-server;Database=WinLineData;User Id=api-user;******;TrustServerCertificate=true" \
-e ConnectionStrings__WinLineXPOSystemConnection="Server=ihr-server;Database=WinLineSystem;User Id=api-user;******;TrustServerCertificate=true" \
-e AppSettings__LicenseNumber="IHRE_CSS_LIZENZ" \
-e AppSettings__CustomerNumber="IHRE_KUNDENNUMMER" \
-e AppSettings__ApiKeyHeaderValue="ihr-sicherer-api-key" \
ghcr.io/css-edv-support/mesoapireduced-odata:latest
Für umfassenden Datenzugriff (Vollständige OData API):
docker run -d \
--name meso-full-api \
-p 5501:80 \
-e ConnectionStrings__WinLineXPODataConnection="Server=ihr-server;Database=WinLineData;User Id=api-user;******;TrustServerCertificate=true" \
-e ConnectionStrings__WinLineXPOSystemConnection="Server=ihr-server;Database=WinLineSystem;User Id=api-user;******;TrustServerCertificate=true" \
-e AppSettings__LicenseNumber="IHRE_CSS_LIZENZ" \
-e AppSettings__CustomerNumber="IHRE_KUNDENNUMMER" \
-e AppSettings__ApiKeyHeaderValue="ihr-sicherer-api-key" \
ghcr.io/css-edv-support/mesoapi-odata:latest
Für Geschäftslogik und benutzerdefinierte Operationen:
docker run -d \
--name meso-business-api \
-p 5502:80 \
-e ConnectionStrings__WinLineXPODataConnection="Server=ihr-server;Database=WinLineData;User Id=api-user;******;TrustServerCertificate=true" \
-e ConnectionStrings__WinLineXPOSystemConnection="Server=ihr-server;Database=WinLineSystem;User Id=api-user;******;TrustServerCertificate=true" \
-e AppSettings__LicenseNumber="IHRE_CSS_LIZENZ" \
-e AppSettings__CustomerNumber="IHRE_KUNDENNUMMER" \
-e AppSettings__ApiKeyHeaderValue="ihr-sicherer-api-key" \
ghcr.io/css-edv-support/mesoapi-webapi:latest
Installation überprüfen
Nach dem Start eines Containers greifen Sie auf diese Endpunkte zu, um zu überprüfen, ob alles funktioniert:
- API-Dokumentation: http://localhost:5500/swagger
- Gesundheitsprüfung: http://localhost:5500/health
- OData-Metadaten: http://localhost:5500/odata/$metadata (Reduced API)
- OData-Metadaten: http://localhost:5501/api/odata/$metadata (Full API)
🔧 Konfiguration & Lizenzierung
Erforderliche Umgebungsvariablen
Alle APIs benötigen diese Kerneinstellungen:
Variable | Beschreibung | Beispiel | Erforderlich |
---|---|---|---|
ConnectionStrings__WinLineXPODataConnection |
WinLine Geschäftsdatenbank-Verbindung | Server=sql-srv;Database=WL_Data;User Id=api;******;TrustServerCertificate=true |
✅ |
ConnectionStrings__WinLineXPOSystemConnection |
WinLine Systemdatenbank-Verbindung | Server=sql-srv;Database=WL_System;User Id=api;******;TrustServerCertificate=true |
✅ |
AppSettings__LicenseNumber |
CSS EDV Support Lizenznummer | 12345678 |
✅ |
AppSettings__CustomerNumber |
Ihre Kundennummer von CSS | 987654321 |
✅ |
Authentifizierungs-Konfiguration
Wählen Sie eine oder beide Authentifizierungsmethoden:
Variable | Beschreibung | Beispiel | Erforderlich |
---|---|---|---|
AppSettings__ApiKeyHeaderValue |
Statischer API-Key für X-MesoAPI-Key Header | mein-sicherer-api-key-2024 |
⭕ |
AppSettings__UseWinLineJwtLogin |
WinLine-Benutzerauthentifizierung aktivieren | true |
⭕ |
AppSettings__Secret |
JWT-Signierungsgeheimnis (bei JWT-Verwendung) | ihr-jwt-geheimnis-key |
⭕ |
AppSettings__DefaultCompany |
Standard-Firmencode | 500M |
⭕ |
Docker Compose für Produktion
version: '3.9'
services:
# Reduced OData API - Häufigste Wahl
meso-reduced-api:
image: ghcr.io/css-edv-support/mesoapireduced-odata:latest
container_name: meso-reduced-api
restart: unless-stopped
ports:
- "5500:80"
environment:
# Datenbankverbindungen
- ConnectionStrings__WinLineXPODataConnection=Server=sql-server;Database=WinLine_Data;User Id=api_user;******;TrustServerCertificate=true
- ConnectionStrings__WinLineXPOSystemConnection=Server=sql-server;Database=WinLine_System;User Id=api_user;******;TrustServerCertificate=true
# Lizenzierung (ERFORDERLICH)
- AppSettings__LicenseNumber=12345678
- AppSettings__CustomerNumber=987654321
# Authentifizierung
- AppSettings__ApiKeyHeaderValue=production-api-key-2024
- AppSettings__UseWinLineJwtLogin=false
# Optionale Einstellungen
- AppSettings__DefaultCompany=500M
- DOTNET_ENVIRONMENT=Production
- TZ=Europe/Berlin
# Business API - Für benutzerdefinierte Operationen
# meso-business-api:
# image: ghcr.io/css-edv-support/mesoapi-webapi:latest
# container_name: meso-business-api
# restart: unless-stopped
# ports:
# - "5502:80"
# environment:
# # Gleiche Konfiguration wie oben
🔑 Lizenzierungsanforderungen
Wichtig: Alle MESO-APIs benötigen eine gültige Lizenz von CSS EDV Support:
- LicenseNumber: Ihr eindeutiger Lizenzschlüssel von CSS EDV Support
- CustomerNumber: Ihre Kundenkonto-Nummer
- Lizenzvalidierung: APIs validieren Lizenzen beim Start und regelmäßig während des Betriebs
- Kontakt: Für Lizenzfragen wenden Sie sich an [email protected]
Ohne gültige Lizenz starten die APIs nicht oder stellen den Betrieb nach einer Testperiode ein.
🔐 Authentifizierungsmethoden
API-Key-Authentifizierung (Empfohlen)
Einfach und sicher für Server-zu-Server-Kommunikation:
# API-Key in Umgebung setzen
export MESO_API_KEY="ihr-sicherer-api-key"
# X-MesoAPI-Key Header in alle Anfragen einschließen
curl -H "X-MesoAPI-Key: $MESO_API_KEY" \
http://localhost:5500/odata/Artikelview
JWT-Authentifizierung (WinLine-Benutzer)
Für Anwendungen, bei denen sich WinLine-Benutzer authentifizieren müssen:
# 1. JWT im Container aktivieren
# -e AppSettings__UseWinLineJwtLogin=true
# -e AppSettings__Secret="ihr-jwt-geheimnis"
# 2. Anmeldung mit WinLine-Anmeldedaten
curl -X POST http://localhost:5500/auth/login \
-H "Content-Type: application/json" \
-d '{
"username": "winline-benutzername",
"password": "winline-passwort"
}'
# Antwort enthält JWT-Token:
# {
# "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
# "expiration": "2024-10-05T10:30:00Z",
# "username": "winline-benutzername",
# "groups": ["Verkauf", "Geschäftsführung"]
# }
# 3. JWT-Token im Authorization-Header verwenden
curl -H "Authorization: ******" \
http://localhost:5500/odata/Artikelview
📊 OData REST API Verwendung
Die OData-APIs bieten Standard-REST-Endpunkte nach der OData v4-Spezifikation. Alle Beispiele verwenden API-Key-Authentifizierung.
Kern-Geschäftsentitäten
Artikel (Artikel/Artikelview)
# Alle Artikel abrufen
GET /odata/Artikelview
curl -H "X-MesoAPI-Key: $API_KEY" http://localhost:5500/odata/Artikelview
# Bestimmten Artikel nach Nummer abrufen
GET /odata/Artikelview?$filter=Artikelnummer eq '10001'
curl -H "X-MesoAPI-Key: $API_KEY" \
"http://localhost:5500/odata/Artikelview?\$filter=Artikelnummer eq '10001'"
# Artikel nach Bezeichnung suchen
GET /odata/Artikelview?$filter=contains(Bezeichnung,'Laptop')
curl -H "X-MesoAPI-Key: $API_KEY" \
"http://localhost:5500/odata/Artikelview?\$filter=contains(Bezeichnung,'Laptop')"
# Artikel mit nur bestimmten Feldern abrufen
GET /odata/Artikelview?$select=Artikelnummer,Bezeichnung,VkPreis1
curl -H "X-MesoAPI-Key: $API_KEY" \
"http://localhost:5500/odata/Artikelview?\$select=Artikelnummer,Bezeichnung,VkPreis1"
# Artikel nach Preis sortiert abrufen
GET /odata/Artikelview?$orderby=VkPreis1 desc&$top=20
curl -H "X-MesoAPI-Key: $API_KEY" \
"http://localhost:5500/odata/Artikelview?\$orderby=VkPreis1 desc&\$top=20"
Kunden (Kunden)
# Alle Kunden abrufen
GET /odata/Kunden
curl -H "X-MesoAPI-Key: $API_KEY" http://localhost:5500/odata/Kunden
# Kunde nach Namen suchen
GET /odata/Kunden?$filter=contains(Name1,'Mueller')
curl -H "X-MesoAPI-Key: $API_KEY" \
"http://localhost:5500/odata/Kunden?\$filter=contains(Name1,'Mueller')"
# Kunde mit Adressen abrufen
GET /odata/Kunden?$expand=Adressen
curl -H "X-MesoAPI-Key: $API_KEY" \
"http://localhost:5500/odata/Kunden?\$expand=Adressen"
Aufträge (Aufträge)
# Aktuelle Aufträge abrufen
GET /odata/Auftraege?$filter=Datum ge 2024-01-01&$orderby=Datum desc
curl -H "X-MesoAPI-Key: $API_KEY" \
"http://localhost:5500/odata/Auftraege?\$filter=Datum ge 2024-01-01&\$orderby=Datum desc"
# Auftrag mit Auftragspositionen abrufen
GET /odata/Auftraege?$expand=Auftragspositionen
curl -H "X-MesoAPI-Key: $API_KEY" \
"http://localhost:5500/odata/Auftraege?\$expand=Auftragspositionen"
Erweiterte OData-Abfragen
Filtern und Suchen
# Mehrere Bedingungen mit UND
GET /odata/Artikelview?$filter=VkPreis1 gt 100 and Artikelgruppe eq 'HARDWARE'
# Mehrere Bedingungen mit ODER
GET /odata/Artikelview?$filter=Artikelgruppe eq 'SOFTWARE' or Artikelgruppe eq 'HARDWARE'
# Datumsbereich-Filterung
GET /odata/Auftraege?$filter=Datum ge 2024-01-01 and Datum le 2024-12-31
# Null-Wert-Prüfungen
GET /odata/Kunden?$filter=Email ne null
# String-Funktionen
GET /odata/Artikelview?$filter=startswith(Artikelnummer,'10') and length(Bezeichnung) gt 10
Paginierung und Sortierung
# Paginierung mit $top und $skip
GET /odata/Artikelview?$top=50&$skip=100&$count=true
# Mehrere Sortierkriterien
GET /odata/Artikelview?$orderby=Artikelgruppe,VkPreis1 desc
# Nur Gesamtzahl abrufen
GET /odata/Artikelview/$count
Data Expansion (Joins)
# Single level expansion
GET /odata/Auftraege?$expand=Kunde
# Multi-level expansion
GET /odata/Auftraege?$expand=Kunde($expand=Adressen)
# Selective expansion with filtering
GET /odata/Auftraege?$expand=Auftragspositionen($filter=Menge gt 5)
🔧 Business API Methoden (MesoWebAPI)
Die Business API bietet spezialisierte Endpunkte für komplexe Operationen über einfache CRUD-Vorgänge hinaus.
Lager-Operationen
# Aktuelle Lagerbestände abrufen
GET /business/api/Bestand?mesocomp=500M
curl -H "X-MesoAPI-Key: $API_KEY" \
"http://localhost:5502/business/api/Bestand?mesocomp=500M"
# Lagerbestand für bestimmten Artikel abrufen
GET /business/api/Bestand/GetByProductId/10001?mesocomp=500M
curl -H "X-MesoAPI-Key: $API_KEY" \
"http://localhost:5502/business/api/Bestand/GetByProductId/10001?mesocomp=500M"
# Lagerbestand nach EAN-Code abrufen
GET /business/api/Bestand/GetByStockEAN/1234567890123?mesocomp=500M
curl -H "X-MesoAPI-Key: $API_KEY" \
"http://localhost:5502/business/api/Bestand/GetByStockEAN/1234567890123?mesocomp=500M"
Dokument-Operationen
# Rechnung als PDF generieren und herunterladen
POST /business/api/Documents/GenerateInvoicePdf
curl -X POST -H "X-MesoAPI-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{"invoiceNumber": "RE-2024-001", "mesocomp": "500M"}' \
http://localhost:5502/business/api/Documents/GenerateInvoicePdf
# Export customer data
POST /business/api/Export/Customers
curl -X POST -H "X-MesoAPI-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{"format": "excel", "filters": {"customerGroup": "A"}}' \
http://localhost:5502/business/api/Export/Customers
Validation and Business Logic
# Validate customer data before creation
POST /business/api/Validation/ValidateCustomer
curl -X POST -H "X-MesoAPI-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"name": "New Customer Ltd",
"email": "[email protected]",
"vatNumber": "DE123456789"
}' \
http://localhost:5502/business/api/Validation/ValidateCustomer
# Calculate order totals with discounts
POST /business/api/Calculation/CalculateOrderTotal
curl -X POST -H "X-MesoAPI-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customerId": "K-10001",
"items": [
{"articleNumber": "10001", "quantity": 2},
{"articleNumber": "10002", "quantity": 1}
],
"discountPercent": 5
}' \
http://localhost:5502/business/api/Calculation/CalculateOrderTotal
Archive Operations
# Search archive documents
GET /business/api/Archive/Search?keywords=Invoice&documentType=RE
curl -H "X-MesoAPI-Key: $API_KEY" \
"http://localhost:5502/business/api/Archive/Search?keywords=Invoice&documentType=RE"
# Download archive document
GET /business/api/Archive/Download/12345
curl -H "X-MesoAPI-Key: $API_KEY" \
\
http://localhost:5502/business/api/Archive/Download/12345 --output document.pdf
🎯 Common Integration Scenarios
Mobile App Data Sync
# Get modified data since last sync
GET /odata/Artikelview?$filter=ModifiedDate gt 2024-10-01T08:00:00Z&$select=Artikelnummer,Bezeichnung,VkPreis1,ModifiedDate
# Lightweight customer lookup for mobile
GET /odata/Kunden?$select=Kundennummer,Name1,Email&$filter=contains(Name1,'search-term')&$top=10
E-Commerce Integration
# Product catalog with images and stock
GET /odata/Artikelview?$filter=WebshopArtikel eq true&$select=Artikelnummer,Bezeichnung,VkPreis1,WebshopBeschreibung&$expand=Lagerbestand
# Order creation via Business API
POST /business/api/Orders/CreateWebOrder
curl -X POST -H "X-MesoAPI-Key: $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"customerEmail": "[email protected]",
"items": [
{"sku": "10001", "quantity": 2, "price": 299.99}
],
"shippingAddress": {...},
"paymentMethod": "CreditCard"
}' \
http://localhost:5502/business/api/Orders/CreateWebOrder
Reporting and Analytics
# Sales statistics
GET /business/api/Reports/SalesStatistics?startDate=2024-01-01&endDate=2024-12-31&groupBy=month
# Top selling products
GET /odata/Auftragspositionen?$apply=groupby((Artikelnummer),aggregate(Menge with sum as TotalSold))&$orderby=TotalSold desc&$top=10
🐳 Container Orchestration
Neue Deployment-Strategie verfügbar! 📋 Siehe DEPLOYMENT.md für den neuen automatischen Beta/Release-Workflow
Schneller Start: Automatisierte Deployments
Das MESO API Framework nutzt jetzt automatisierte Deployment-Workflows:
- 🚀 Release Deployment: Master Branch → Production
Images (
latest
) - 🧪 Beta Deployment: Feature Branches → Test Images
(
beta
) - 📦 Einheitlicher Workflow: Alle Services werden parallel gebaut und bereitgestellt
# Beta Environment (Staging/Testing)
docker-compose -f docker-compose.beta.yml up -d
# Production Environment
docker-compose -f docker-compose.production.yml up -d
Docker Compose for Multiple APIs
Run multiple APIs together for comprehensive coverage:
version: '3.9'
services:
# Reverse proxy for API routing
nginx:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
depends_on:
- meso-reduced-api
- meso-business-api
# Reduced OData API
meso-reduced-api:
image: ghcr.io/css-edv-support/mesoapireduced-odata:latest
restart: unless-stopped
environment:
- ConnectionStrings__WinLineXPODataConnection=${WINLINE_DATA_CONNECTION}
- ConnectionStrings__WinLineXPOSystemConnection=${WINLINE_SYSTEM_CONNECTION}
- AppSettings__LicenseNumber=${LICENSE_NUMBER}
- AppSettings__CustomerNumber=${CUSTOMER_NUMBER}
- AppSettings__ApiKeyHeaderValue=${API_KEY}
- DOTNET_ENVIRONMENT=Production
# Business API
meso-business-api:
image: ghcr.io/css-edv-support/mesoapi-webapi:latest
restart: unless-stopped
environment:
- ConnectionStrings__WinLineXPODataConnection=${WINLINE_DATA_CONNECTION}
- ConnectionStrings__WinLineXPOSystemConnection=${WINLINE_SYSTEM_CONNECTION}
- AppSettings__LicenseNumber=${LICENSE_NUMBER}
- AppSettings__CustomerNumber=${CUSTOMER_NUMBER}
- AppSettings__ApiKeyHeaderValue=${API_KEY}
- DOTNET_ENVIRONMENT=Production
# SQL Server (if running locally)
# sqlserver:
# image: mcr.microsoft.com/mssql/server:2022-latest
# environment:
# - ACCEPT_EULA=Y
# - SA_PASSWORD=YourStrong@Passw0rd
# ports:
# - "1433:1433"
# volumes:
# - sqlserver_data:/var/opt/mssql
# volumes:
# sqlserver_data:
Environment File (.env)
# Database connections
WINLINE_DATA_CONNECTION=Server=sql-server;Database=WinLine_Data;User Id=api_user;Password=SecurePassword123;TrustServerCertificate=true
WINLINE_SYSTEM_CONNECTION=Server=sql-server;Database=WinLine_System;User Id=api_user;Password=SecurePassword123;TrustServerCertificate=true
# Licensing
LICENSE_NUMBER=12345678
CUSTOMER_NUMBER=987654321
# Security
API_KEY=production-api-key-2024
Kubernetes Deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: meso-reduced-api
spec:
replicas: 2
selector:
matchLabels:
app: meso-reduced-api
template:
metadata:
labels:
app: meso-reduced-api
spec:
containers:
- name: api
image: ghcr.io/css-edv-support/mesoapireduced-odata:latest
ports:
- containerPort: 80
env:
- name: ConnectionStrings__WinLineXPODataConnection
valueFrom:
secretKeyRef:
name: meso-secrets
key: winline-data-connection
- name: ConnectionStrings__WinLineXPOSystemConnection
valueFrom:
secretKeyRef:
name: meso-secrets
key: winline-system-connection
- name: AppSettings__LicenseNumber
valueFrom:
secretKeyRef:
name: meso-secrets
key: license-number
- name: AppSettings__CustomerNumber
valueFrom:
secretKeyRef:
name: meso-secrets
key: customer-number
- name: AppSettings__ApiKeyHeaderValue
valueFrom:
secretKeyRef:
name: meso-secrets
key: api-key
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "512Mi"
cpu: "500m"
livenessProbe:
httpGet:
path: /health
port: 80
initialDelaySeconds: 30
periodSeconds: 10
readinessProbe:
httpGet:
path: /health
port: 80
initialDelaySeconds: 5
periodSeconds: 5
---
apiVersion: v1
kind: Service
metadata:
name: meso-reduced-api-service
spec:
selector:
app: meso-reduced-api
ports:
- port: 80
targetPort: 80
type: LoadBalancer
🔍 Monitoring & Operations
Health Checks
All APIs provide health check endpoints:
# Basic health check
curl http://localhost:5500/health
# Detailed health information
curl http://localhost:5500/health/detailed
# Check database connectivity
curl http://localhost:5500/health/database
Logging
APIs use structured logging with Serilog. Configure log levels via environment:
# Environment variables for logging
-e Logging__LogLevel__Default=Information
-e Logging__LogLevel__Microsoft=Warning
-e Logging__LogLevel__Microsoft.AspNetCore=Warning
-e Serilog__MinimumLevel=Information
# Log to file (mount volume)
-v /host/logs:/app/logs
-e Serilog__WriteTo__0__Name=File
-e Serilog__WriteTo__0__Args__path=/app/logs/meso-api-.txt
-e Serilog__WriteTo__0__Args__rollingInterval=Day
Performance Tuning
# Production environment variables
-e DOTNET_ENVIRONMENT=Production
-e ASPNETCORE_URLS=http://+:80
-e DOTNET_SYSTEM_GLOBALIZATION_INVARIANT=false
# Memory optimization
-e DOTNET_gcServer=true
-e DOTNET_gcConcurrent=true
# Connection pooling
-e ConnectionStrings__WinLineXPODataConnection="...;Pooling=true;Max Pool Size=100;Min Pool Size=5"
📚 API Documentation & Discovery
Interactive Documentation
Each API provides comprehensive Swagger documentation:
- Reduced API: http://localhost:5500/swagger
- Full API: http://localhost:5501/swagger
- Business API: http://localhost:5502/swagger
Metadata Discovery
# OData metadata (entity models)
curl http://localhost:5500/odata/$metadata
# OpenAPI specification
curl http://localhost:5500/swagger/v1/swagger.json
# Available endpoints
curl http://localhost:5500/odata/
# Service document
curl http://localhost:5500/odata/\$metadata
Testing with API Collections
The repository includes comprehensive test collections in
ApiTestCollections/
that can be imported into:
- Bruno (recommended)
- Postman
- Insomnia
- REST Client extensions
🔧 Fehlerbehebung
Häufige Probleme
Lizenzvalidierungsfehler
# Lizenzkonfiguration prüfen
curl -H "X-MesoAPI-Key: $API_KEY" http://localhost:5500/health/license
# Lizenz-Umgebungsvariablen überprüfen
docker exec container-name env | grep AppSettings__License
Datenbankverbindungsprobleme
# Datenbankverbindung testen
curl -H "X-MesoAPI-Key: $API_KEY" http://localhost:5500/health/database
# Verbindungsstrings prüfen
docker logs container-name | grep -i "connection\|database"
Authentifizierungsprobleme
# API-Key überprüfen
curl -v -H "X-MesoAPI-Key: falscher-key" http://localhost:5500/odata/Artikelview
# JWT-Konfiguration prüfen (falls verwendet)
curl -X POST http://localhost:5500/auth/login \
-H "Content-Type: application/json" \
-d '{"username": "test", "password": "test"}'
Performance Issues
# Check container resource usage
docker stats container-name
# Monitor API response times
curl -w "@curl-format.txt" -H "X-MesoAPI-Key: $API_KEY" http://localhost:5500/odata/Artikelview
# Enable detailed logging
docker run -e Logging__LogLevel__Default=Debug ...
🤝 Support & Ressourcen
Technischer Support
- E-Mail: [email protected]
- Dokumentation: updates.itsolute.de/mesoodataapi
- Antwortzeit: Typischerweise innerhalb von 24 Stunden an Werktagen
Ressourcen
- WinLine Dokumentation: www.mesonic.com
- OData Spezifikation: www.odata.org
- Container Images: GitHub Container Registry
Lizenzierung & Vertrieb
- Lizenzinformationen: Erforderlich für alle Produktionsbereitstellungen
- Vertriebskontakt: [email protected]
- Testlizenzen: Verfügbar für Evaluierungszwecke
Powered by CSS EDV Support • Erstellt für WinLine ERP Integration