Crear una tarea en un plan de tareas

Crea una tarea completa dentro de un plan de tareas existente en una sola llamada atómica: tarea + activadores + subtareas + recursos. La operación es transaccional: si cualquier validación falla, no se persiste nada en la base de datos.

Add-on requerido

La empresa debe tener habilitado el add-on APIS AVANZADAS. Sin él, el endpoint responde 403.

Parámetros de entrada — Requeridos

Se envían en el body de la petición.

ParámetroTipoRequeridoDescripción
descriptiontextoDescripción de la tarea. Mínimo 3 caracteres, máximo 200. No puede estar vacía.
id_task_type_mainenteroTipo principal de tarea. Debe existir en el catálogo de tipos de tarea principales de la empresa.
id_group_taskenteroID del plan de tareas donde se crea la tarea. El plan debe existir y estar activo.
triggersarregloArreglo de activadores. Mínimo 1. Ver estructura abajo.

Estructura de triggers

Cada activador debe incluir id_task_trigger_type y los campos condicionales según el tipo.

CampoTipoRequeridoDescripción
id_task_trigger_typeentero1 = DATE · 2 = READING_WHEN · 3 = READING_EVERY · 4 = EVENT
value_maindecimalCondicionalDATE: > 0 (cada cuántos períodos). READING_EVERY: > 0. READING_WHEN: valor a comparar.
id_period_dateenteroCondicionalRequerido si tipo = 1 (DATE). Define la frecuencia (días/semanas/meses/años).
id_replayenteroCondicionalRequerido si tipo = 1 (DATE). 2 = repetir por número.
value_enddecimalCondicionalRequerido y > 0 si id_replay = 2. Número de repeticiones.
id_unitenteroCondicionalRequerido para READING_WHEN (2) y READING_EVERY (3). Debe existir en companies.units.
id_unit_operatorenteroCondicionalRequerido para READING_WHEN (2). Operador de comparación. Debe existir en companies.units_operators.
id_evententeroCondicionalEVENT (4): ID de evento existente en el catálogo de la empresa, o usar event_description.
event_descriptiontextoCondicionalEVENT (4): descripción del evento; se resuelve al id_event del catálogo. Requerido si no se envía id_event.

Reglas de activadores

  • Solo 1 activador DATE por tarea.
  • Sin unidades duplicadas en activadores READING_EVERY.
  • Máximo 2 READING_WHEN por unidad.
  • Sin eventos duplicados en activadores EVENT.

Parámetros de entrada — Opcionales

ParámetroTipoDefaultDescripción
id_task_typeenteroClasificación 1. Debe existir en el catálogo de tipos de tarea.
id_task_type_2enteroClasificación 2. Debe existir en el catálogo de tipos de tarea (nivel 2).
id_prioritiesentero3 (MEDIA)Prioridad de la tarea. Debe existir en companies.priorities.
durationentero600Duración estimada en segundos. Mínimo 60.
stop_assets_secentero0Tiempo de paro de activos en segundos.
subtasksarreglo[]Arreglo de subtareas. Ver estructura abajo.
resourcesarreglo[]Arreglo de recursos. Ver estructura abajo.

Estructura de subtasks

CampoTipoRequeridoDescripción
descriptiontextoDescripción de la subtarea.
id_task_form_item_typeenteroOpcionalTipo de campo 18. Default 1. 5 = LECTURA_MEDIDOR · 7 = DROPDOWN.
id_unitenteroCondicionalRequerido si tipo = 5 (LECTURA_MEDIDOR). Debe existir en companies.units.
dropdown_optionsarregloCondicionalRequerido si tipo = 7 (DROPDOWN). Mínimo 2 opciones.
id_task_form_item_groupenteroOpcionalGrupo/parte. Debe existir en tasks.tasks_form_items_groups.

Estructura de resources

CampoTipoRequeridoDescripción
typeentero1 = INVENTARIO · 2 = RECURSOS_HUMANOS · 3 = SERVICIOS
id_resourceenteroID del recurso según tipo: inventario (inventories.items tipo herramienta/repuesto) · RR.HH. (companies.hourly_rates) · servicios (third_parties.service_types).
qtynuméricoCantidad. Debe ser > 0.
unit_costnuméricoCosto unitario. Debe ser > 0. El total_cost se calcula automáticamente (qty × unit_cost).

Parámetros de salida

Respuesta exitosa: HTTP 201. Los datos se devuelven dentro de data.

ParámetroTipoDescripción
identeroID de la tarea creada.
id_group_taskenteroID del plan al que pertenece.
descriptiontextoDescripción de la tarea.
id_task_type_mainenteroTipo principal.
id_task_type / id_task_type_2enteroClasificaciones.
id_prioritiesenteroPrioridad.
durationenteroDuración en segundos.
stop_assetsbooleanotrue si stop_assets_sec > 0.
stop_assets_secenteroTiempo de paro en segundos.
is_configuredbooleanofalse si la tarea requiere configuración adicional desde la UI.
config_pendingbooleanotrue cuando hay activadores READING_WHEN/READING_EVERY y el plan ya tiene activos (faltan vincular medidores).
date_createtextoFecha de creación ISO 8601.
triggersarregloActivadores creados, con IDs generados.
subtasksarregloSubtareas creadas.
resourcesarregloRecursos creados.

is_configured y config_pending

Cuando la tarea tiene activadores por lectura (READING_WHEN o READING_EVERY) y el plan ya tiene activos asociados, la tarea se crea correctamente pero queda con "is_configured": false y "config_pending": true. Requiere configuración adicional para asociar medidores a los activos del plan.


Errores

CódigoCausa
401No autenticado · falta auth · empresa inválida · usuario inválido.
403La empresa no tiene el add-on APIS AVANZADAS, o el usuario no tiene permiso ADD sobre Plan de Tareas.
400body ausente · validación fallida (campos requeridos, rangos, tipos) · plan inexistente o inactivo · recurso/unidad/evento no encontrado en catálogo.
201Tarea creada correctamente (operación atómica).
500Error interno del servidor.

Comparativa con tasks_nonscheduled_post

Aspectotasks_nonscheduled_post (tarea no planificada)tasks_plan_post (este endpoint)
ContextoTarea suelta / no planificadaTarea dentro de un plan de tareas (id_group_task)
ActivadoresNoSí — mínimo 1 (DATE / READING_WHEN / READING_EVERY / EVENT)
SubtareasSí (opcional)
RecursosSí (opcional)
Add-onAPIS AVANZADAS

Ejemplo

Request body

{
  "description": "Inspección mensual de motor",
  "id_task_type_main": 1,
  "id_group_task": 1024,
  "id_priorities": 3,
  "duration": 600,
  "stop_assets_sec": 0,
  "triggers": [
    {
      "id_task_trigger_type": 1,
      "value_main": 1,
      "id_period_date": 2,
      "id_replay": 1
    },
    {
      "id_task_trigger_type": 3,
      "id_unit": 5,
      "value_main": 500
    }
  ],
  "subtasks": [
    {
      "description": "Verificar nivel de aceite",
      "id_task_form_item_type": 3,
      "is_required": true
    },
    {
      "description": "Lectura de horómetro",
      "id_task_form_item_type": 5,
      "id_unit": 5
    }
  ],
  "resources": [
    {
      "type": 1,
      "id_resource": 312,
      "qty": 2,
      "unit_cost": 15.50
    }
  ]
}

Response 201

{
  "success": true,
  "message": "201",
  "data": {
    "id": 88210,
    "id_group_task": 1024,
    "description": "Inspección mensual de motor",
    "id_task_type_main": 1,
    "id_priorities": 3,
    "duration": 600,
    "stop_assets": false,
    "stop_assets_sec": 0,
    "is_configured": true,
    "config_pending": false,
    "date_create": "2026-06-24T10:00:00",
    "triggers": [
      { "id": 4501, "id_task_trigger_type": 1 }
    ],
    "subtasks": [
      { "id": 7701, "description": "Verificar nivel de aceite" }
    ],
    "resources": [
      {
        "id": 9901,
        "type": 1,
        "id_resource": 312,
        "qty": 2,
        "unit_cost": 15.50,
        "total_cost": 31.00
      }
    ]
  },
  "total": 1
}

Response
200
Language
LoadingLoading…