first
This commit is contained in:
@@ -0,0 +1,69 @@
|
||||
"""Číselníky CPL API + informace o verzích a stavu API.
|
||||
|
||||
Všechny číselníky jsou GET s povinným stránkováním (Limit/Offset) a vracejí
|
||||
X-Paging-* hlavičky, které služba předává dál.
|
||||
"""
|
||||
from enum import Enum
|
||||
|
||||
from fastapi import APIRouter, Depends, Query
|
||||
|
||||
from ..cpl_client import cpl_request, relay_json
|
||||
from ..credentials import Credentials, get_credentials
|
||||
|
||||
router = APIRouter(tags=["codelists"])
|
||||
|
||||
|
||||
class Codelist(str, Enum):
|
||||
"""Názvy číselníků dle CPL API (tvoří cestu /codelist/{name})."""
|
||||
|
||||
ageCheck = "ageCheck"
|
||||
product = "product"
|
||||
externalNumber = "externalNumber"
|
||||
country = "country"
|
||||
currency = "currency"
|
||||
service = "service"
|
||||
servicePriceLimit = "servicePriceLimit"
|
||||
shipmentPhase = "shipmentPhase"
|
||||
status = "status"
|
||||
validationMessage = "validationMessage"
|
||||
proofOfIdentityType = "proofOfIdentityType"
|
||||
documentFileType = "documentFileType"
|
||||
|
||||
|
||||
@router.get("/codelists/{codelist}", summary="Číselník CPL API")
|
||||
async def get_codelist(
|
||||
codelist: Codelist,
|
||||
limit: int = Query(default=1000, ge=1, le=1000),
|
||||
offset: int = Query(default=0, ge=0),
|
||||
creds: Credentials = Depends(get_credentials),
|
||||
):
|
||||
"""`GET codelist/{name}` — např. product (produkty), country (země + povolení COD),
|
||||
currency (měny), service (služby), servicePriceLimit (min/max hodnoty služeb),
|
||||
status (statusy zásilky), validationMessage (chybové kódy)."""
|
||||
resp = await cpl_request(
|
||||
creds,
|
||||
"GET",
|
||||
f"/codelist/{codelist.value}",
|
||||
params={"Limit": limit, "Offset": offset},
|
||||
)
|
||||
return relay_json(resp)
|
||||
|
||||
|
||||
@router.get("/version-information", summary="Novinky a změny verzí CPL API")
|
||||
async def version_information(
|
||||
limit: int = Query(default=100, ge=1, le=1000),
|
||||
offset: int = Query(default=0, ge=0),
|
||||
creds: Credentials = Depends(get_credentials),
|
||||
):
|
||||
"""`GET versionInformation` — přehled novinek/změn API publikovaných PPL."""
|
||||
resp = await cpl_request(
|
||||
creds, "GET", "/versionInformation", params={"Limit": limit, "Offset": offset}
|
||||
)
|
||||
return relay_json(resp)
|
||||
|
||||
|
||||
@router.get("/cpl-info", summary="Stav a verze CPL API (upstream /info)")
|
||||
async def cpl_info(creds: Credentials = Depends(get_credentials)):
|
||||
"""`GET info` — rychlé ověření, že PPL CPL API běží (verze, stav, čas serveru)."""
|
||||
resp = await cpl_request(creds, "GET", "/info")
|
||||
return relay_json(resp)
|
||||
Reference in New Issue
Block a user