Ekaropolus d4b56e1a2c
All checks were successful
continuous-integration/drone/push Build is passing
Internet of Agent Initial part
2025-09-18 12:49:31 -06:00

41 lines
1.1 KiB
Python

from django.http import JsonResponse
from django.views.decorators.http import require_GET
# Versión del contrato
try:
from .version import SPEC_VERSION
except Exception:
SPEC_VERSION = "0.1.0"
# Modelos Pydantic
from .contracts.sami import SAMIRunRequest, SAMIRunResponse
from .contracts.sites import SiteSearchRequest, SiteSearchResponse
def _schema_of(model_cls):
"""Devuelve JSONSchema para Pydantic v2 o v1."""
try:
return model_cls.model_json_schema() # Pydantic v2
except Exception:
return model_cls.schema() # Pydantic v1
@require_GET
def sami_contracts(request):
"""GET /api/contracts/sami.json"""
return JsonResponse({
"spec_version": SPEC_VERSION,
"request": _schema_of(SAMIRunRequest),
"response": _schema_of(SAMIRunResponse),
})
@require_GET
def sites_contracts(request):
"""GET /api/contracts/sites.json"""
return JsonResponse({
"spec_version": SPEC_VERSION,
"request": _schema_of(SiteSearchRequest),
"response": _schema_of(SiteSearchResponse),
})