diff --git a/src/anyvlm/schemas/common.py b/src/anyvlm/schemas/common.py index d1b19a9..6a01bb2 100644 --- a/src/anyvlm/schemas/common.py +++ b/src/anyvlm/schemas/common.py @@ -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" @@ -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.""" @@ -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() diff --git a/tests/unit/test_restapi.py b/tests/unit/test_restapi.py index 6e6e2c8..048f94a 100644 --- a/tests/unit/test_restapi.py +++ b/tests/unit/test_restapi.py @@ -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