diff --git a/stapi-fastapi/src/stapi_fastapi/conformance.py b/stapi-fastapi/src/stapi_fastapi/conformance.py index 836c34e..a593717 100644 --- a/stapi-fastapi/src/stapi_fastapi/conformance.py +++ b/stapi-fastapi/src/stapi_fastapi/conformance.py @@ -1,3 +1,5 @@ -CORE = "https://stapi.example.com/v0.1.0/core" -OPPORTUNITIES = "https://stapi.example.com/v0.1.0/opportunities" -ASYNC_OPPORTUNITIES = "https://stapi.example.com/v0.1.0/async-opportunities" +from stapi_pydantic.constants import STAPI_VERSION + +CORE = f"https://stapi.example.com/v{STAPI_VERSION}/core" +OPPORTUNITIES = f"https://stapi.example.com/v{STAPI_VERSION}/opportunities" +ASYNC_OPPORTUNITIES = f"https://stapi.example.com/v{STAPI_VERSION}/async-opportunities" diff --git a/stapi-pydantic/CHANGELOG.md b/stapi-pydantic/CHANGELOG.md index 78bddee..c26048e 100644 --- a/stapi-pydantic/CHANGELOG.md +++ b/stapi-pydantic/CHANGELOG.md @@ -6,6 +6,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), ## [Unreleased] +### Added + +- `stapi_type` and `stapi_version` ([#54](https://github.com/stapi-spec/pystapi/pull/54)) + ## [0.0.2] - 2025-04-02 ### Changed diff --git a/stapi-pydantic/src/stapi_pydantic/constants.py b/stapi-pydantic/src/stapi_pydantic/constants.py new file mode 100644 index 0000000..80915d1 --- /dev/null +++ b/stapi-pydantic/src/stapi_pydantic/constants.py @@ -0,0 +1,2 @@ +STAPI_VERSION = "0.1.0" +"""The default STAPI version for this library.""" diff --git a/stapi-pydantic/src/stapi_pydantic/order.py b/stapi-pydantic/src/stapi_pydantic/order.py index 9ed02c8..8d23594 100644 --- a/stapi-pydantic/src/stapi_pydantic/order.py +++ b/stapi-pydantic/src/stapi_pydantic/order.py @@ -13,6 +13,7 @@ field_validator, ) +from .constants import STAPI_VERSION from .datetime_interval import DatetimeInterval from .filter import CQL2Filter from .opportunity import OpportunityProperties @@ -84,6 +85,8 @@ class Order[T: OrderStatus](_GeoJsonBase): # retrieve them via the API id: StrictStr type: Literal["Feature"] = "Feature" + stapi_type: Literal["Order"] = "Order" + stapi_version: str = STAPI_VERSION geometry: Geometry = Field(...) properties: OrderProperties[T] = Field(...) diff --git a/stapi-pydantic/src/stapi_pydantic/product.py b/stapi-pydantic/src/stapi_pydantic/product.py index 533a55d..08a89e9 100644 --- a/stapi-pydantic/src/stapi_pydantic/product.py +++ b/stapi-pydantic/src/stapi_pydantic/product.py @@ -3,6 +3,7 @@ from pydantic import AnyHttpUrl, BaseModel, Field +from .constants import STAPI_VERSION from .shared import Link type Constraints = BaseModel @@ -28,7 +29,9 @@ def __init__(self, url: AnyHttpUrl | str, **kwargs: Any) -> None: class Product(BaseModel): - type_: Literal["Product"] = Field(default="Product", alias="type") + type_: Literal["Collection"] = Field(default="Collection", alias="type") + stapi_type: Literal["Product"] = "Product" + stapi_version: str = STAPI_VERSION conformsTo: list[str] = Field(default_factory=list) id: str title: str = ""