OpenAPI-Generator-Setup: - tool/generate_api_client.sh: Direkter Aufruf der openapi-generator-cli.jar (Java-CLI statt Dart-build_runner-Integration — vermeidet die analyzer-/source_gen-Version-Hölle mit json_serializable) - tool/fetch_openapi_generator.sh: lädt die JAR (29 MB) nach (gitignored) - openapi/holzleitner.json: Snapshot der Backend-Spec für reproduzierbare Generation - packages/holzleitner_api/: generiertes Dart-Sub-Package (built_value + dio), per path-dep im Haupt-pubspec eingehängt Netzwerk-Layer (lib/data/network/): - BackendConfig: API- und Keycloak-Endpoints für Local-Dev (localhost wegen Keycloak-iss-Claim). - AuthTokenProvider-Schnittstelle. - DevPasswordGrantTokenProvider: Phase-A-Provider via Keycloak password-grant, Token-Caching mit Expiry-Check (Phase B ersetzt das durch flutter_appauth PKCE). - HolzleitnerAuthInterceptor: dynamischer Bearer-Inject pro Request. - HolzleitnerApiFactory: baut die generierte HolzleitnerApi-Klasse mit unserem Interceptor statt der vier Default-Auth-Interceptors. - network_locator.registerNetworking(): get_it-Setup, in main() vor runApp() aufgerufen. Clean-Arch-Scaffolding (lib/data/, lib/domain/): - Verzeichnisstruktur für Phase C+D angelegt (mapper/, repository/, entity/, repository/) — befüllt sich in den Folge-Phasen. Smoke-Test: - tool/smoke_test_api.dart ruft /health (ungeschützt) und /me/cars (mit Bearer) via generiertem Client — grün gegen lokales Backend.
holzleitner_api (EXPERIMENTAL)
Backend für die Holzleitner-Lieferservice-App — Tour, Beladung, Ausführung.
This Dart package is automatically generated by the OpenAPI Generator project:
- API version: 0.1.0
- Generator version: 7.10.0
- Build package: org.openapitools.codegen.languages.DartDioClientCodegen
Requirements
- Dart 2.15.0+ or Flutter 2.8.0+
- Dio 5.0.0+ (https://pub.dev/packages/dio)
Installation & Usage
pub.dev
To use the package from pub.dev, please include the following in pubspec.yaml
dependencies:
holzleitner_api: 1.0.0
Github
If this Dart package is published to Github, please include the following in pubspec.yaml
dependencies:
holzleitner_api:
git:
url: https://github.com/GIT_USER_ID/GIT_REPO_ID.git
#ref: main
Local development
To use the package from your local drive, please include the following in pubspec.yaml
dependencies:
holzleitner_api:
path: /path/to/holzleitner_api
Getting Started
Please follow the installation procedure and then run the following:
import 'package:holzleitner_api/holzleitner_api.dart';
final api = HolzleitnerApi().getAccountsApi();
final int personalnummer = 789; // int | Personalnummer des Accounts
try {
final response = await api.getAccount(personalnummer);
print(response);
} catch on DioException (e) {
print("Exception when calling AccountsApi->getAccount: $e\n");
}
Documentation for API Endpoints
All URIs are relative to http://localhost
| Class | Method | HTTP request | Description |
|---|---|---|---|
| AccountsApi | getAccount | GET /accounts/{personalnummer} | Liest den Account zu einer Personalnummer. |
| CarsApi | createMyCar | POST /me/cars | Legt ein neues Fahrzeug für den angemeldeten Fahrer an. |
| CarsApi | listMyCars | GET /me/cars | Listet die Fahrzeuge des angemeldeten Fahrers. |
| CarsApi | updateMyCar | PATCH /me/cars/{car_id} | Aktualisiert ein Fahrzeug (Kennzeichen ändern / deaktivieren). |
| DeliveriesApi | assignCar | PUT /deliveries/{delivery_id}/assigned-car | Setzt das `assigned_car_id` einer Lieferung. `carId: null` löst die Zuordnung wieder. Der Use Case stellt sicher, dass das Fahrzeug zum angemeldeten Account gehört. |
| DeliveriesApi | cancel | POST /deliveries/{delivery_id}/cancel | Setzt die Lieferung auf `canceled` — endgültig. Erlaubt aus `active` und `held`. |
| DeliveriesApi | complete | POST /deliveries/{delivery_id}/complete | Schließt die Lieferung ab — `state = completed`. Nur aus `active`. |
| DeliveriesApi | createNote | POST /deliveries/{delivery_id}/notes | Legt eine neue Notiz an einer Lieferung an. Mindestens eines von `text` und `imageAttachment` muss inhaltlich gefüllt sein (Leerstrings werden serverseitig getrimmt und als leer behandelt). |
| DeliveriesApi | hold | POST /deliveries/{delivery_id}/hold | Setzt die Lieferung auf `held`. Nur aus `active` zulässig. |
| DeliveriesApi | resume | POST /deliveries/{delivery_id}/resume | Setzt die Lieferung zurück auf `active`. Nur aus `held` zulässig. |
| HealthApi | health | GET /health | Health-Endpoint für Load-Balancer und Container-Probes. Bewusst kein Auth — eine `200 ok`-Antwort darf nicht von der Auth abhängen. |
| ScansApi | applyScans | POST /scans | Wendet eine Liste von Scan-Events idempotent an. |
| SyncApi | syncTour | POST /sync/tour | Sync-Endpoint für das ERP: legt eine Tagestour samt Lieferungen und Positionen idempotent an. Identität pro Tour `(driver_personalnummer, tour_date)`, pro Lieferung `(belegart_id, belegnummer)`. |
| ToursApi | getTour | GET /tours/{tour_id} | Lädt eine Tour mit allen Lieferungen, Positionen und referenzierten Stammdaten — die App nutzt das als einzigen großen Read. |
| ToursApi | listMyToursToday | GET /me/tours/today | Listet heutige Touren des angemeldeten Fahrers (Filter aus dem JWT). |
| ToursApi | setDeliveryOrder | PUT /tours/{tour_id}/delivery-order | Schreibt die Sortier-Reihenfolge aller Lieferungen einer Tour neu. Der Client schickt die vollständige neue Reihenfolge; fehlende oder fremde Lieferungs-Ids werden mit `400 validation` abgelehnt. |
Documentation For Models
- Account
- Address
- ApplyScansRequest
- ApplyScansResponse
- Article
- AssignCarRequest
- AuditAction
- CancelDeliveryRequest
- Car
- CarResponse
- CarsList
- CreateCarRequest
- CreateDeliveryNoteRequest
- Customer
- CustomerContact
- Delivery
- DeliveryItem
- DeliveryNote
- DeliveryNoteResponse
- DeliveryOrderEntry
- DeliveryResponse
- DeliveryState
- DeliveryWithItems
- HoldDeliveryRequest
- ScanEvent
- ScanResult
- ScanResultStatus
- ScanState
- ScanStatus
- SetDeliveryOrderRequest
- SetDeliveryOrderResponse
- SyncDelivery
- SyncDeliveryItem
- SyncTourRequest
- SyncTourResponse
- Tour
- TourDetails
- TourSummary
- TourSummaryList
- UpdateCarRequest
- Warehouse
Documentation For Authorization
Authentication schemes defined for the API:
bearer_auth
- Type: HTTP Bearer Token authentication (JWT)