Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
16 changes: 14 additions & 2 deletions src/anyvlm/schemas/common.py
Original file line number Diff line number Diff line change
@@ -1,14 +1,17 @@
"""Define REST API schemas"""

from enum import Enum
from enum import StrEnum
from typing import Literal

from anyvar.restapi.schema import ImplMetadata
from ga4gh.va_spec import VASPEC_VERSION
from ga4gh.vrs import VRS_VERSION
from pydantic import BaseModel

from anyvlm import __version__


class ServiceEnvironment(str, Enum):
class ServiceEnvironment(StrEnum):
"""Define current runtime environment."""

LOCAL = "local"
Expand Down Expand Up @@ -36,6 +39,13 @@ class ServiceType(BaseModel):
SERVICE_DESCRIPTION = "An AnyVLM instance"


class SpecMetadata(BaseModel):
"""Define substructure for reporting specification metadata."""

vrs_version: str = VRS_VERSION
vaspec_version: str = VASPEC_VERSION


class ServiceInfo(BaseModel):
"""Define response structure for GA4GH /service_info endpoint."""

Expand All @@ -54,3 +64,5 @@ class ServiceInfo(BaseModel):
updatedAt: Literal["2025-06-01T00:00:00Z"] = "2025-06-01T00:00:00Z" # noqa: N815
environment: ServiceEnvironment
version: str = __version__
spec_metadata: SpecMetadata = SpecMetadata()
impl_metadata: ImplMetadata = ImplMetadata()
4 changes: 4 additions & 0 deletions tests/unit/test_restapi.py
Original file line number Diff line number Diff line change
Expand Up @@ -29,3 +29,7 @@ def test_service_info(restapi_client: TestClient, test_data_dir: Path):
resolver = jsonschema.RefResolver.from_schema(spec)
data = response.json()
jsonschema.validate(instance=data, schema=resp_schema, resolver=resolver)

assert data["spec_metadata"]["vrs_version"] is not None
assert data["spec_metadata"]["vaspec_version"] is not None
assert data["impl_metadata"]["vrs_python_version"] is not None