exlab_wizard.api.routers.browse#
/tree and /run/{path} browse endpoints. Backend Spec §4.6.1.
Two endpoints back the Frontend’s tree view (Frontend §3.6) and run detail panel (Frontend §3.6.2):
GET /tree– equipment / project / run hierarchy.GET /run/{path}– single-run detail (template, operator, sync status, run kind, README content).
The router walks the local filesystem under each configured equipment
root via os.scandir (the same iterator the validator uses for
audit-mode walks; §4.5). creation.json is decoded via
msgspec.json.decode per §4.4.5.
Functions
Construct the |
Classes
|
|
|
|
|
|
|
|
|
- class exlab_wizard.api.routers.browse.EquipmentNode(**data)[source]#
Bases:
BaseModel- Parameters:
data (
Any)
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- projects: list[ProjectNode]#
- class exlab_wizard.api.routers.browse.ProjectNode(**data)[source]#
Bases:
BaseModel- Parameters:
data (
Any)
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class exlab_wizard.api.routers.browse.RunDetail(**data)[source]#
Bases:
BaseModel- Parameters:
data (
Any)
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class exlab_wizard.api.routers.browse.RunNode(**data)[source]#
Bases:
BaseModel- Parameters:
data (
Any)
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].
- class exlab_wizard.api.routers.browse.TreeResponse(**data)[source]#
Bases:
BaseModel- Parameters:
data (
Any)
- equipment: list[EquipmentNode]#
- model_config: ClassVar[ConfigDict] = {'extra': 'forbid'}#
Configuration for the model, should be a dictionary conforming to [ConfigDict][pydantic.config.ConfigDict].