Add Bird gate call flow unit tests, self-serve machine wash minutes config, relay sync improvements, and OpenAPI updates. Refactor Bird call handling with terminal status detection and timeout normalization.

This commit is contained in:
Jeppe Bundgaard
2026-03-26 13:16:18 +01:00
parent a4654398d0
commit 95063d2a70
20 changed files with 731 additions and 77 deletions
+33 -3
View File
@@ -7433,7 +7433,9 @@ paths:
tags:
- Modules
summary: Send self-serve lane command
description: Send a command (e.g., start, stop, reset) to a self-serve lane
description: |
Send a command (e.g., start, stop, reset) to a self-serve lane.
Property gate commands (`OPEN_PROPERTY_ACCESS_GATE`, `OPEN_PROPERTY_EXIT_GATE`) are also supported here.
operationId: sendSelfServeLaneCommand
requestBody:
required: true
@@ -7449,7 +7451,7 @@ paths:
type: integer
command:
type: string
enum: [START, STOP, RESET, RESERVE, RELEASE]
enum: [START, STOP, RESET, RESERVE, RELEASE, OPEN_PROPERTY_ACCESS_GATE, OPEN_PROPERTY_EXIT_GATE]
license_plate:
type: string
description: Required for START command
@@ -7460,6 +7462,20 @@ paths:
application/json:
schema:
$ref: '#/components/schemas/SelfServeLaneStatus'
'400':
description: Command execution failed
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Failed to execute command: Failed to open property access gate.
'401':
$ref: '#/components/responses/Unauthorized'
'403':
$ref: '#/components/responses/Forbidden'
/modules/self-serve/lane/services/allowed:
post:
@@ -7513,6 +7529,7 @@ paths:
summary: Open a self-serve lane gate
description: |
Opens either the ENTRANCE or EXIT gate relay for a self-serve lane.
Failures return a sanitized gate-specific message.
operationId: openSelfServeLaneGate
requestBody:
required: true
@@ -7546,6 +7563,16 @@ paths:
type: boolean
state:
type: string
'400':
description: Gate open failed
content:
application/json:
schema:
type: object
properties:
message:
type: string
example: Failed to open entrance gate.
'401':
$ref: '#/components/responses/Unauthorized'
'403':
@@ -10763,7 +10790,7 @@ components:
type: object
properties:
module: { type: string, enum: [selfserve] }
variable: { type: string, enum: [enabled, minute_product] }
variable: { type: string, enum: [enabled, minute_product, machine_wash_minutes_included] }
type: { type: string, enum: [bool, int] }
value:
oneOf:
@@ -12698,6 +12725,9 @@ components:
minute_product:
type: integer
description: The product ID used for minute-based billing
machine_wash_minutes_included:
type: integer
description: Included machine wash minutes before minute-based billing starts
SelfserveLaneService:
type: string