Court operations — status, condition & allocation
Real-time status per court, issue reports with photos, maintenance with cost tracking and competition allocation. A report can be linked to the maintenance job that resolves it; maintenance and allocations block the court in the booking calendar (Courts & booking).
5/12
Courts free now
2
Unresolved condition reports
2
Ongoing/planned maintenance
2
Active allocations
Occupancy board · GET /v1/venues/{id}/courts/status?at= — bookings + allocations + maintenance combined
Time: ● live (SSE)
Court 1 · Centre
Free
next booking 19:00
Court 2
Booked
Anna Lind 18–19
Court 3
Maintenance
surface repair until 6 Jul
Court 4
Allocated
District Championship Doubles
Court 5
Booked
league · Nordviks BK
Court 6
Free
Court 7
Free
Court 8
Booked
walk-in · Jonas
Court 9
Allocated
District Championship Doubles
Court 10
Free
Court 11
Free
Court 12
Closed
closed for the season
The same board is shown on the info screen at the entrance (public variant without booker names). QR check-in on the booking confirms the slot — no-show sweep 30 min after start.
Condition reports · GET …/condition-reports
| Court | Issue | Category | Severity | Reported by | When | Status | |
|---|---|---|---|---|---|---|---|
| 3 | Cracks in the surface | surface | high | Anna Ek | today | ○ unresolved | · |
| 7 | Poor drainage in rain | drainage | medium | Caretaker Berg | two days ago | ○ unresolved | · |
| 1 | Worn line markings | markings | low | Karin S | 2026-06-20 | ✓ resolved | — |
"Resolve" sets resolved_at + resolved_by; the report can be linked to a maintenance job (maintenance_record_id). The report "Worn line markings" was resolved by the maintenance job "Re-marking court 1".
Report an issue — POST …/condition-reports (all fields)
Photos (images)
🖼️
✅
No unresolved condition reports.
Players and staff can report issues straight from the app via the court's QR code.
Maintenance lifecycle
scheduled → in_progress → completed → cancelled
Maintenance · GET …/maintenance — cost as *_minor + currency
| Title | Type | Courts | Date | Owner | Est. (SEK) | Actual (SEK) | Status | |
|---|---|---|---|---|---|---|---|---|
| Surface repair court 3 | surface_repair | Court 3 | 5–6 Jul | Caretaker Ek | 4,000 | — | scheduled | |
| Lighting service | lighting | Courts 5, 6 | 2026-06-28 | ElFirman AB | 3,500 | — | in_progress | |
| Re-marking court 1 | line_marking | Court 1 | 2026-06-22 | Karin S | 800 | 750 | completed | — |
Completion asks for the actual cost (actual_cost_minor) and resolves linked condition reports. The window blocks the court in the booking calendar.
Schedule maintenance — POST …/maintenance (all fields)
Courts (court_ids · at least one)
Blocks the court in the occupancy and booking views during the window.
Allocation lifecycle — planned/confirmed blocks regular booking & leagues in the window (409 allocation_conflict)
planned → confirmed → released → cancelled
Allocations · GET …/allocations — competition_id is a soft reference to the competition domain
| Competition | Session | Courts | Window | Status | |
|---|---|---|---|---|---|
| District Championship Doubles 2026 | Round 1 a.m. | Courts 1–8 | Sat 4 Jul 08:00–12:00 | confirmed | |
| District Championship Doubles 2026 | Playoffs | Courts 1–4 | Sun 5 Jul 09:00–16:00 | planned | · |
| Club league round 3 | Evening | Courts 9–12 | Thu 9 Jul 18:00–22:00 | released | — |
New allocation — POST …/allocations
Courts (court_ids · at least one)
⚠ Conflict: court 5 has a recurring club training in the window. The allocation blocks it — confirm to continue.
Idempotency-Key + ETag on the mutation. Requirement validation per competition level happens at approval — see Homologation.
⚠
Could not allocate — 409 allocation_conflict
Court 4 already has a confirmed allocation in the window. Release it first or choose other courts.