8f648264f1
The create-workspace endpoints caught every exception and returned 409 "Workspace name already exists", hiding the actual failure (e.g. git clone errors, remote URL problems, or filesystem issues). - Distinguish ValueError -> 400, unexpected exceptions -> 500 with detail - Preserve HTTPException re-raise for existing FastAPI error paths Quality gates: - pytest tests/unit: 219 passed - mypy: clean on changed files
1.5 KiB
1.5 KiB
apps/api/src/api
dir: apps/api/src/api
index: apps/api/src/api/.pi-map.index.md
role
Defines the API routing package and shared validation utilities for the REST API layer.
files
- __init__.py | Marks the directory as a Python package for API routers.
- shared_validators.py | Provides reusable Pydantic validator functions for API schema validation including mount paths, files, environment variables, and volume mounts. | exp: func:validate_mount_path(v: str | None) → str | None, call:v.startswith, raise:ValueError, func:validate_files(v: dict | None, max_size_bytes) → dict | None, call:v.items, call:path.startswith, call:len, call:content.encode, raise:ValueError, func:validate_env_vars(v: dict | None) → dict | None, call:isinstance, raise:ValueError, func:validate_volumes(v: list | None) → list | None, call:isinstance, call:enumerate, raise:ValueError
arch
Modular package structure with reusable Pydantic validators for cross-cutting API schema concerns.
tags
validate, raise:value, error, call:isinstance, mount, api, init, path
symbols
- validate_mount_path
- validate_files
- validate_env_vars
- validate_volumes
- call:v.startswith
- raise:ValueError
- call:v.items
- call:path.startswith
workflows
- change api behavior read: __init__.py, shared_validators.py
- explore api subdirectories index: apps/api/src/api/config/.pi-map.index.md, apps/api/src/api/project/.pi-map.index.md, apps/api/src/api/system/.pi-map.index.md