API Pública /v1/public/

Guía interactiva para el consumo de la IA. Cada endpoint reutiliza el handler original (misma lógica y misma respuesta) y expone solo los métodos listados. Configura tu host y token abajo, abre un endpoint y pruébalo.

Conexión

Si ROOT_PATH está seteado, antepónlo: {ROOT_PATH}/v1/public/.... Las pruebas se ejecutan desde tu navegador, así que el servidor debe permitir CORS desde este origen; si no, usa los comandos curl generados.

GET / HEAD sin token POST con Bearer POST /auth/login/ sin token · rate limit

Convenciones

TipoSignificado
UUIDstring uuid
dtISO 8601; sin offset ⇒ hora LOCAL_TZ
?nullable / opcional (con exclude_none se omite si es null)
*requerido
Códigos de error
404 no existe409 duplicado400 regla de negocio422 validación401 sin/mal token
Paginación
{"total":int,"items":[...],"skip":int,
 "limit":int,"has_next":0|1,"has_previous":0|1}

En endpoints "paginated": ?paginated=true (default) devuelve el envelope; ?paginated=false devuelve lista simple.

Error estándar
{"error":{"code":str,"message":str,"status":int,
  "path":str,"tracking_id":str,"details"?:any}}
Enums

ComercialStatus:

OperatorEnum:

Notas sobre la lista original

/commercial/user-schedule/{agent_id} no existe en la API (no hay ruta por agente). El filtro por agente es ?user_id= en /commercial/user-schedule/range. No se expuso.
HEAD /commercial/lead/ no existía como ruta (daba 405); en /v1/public/ responde HEAD con el mismo handler del GET (200 con headers, sin body).
Los GET /{id} de finantial, urban-planning-type y building-type devuelven 500 (no 404) si el id no existe: el use case lanza ValueError sin traducir.

Código: app/modules/public_v1/adapters/public_v1_router.py · Registro de paths: app/middlewares/auth.py (PUBLIC_READ_PATHS / PUBLIC_ANY_METHOD_PATHS)