From 6a69b160ccea974eaec4432fbdbe4630b4e95538 Mon Sep 17 00:00:00 2001 From: Jakub Wlodek Date: Tue, 10 Mar 2026 11:06:08 -0400 Subject: [PATCH] Add endpoint for re metadata retrieval --- bluesky_httpserver/routers/core_api.py | 12 ++++++++++++ bluesky_httpserver/tests/test_core_api_main.py | 18 ++++++++++++++++++ 2 files changed, 30 insertions(+) diff --git a/bluesky_httpserver/routers/core_api.py b/bluesky_httpserver/routers/core_api.py index 397972b..9e47d58 100644 --- a/bluesky_httpserver/routers/core_api.py +++ b/bluesky_httpserver/routers/core_api.py @@ -699,6 +699,18 @@ async def re_runs_closed_handler(principal=Security(get_current_principal, scope return msg +@router.get("/re/metadata") +async def re_metadata(payload: dict = {}, principal=Security(get_current_principal, scopes=["read:monitor"])): + """ + Run Engine: download the metadata of the currently running plan. + """ + try: + msg = await SR.RM.re_metadata(**payload) + except Exception: + process_exception() + return msg + + @router.get("/plans/allowed") async def plans_allowed_handler( payload: dict = {}, diff --git a/bluesky_httpserver/tests/test_core_api_main.py b/bluesky_httpserver/tests/test_core_api_main.py index b2b5140..487fe05 100644 --- a/bluesky_httpserver/tests/test_core_api_main.py +++ b/bluesky_httpserver/tests/test_core_api_main.py @@ -1447,6 +1447,24 @@ def test_http_server_re_runs(re_manager, fastapi_server, suffix, expected_n_item assert wait_for_manager_state_idle(30), "Timeout" +def test_http_server_re_metadata(re_manager, fastapi_server): # noqa F811 + """ + Basic test for ``/re/metadata`` API. + """ + request_to_json("post", "/environment/open") + assert wait_for_environment_to_be_created(10), "Timeout" + + resp1 = request_to_json("get", "/re/metadata") + print(resp1) + assert resp1["success"] is True + assert "re_metadata" in resp1 + assert "versions" in resp1["re_metadata"] + assert resp1["re_metadata"]["metadata_key"] == "metadata_value" + + request_to_json("post", "/environment/close") + assert wait_for_environment_to_be_closed(10), "Timeout" + + _sample_trivial_plan1 = """ def trivial_plan_for_unit_test(): '''