• refactor: move the bulk export to its own /api/exports resource

    fromme released this 2026-09-29 14:23:36 +02:00 | 104 commits to master since this release

    /api/travels/{dateCode} accepts an arbitrary string, so /api/travels/export
    shared a namespace with every date code and stayed reachable only because
    byCode() carried a negative lookahead ruling that one string out. Nothing
    in the URL announced the constraint, and getting it wrong mis-routed
    silently: the first attempt widened the segment to .+ and swallowed
    /api/travels/{dateId}/{hotelId}/{dateTo}/availability whole.

    /api/exports never takes a parameterised segment, the same shape as
    /api/contingents, so the collision stops existing instead of being
    guarded. TravelController returns byte-for-byte to its state on master,
    lookahead included, and the export moves to its own resource controller.

    The routing test now also asserts that nothing is reintroduced under the
    date code namespace.

    Co-Authored-By: Claude Opus 5 [email protected]

    Downloads