STAC endpoints with custom `/validate`
Goal: Create a custom STAC endpoints with validation
requirements: titiler.core
&& jsonschema
"""FastAPI application."""
from fastapi import FastAPI
from rio_tiler.io import STACReader
from titiler.core.dependencies import DatasetPathParams
from titiler.core.factory import MultiBaseTilerFactory
from titiler.core.errors import DEFAULT_STATUS_CODES, add_exception_handlers
# STAC uses MultiBaseReader so we use MultiBaseTilerFactory to built the default endpoints
stac = MultiBaseTilerFactory(reader=STACReader, router_prefix="stac")
# We add `/validate` to the router
@stac.router.get("/validate")
def stac_validate_get(src_path=Depends(DatasetPathParams)):
"""STAC validation."""
with STACReader(src_path) as stac_src:
return stac_src.item.validate()
# Create FastAPI application
app = FastAPI(title="My simple app with custom STAC endpoint")
app.include_router(stac.router, tags=["STAC"])
add_exception_handlers(app, DEFAULT_STATUS_CODES)