from __future__ import annotations from app.providers.base import BaseReferenceProvider class GRBProvider(BaseReferenceProvider): def __init__(self) -> None: super().__init__( provider_name="grb", display_name="GRB", authority_level="authoritative", supported_layers=["buildings", "roads", "water", "parcels"], supported_geometry_types=["Polygon", "MultiPolygon", "LineString", "MultiLineString"], supported_query_modes=["bbox", "persisted_area"], fetch_signature="POST /api/v1/projects/{project_id}/datasets/grb/acquire", limitation_message=( "Alleen expliciet begrensde selecties tot 20 km per zijde worden opgehaald. " "Volledige providerdownloads en onbeperkte queries zijn niet toegestaan." ), attribution="Bron: Grootschalig Referentie Bestand Vlaanderen, Digitaal Vlaanderen", license_note="Hergebruik volgens de open-datavoorwaarden en bronvermelding van Digitaal Vlaanderen.", configured=True, ) def fetch(self, project_id: str, area_id: str | None, layers: list[str]) -> dict: del project_id, area_id, layers return { "provider": self.provider_name, "status": "bounded_request_required", "message": ( "Use POST /api/v1/projects/{project_id}/datasets/grb/acquire with an EPSG:4326 " "bounding box and one governed product key." ), }