Crear subtareas en una tarea de un plan de tareas

Permite crear una o varias subtareas dentro de una tarea existente de un plan de tareas (formulario de mantenimiento), sin depender de la interfaz de Fracttal.

POST https://app.fracttal.com/api/tasks_subtasks

Parámetros de entrada — Requeridos

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

ParámetroTipoRequeridoDescripción
id_taskenteroId de la tarea existente dentro del plan de tareas donde se crearán las subtareas. Se obtiene del listado/detalle de tareas del plan.
is_cyclicalbooleanoIndica si la tarea maneja iteraciones. Debe coincidir con el estado real de la tarea — si no coincide, la petición se rechaza con 409.
num_iterationsenteroSí, solo si is_cyclical = trueNúmero de iteraciones de la tarea. Entero mayor a 0.
subtasksarray de objetosArray con al menos un elemento; cada elemento es la configuración de una subtarea. El orden del array determina el order_number asignado. Ver Parámetros de subtasks más abajo para los campos de cada elemento.

Parámetros de entrada — Opcionales

Ninguno a nivel superior — todos los campos opcionales de este endpoint son parte de cada elemento de subtasks (ver más abajo).


Parámetros de subtasks

Cada elemento del array subtasks representa una subtarea a crear, con los siguientes campos:

Requeridos

ParámetroTipoRequeridoDescripción
id_task_form_item_typeenteroTipo de subtarea a crear. Determina qué otros campos aplican — ver tabla Tipos de subtarea a continuación. Valores válidos: 1 a 8.
descriptiontextoTexto que se muestra como etiqueta/pregunta de la subtarea al ejecutar la tarea (ej. "Describe el procedimiento realizado"). No puede ir vacío.

Tipos de subtarea (id_task_form_item_type)

IdTipoCampos adicionales relevantes
1TextoNinguno adicional.
2Sí/NoNinguno adicional.
3NúmeroNinguno adicional.
4VerificaciónNinguno adicional.
5Lectura de medidorRequiere id_unit o unit_description (ver Opcionales). Si la tarea tiene activos vinculados, la respuesta puede incluir message: "ERROR_CONFIG_METERS_ASSETS".
6Localización GPSNinguno adicional.
7ListaRequiere dropdown_options con mínimo 2 elementos (ver Opcionales).
8Fecha y horaNinguno adicional.

Opcionales

ParámetroTipoRequeridoDescripción
is_requiredbooleanoOpcionalDefault: false.
attachments_requiredbooleanoOpcionalDefault: false.
task_form_item_group_descriptiontextoOpcionalNombre del grupo/parte. Si se provee, se busca un grupo similar (fuzzy match); si no existe, se crea automáticamente.
id_unitenteroOpcional (requerido si id_task_form_item_type = 5 y no se envía unit_description)Id de unidad de medida en companies.units. Si no existe, retorna 422.
unit_descriptiontextoOpcional (requerido si id_task_form_item_type = 5 y no se envía id_unit)Descripción de unidad; si no hay coincidencia por similitud, se crea automáticamente.
dropdown_optionsarrayOpcional (requerido si id_task_form_item_type = 7, mínimo 2 elementos)Cada elemento: { "description": string }.
iterationsobjetoOpcionalSolo aplica si is_cyclical = true (a nivel de la petición completa). Formato: { "iteration_1": true, "iteration_3": true, ... }. Si algún iteration_n tiene n > num_iterations, retorna 400. Si se omite o se envía vacío, la subtarea no participa en ninguna iteración.

Parámetros de salida

ParámetroTipoDescripción
identeroId generado para la subtarea creada.
id_taskenteroId de la tarea a la que pertenece.
id_task_form_item_typeenteroTipo de subtarea.
descriptiontextoDescripción de la subtarea.
order_numberenteroOrden asignado automáticamente por el servidor.
is_requiredbooleanoSi la subtarea es obligatoria.
attachments_requiredbooleanoSi requiere adjuntos.
id_task_form_item_groupenteroId del grupo/parte asociado (creado o reutilizado).
iterationsobjetoIteraciones en las que participa la subtarea.
dropdown_optionsarrayOpciones de lista (solo tipo 7).
messagetextoERROR_CONFIG_METERS_ASSETS cuando la tarea tiene activos vinculados y se agrega una subtarea tipo 5 (medidor); requiere configuración adicional por activo.
totalenteroNúmero de activos afectados — presente solo junto con ERROR_CONFIG_METERS_ASSETS.

Errores

CódigoCausa
400id_task no provisto; is_cyclical no provisto; is_cyclical=true sin num_iterations; num_iterations ≤ 0; subtasks vacío o ausente; id_task_form_item_type fuera de 1–8; description vacía; tipo 5 sin id_unit ni unit_description; tipo 7 con menos de 2 dropdown_options o alguna opción sin description; algún iteration_n con n > num_iterations.
401Sin autenticación.
403Sin permiso edit sobre TASKS > PLAN_TASKS.
404id_task no existe.
409is_cyclical o num_iterations del body no coincide con el estado real de la tarea.
415Content-Type distinto de application/json.
422id_unit inexistente en companies.units.

Ejemplo

Request body (tarea cíclica, 4 iteraciones)

{
  "id_task": 1001,
  "is_cyclical": true,
  "num_iterations": 4,
  "subtasks": [
    {
      "id_task_form_item_type": 1,
      "description": "Describe el procedimiento realizado",
      "iterations": { "iteration_4": true },
      "is_required": false,
      "attachments_required": false
    },
    {
      "id_task_form_item_type": 5,
      "description": "Lectura de presión hidráulica",
      "task_form_item_group_description": "Sistema Hidráulico",
      "id_unit": 42,
      "iterations": { "iteration_1": true, "iteration_2": true, "iteration_3": true, "iteration_4": true },
      "is_required": true,
      "attachments_required": false
    },
    {
      "id_task_form_item_type": 7,
      "description": "Estado general del equipo",
      "task_form_item_group_description": "Inspección General",
      "dropdown_options": [
        { "description": "Bueno" },
        { "description": "Regular" },
        { "description": "Malo" }
      ],
      "iterations": { "iteration_2": true, "iteration_4": true },
      "is_required": true,
      "attachments_required": true
    }
  ]
}

Response 200

{
  "success": true,
  "message": "200",
  "data": [
    {
      "id": 501,
      "id_task": 1001,
      "id_task_form_item_type": 1,
      "description": "Describe el procedimiento realizado",
      "order_number": 1,
      "is_required": false,
      "attachments_required": false,
      "id_task_form_item_group": null,
      "iterations": { "iteration_4": true },
      "dropdown_options": null
    },
    {
      "id": 502,
      "id_task": 1001,
      "id_task_form_item_type": 5,
      "description": "Lectura de presión hidráulica",
      "order_number": 2,
      "is_required": true,
      "attachments_required": false,
      "id_task_form_item_group": 12,
      "iterations": { "iteration_1": true, "iteration_2": true, "iteration_3": true, "iteration_4": true },
      "dropdown_options": null
    },
    {
      "id": 503,
      "id_task": 1001,
      "id_task_form_item_type": 7,
      "description": "Estado general del equipo",
      "order_number": 3,
      "is_required": true,
      "attachments_required": true,
      "id_task_form_item_group": 13,
      "iterations": { "iteration_2": true, "iteration_4": true },
      "dropdown_options": [
        { "id": 1, "description": "Bueno" },
        { "id": 2, "description": "Regular" },
        { "id": 3, "description": "Malo" }
      ]
    }
  ],
  "total": 3
}

Response — subtarea tipo medidor en tarea con activos vinculados

{
  "success": true,
  "message": "ERROR_CONFIG_METERS_ASSETS",
  "data": [
    {
      "id": 504,
      "id_task": 1001,
      "id_task_form_item_type": 5,
      "description": "Lectura de nivel de aceite",
      "order_number": 4,
      "is_required": true,
      "attachments_required": false,
      "id_task_form_item_group": null,
      "iterations": {},
      "dropdown_options": null
    }
  ],
  "total": 3
}

Definición OpenAPI

{
  "openapi": "3.1.0",
  "info": {
    "title": "tareas",
    "version": "1-Es"
  },
  "servers": [
    {
      "url": "https://app.fracttal.com/api/tasks_subtasks"
    }
  ],
  "security": [
    {}
  ],
  "paths": {
    "/": {
      "post": {
        "summary": "Crear subtareas en una tarea de un plan de tareas",
        "description": "",
        "operationId": "crear-subtareas-en-una-tarea-de-un-plan-de-tareas",
        "deprecated": false,
        "security": [],
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "type": "object",
                "required": ["id_task", "is_cyclical", "subtasks"],
                "properties": {
                  "id_task": { "type": "integer" },
                  "is_cyclical": { "type": "boolean" },
                  "num_iterations": { "type": "integer" },
                  "subtasks": {
                    "type": "array",
                    "minItems": 1,
                    "items": {
                      "type": "object",
                      "required": ["id_task_form_item_type", "description"],
                      "properties": {
                        "id_task_form_item_type": { "type": "integer", "minimum": 1, "maximum": 8 },
                        "description": { "type": "string" },
                        "is_required": { "type": "boolean", "default": false },
                        "attachments_required": { "type": "boolean", "default": false },
                        "task_form_item_group_description": { "type": "string" },
                        "id_unit": { "type": "integer" },
                        "unit_description": { "type": "string" },
                        "dropdown_options": {
                          "type": "array",
                          "items": { "type": "object", "properties": { "description": { "type": "string" } } }
                        },
                        "iterations": { "type": "object", "additionalProperties": { "type": "boolean" } }
                      }
                    }
                  }
                }
              }
            }
          }
        },
        "responses": {
          "200": { "description": "Subtareas creadas correctamente" },
          "400": { "description": "Bad Request" },
          "401": { "description": "Unauthorized" },
          "403": { "description": "Forbidden" },
          "404": { "description": "Not Found" },
          "409": { "description": "Conflict" },
          "415": { "description": "Unsupported Media Type" },
          "422": { "description": "Unprocessable Entity" }
        }
      }
    }
  },
  "x-readme": {
    "headers": [],
    "explorer-enabled": false,
    "proxy-enabled": true
  },
  "x-readme-fauxas": true
}
Response
200
Language
LoadingLoading…