api: serialize azimuthal ROI phi sector over OpenAPI and CBOR

Expose the optional phi_min_deg / phi_max_deg azimuthal-sector bounds
added to ROIAzimuthal through the wire formats. Both are optional, so
older clients and streams (Q-only ROIs) remain valid.

- jfjoch_api.yaml: optional phi_min_deg / phi_max_deg on roi_azimuthal;
  regenerated the cpp-pistache server model and the TS frontend client.
- OpenAPIConvert: map phi both directions (set only when present).
- CBOR start message: emit phi_min/phi_max only for a sector; on decode,
  absent phi means a full ring.
- Documented the new optional CBOR fields; extended the CBOR round-trip
  test with a sector and a full-ring azimuthal ROI.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
2026-06-19 09:28:25 +02:00
co-authored by Claude Opus 4.8
parent 9e57219b31
commit 1d04656dc8
10 changed files with 149 additions and 13 deletions
@@ -504,6 +504,11 @@ inline nlohmann::json CBOR_ENC_ROI_CONFIG(const std::vector<ROIConfig> &roi) {
jr["type"] = "azim";
jr["qmin"] = r.azim.qmin;
jr["qmax"] = r.azim.qmax;
// phi_min == phi_max means a full ring; only emit a sector.
if (r.azim.phi_min != r.azim.phi_max) {
jr["phi_min"] = r.azim.phi_min;
jr["phi_max"] = r.azim.phi_max;
}
break;
}
j.push_back(jr);