Acciones
#Proyectos y series
La API pública permite listar proyectos, consultar su ficha y mantenerlos desde una integración. El listado devuelve la vista simple del mantenimiento. El detalle incluye datos generales, condiciones contractuales, fiscalidad, porcentajes, moneda, fechas, ubicación, cliente, estado, tipo de proyecto y coordenadas GPS, incluida su precisión.
#Operaciones
GET /api/public/v1/projectsyGET /api/public/v1/projects/{id}requierenprojects:read.POST /api/public/v1/projects,PUT /api/public/v1/projects/{id}, la desactivación, el borrado y el clonado requierenprojects:write.GET /api/public/v1/numbering-linesyGET /api/public/v1/numbering-lines/{id}requierennumbering-lines:read. Usascope=projectpara series de proyectos yscope=daily-reportpara series de partes. El valor predeterminado esproject.
Las listas usan limit, cursor y sort como el resto de la API V1. Consulta Paginación y errores.
El listado de proyectos se puede filtrar por code, name, clientId, projectStateId, active, search y modifiedSince. El de series admite scope, active, default, search y modifiedSince.
#Código y serie al crear
Hay tres formas de asignar el código:
- Envía
codesinnumberingLineIdpara usar un código manual. - Envía
numberingLineIdpara generar el código con una serie activa de proyectos. La serie indicada tiene prioridad sobrecode. - Omite ambos campos para usar la serie activa marcada como predeterminada para proyectos.
La petición falla si no hay código manual ni serie predeterminada válida. Consultar una serie no reserva un número. El número solo avanza al crear el proyecto dentro de la misma operación.
#Edición y desactivación
PUT /api/public/v1/projects/{id} reemplaza los campos editables documentados en el esquema OpenAPI. El código es obligatorio en la edición.
POST /api/public/v1/projects/{id}/deactivate es idempotente y responde 204, también si el proyecto ya estaba inactivo.
#Borrado
DELETE /api/public/v1/projects/{id} aplica las mismas reglas que el mantenimiento web. Si el proyecto no está siendo usado se elimina y devuelve:
{ "outcome": "deleted" }
Si tiene datos que impiden eliminarlo, se conserva desactivado:
{ "outcome": "deactivated" }
#Clonado
POST /api/public/v1/projects/{id}/clone recibe los datos del nuevo proyecto, la numeración y las opciones de clonado disponibles en el mantenimiento.
Una clonación ligera termina en la petición y responde 201. Las opciones que requieren trabajo en segundo plano responden 202 con la ficha del nuevo proyecto. En ese caso, conserva su id y consulta GET /api/public/v1/projects/{id} hasta que cloneStateId deje de indicar que está clonando. Un 202 confirma que el trabajo se ha aceptado, no que haya terminado.
