cuenca-mx / cuenca-mx/cuenca-validations
[cuenca-validations] Tipos de órdenes de pago, lotes y beneficiarios
@rcabrera-py is already working on this.
Since Aug 27, 2026.
- Dominant language
- Python
- Stars
- 3
- Forks
- 0
- Avg merge
- 2d 13h
- Merged PRs (30d)
- 6
Description
Estado 2026-09-18. #420 mergeó tipos PM (LegalPerson/Operator) y cerró #421, no este issue. En main no hay
PaymentOrder*encuenca_validations.types. Sigue pendiente para oaxaca #606/#613.
Contexto
El portal de personas morales introduce tres recursos nuevos en oaxaca —órdenes de pago, órdenes por lote y beneficiarios con alias— y sus tipos tienen que vivir aquí.
Este paquete es el contrato del servidor: oaxaca valida contra estas clases. Por ejemplo, POST /transfers usa @app.validate(StrictTransferRequest) (oaxaca/chalicelib/resources/transfers.py:28), así que un campo que no exista en el request se ignora sin importar lo que mande el cliente.
Conviene dejarlo dicho porque es una confusión fácil: la v2 de cuenca-js no sustituye a este paquete. Son contratos de lados opuestos. cuenca-js tipa al cliente; cuenca-validations valida en el servidor. El precedente está en Python: cuenca-python no redefine nada, importa de aquí (cuenca/resources/transfers.py:4-11).
Entregable
Requests, queries y enums de los recursos nuevos, siguiendo las convenciones del paquete:
- Requests en
types/requests.py, heredando deBaseRequest. - Queries en
types/queries.py, heredando deQueryParams(conextra="forbid"yMAX_PAGE_SIZE=100). - Enums en
types/enums.pycomoclass X(str, Enum). - Tipos de valor reutilizando los existentes (
Clabe,Rfc,Curp,StrictPositiveIntpara montos en centavos).
Cubre:
- Órdenes de pago: request de creación, request de autorización/rechazo, query, y el enum de estados (
created,authorized,rejected,expired). - Órdenes por lote: request con renglones, estado por renglón, query.
- Beneficiarios:
aliasy estado de validación en el request deAccount.
Nota: los montos siempre en centavos enteros, como BaseTransferRequest.amount (types/requests.py:116-118, "Always in cents, not in MXN pesos").
Criterios de aceptación
- Tipos publicados y consumibles desde oaxaca.
- Exportados en
types/__init__.py. -
json_schema_extracon ejemplos, como el resto del paquete. - Versión publicada en PyPI y fijada en
oaxaca/requirements.txt. - Sin cambios breaking para los consumidores existentes (
cuenca-python, oaxaca, identify, authed).
Dependencias
Se define junto con los issues de oaxaca; la implementación de allá depende de que esto esté publicado.
Fuera de alcance
La referencia numérica. Transfer.reference_number existe en el modelo de oaxaca (chalicelib/models/transfers.py:47) pero no en BaseTransferRequest; exponerlo queda pospuesto.
Contexto del programa
Parte del portal de banca en línea para personas morales (proyecto Webapp #114).
Enlaces
Depende de: se define junto con cuenca-mx/oaxaca#605, cuenca-mx/oaxaca#606, cuenca-mx/oaxaca#607
Bloquea a: cuenca-mx/oaxaca#605, cuenca-mx/oaxaca#606, cuenca-mx/oaxaca#607
Contributor guide
No contributing guide indexed for this repository
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Assessment
This issue has not been assessed yet.