post
https://app.fracttal.com/api/tasks_subtasks/
Permite criar uma ou mais subtarefas dentro de uma tarefa já existente de um plano de tarefas (formulário de manutenção), sem depender da interface do Fracttal.
POST https://app.fracttal.com/api/tasks_subtasksParâmetros de entrada — Obrigatórios
Enviados no body da requisição.
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id_task | inteiro | Sim | Id da tarefa existente dentro do plano de tarefas onde as subtarefas serão criadas. Obtido na listagem/detalhe de tarefas do plano. |
is_cyclical | booleano | Sim | Indica se a tarefa possui iterações. Deve coincidir com o estado real da tarefa — se não coincidir, a requisição é rejeitada com 409. |
num_iterations | inteiro | Sim, somente se is_cyclical = true | Número de iterações da tarefa. Inteiro maior que 0. |
subtasks | array de objetos | Sim | Array com pelo menos um elemento; cada elemento é a configuração de uma subtarefa. A ordem do array determina o order_number atribuído. Ver Parâmetros de subtasks abaixo para os campos de cada elemento. |
Parâmetros de entrada — Opcionais
Nenhum no nível superior — todos os campos opcionais deste endpoint fazem parte de cada elemento de subtasks (ver abaixo).
Parâmetros de subtasks
subtasksCada elemento do array subtasks representa uma subtarefa a ser criada, com os seguintes campos:
Obrigatórios
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
id_task_form_item_type | inteiro | Sim | Tipo de subtarefa a criar. Determina quais outros campos se aplicam — ver tabela Tipos de subtarefa a seguir. Valores válidos: 1 a 8. |
description | texto | Sim | Texto exibido como rótulo/pergunta da subtarefa ao executar a tarefa (ex. "Describe el procedimiento realizado"). Não pode ficar vazio. |
Tipos de subtarefa (id_task_form_item_type)
id_task_form_item_type)| Id | Tipo | Campos adicionais relevantes |
|---|---|---|
1 | Texto | Nenhum adicional. |
2 | Sim/Não | Nenhum adicional. |
3 | Número | Nenhum adicional. |
4 | Verificação | Nenhum adicional. |
5 | Leitura de medidor | Requer id_unit ou unit_description (ver Opcionais). Se a tarefa tiver ativos vinculados, a resposta pode incluir message: "ERROR_CONFIG_METERS_ASSETS". |
6 | Localização GPS | Nenhum adicional. |
7 | Lista | Requer dropdown_options com no mínimo 2 elementos (ver Opcionais). |
8 | Data e hora | Nenhum adicional. |
Opcionais
| Parâmetro | Tipo | Obrigatório | Descrição |
|---|---|---|---|
is_required | booleano | Opcional | Padrão: false. |
attachments_required | booleano | Opcional | Padrão: false. |
task_form_item_group_description | texto | Opcional | Nome do grupo/parte. Se informado, busca-se um grupo similar (fuzzy match); se não existir, é criado automaticamente. |
id_unit | inteiro | Opcional (obrigatório se id_task_form_item_type = 5 e unit_description não for enviado) | Id da unidade de medida em companies.units. Se não existir, retorna 422. |
unit_description | texto | Opcional (obrigatório se id_task_form_item_type = 5 e id_unit não for enviado) | Descrição da unidade; se não houver correspondência por similaridade, é criada automaticamente. |
dropdown_options | array | Opcional (obrigatório se id_task_form_item_type = 7, mínimo 2 elementos) | Cada elemento: { "description": string }. |
iterations | objeto | Opcional | Aplica-se somente se is_cyclical = true (no nível da requisição). Formato: { "iteration_1": true, "iteration_3": true, ... }. Se algum iteration_n tiver n > num_iterations, retorna 400. Se omitido ou enviado vazio, a subtarefa não participa de nenhuma iteração. |
Parâmetros de saída
| Parâmetro | Tipo | Descrição |
|---|---|---|
id | inteiro | Id gerado para a subtarefa criada. |
id_task | inteiro | Id da tarefa à qual pertence. |
id_task_form_item_type | inteiro | Tipo de subtarefa. |
description | texto | Descrição da subtarefa. |
order_number | inteiro | Ordem atribuída automaticamente pelo servidor. |
is_required | booleano | Se a subtarefa é obrigatória. |
attachments_required | booleano | Se requer anexos. |
id_task_form_item_group | inteiro | Id do grupo/parte associado (criado ou reutilizado). |
iterations | objeto | Iterações nas quais a subtarefa participa. |
dropdown_options | array | Opções de lista (somente tipo 7). |
message | texto | ERROR_CONFIG_METERS_ASSETS quando a tarefa tem ativos vinculados e uma subtarefa tipo 5 (medidor) é adicionada; requer configuração adicional por ativo. |
total | inteiro | Número de ativos afetados — presente somente junto com ERROR_CONFIG_METERS_ASSETS. |
Erros
| Código | Causa |
|---|---|
400 | id_task não informado; is_cyclical não informado; is_cyclical=true sem num_iterations; num_iterations ≤ 0; subtasks vazio ou ausente; id_task_form_item_type fora de 1–8; description vazia; tipo 5 sem id_unit nem unit_description; tipo 7 com menos de 2 dropdown_options ou alguma opção sem description; algum iteration_n com n > num_iterations. |
401 | Sem autenticação. |
403 | Sem permissão edit sobre TASKS > PLAN_TASKS. |
404 | id_task não existe. |
409 | is_cyclical ou num_iterations do body não coincide com o estado real da tarefa. |
415 | Content-Type diferente de application/json. |
422 | id_unit inexistente em companies.units. |
Exemplo
Request body (tarefa cíclica, 4 iterações)
{
"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
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 — subtarefa tipo medidor em tarefa com ativos 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
}Definição OpenAPI
{
"openapi": "3.1.0",
"info": {
"title": "tarefas",
"version": "3-pt"
},
"servers": [
{
"url": "https://app.fracttal.com/api/tasks_subtasks"
}
],
"security": [
{}
],
"paths": {
"/": {
"post": {
"summary": "Criar subtarefas em uma tarefa de um plano de tarefas",
"description": "",
"operationId": "criar-subtarefas-em-uma-tarefa-de-um-plano-de-tarefas",
"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": "Subtarefas criadas com sucesso" },
"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
} 200