Asociar adjuntos a una solicitud de trabajo

Asocia a una solicitud de trabajo existente uno o varios adjuntos: archivos ya subidos al almacenamiento de Fracttal y/o links. Archivos y links se pueden combinar en una misma petición. No se admiten adjuntos de tipo nota.

Adjuntar un archivo es un proceso de 3 pasos. Este servicio corresponde al paso 3:

  1. Solicite las credenciales de subida con Obtener credenciales de subida de archivos (POST /api/s3_object), enviando name y size del archivo.
  2. Suba el archivo directamente al almacenamiento con una petición POST de tipo multipart/form-data, usando las credenciales recibidas y enviando el campo file al final.
  3. Llame a este servicio enviando en paths el valor key recibido en el paso 1 (archivo) o la URL (link).

Para adjuntar únicamente links no es necesario ejecutar los pasos 1 y 2.

Parámetros de entrada

ParámetroTipoRequeridoDescripción
id_requestenteroSíCódigo de la solicitud de trabajo (campo id_code) devuelto por GET /api/work_requests. Se envía en la ruta; si se envía en el body, se ignora.
id_statusenteroSíEstado que se registra con el adjunto. Debe existir en el catálogo de estados de solicitud (se puede consultar con GET /api/work_requests_status).
pathsarray de objetoSíLista de adjuntos a asociar. Cada elemento es un archivo o un link. Ver estructura en las tablas siguientes.

Estructura de cada elemento en paths — Archivo:

ParámetroTipoRequeridoDescripción
nametextoSíValor key devuelto por Obtener credenciales de subida de archivos para el archivo ya subido.
descriptiontextoNoDescripción del adjunto.

Estructura de cada elemento en paths — Link:

ParámetroTipoRequeridoDescripción
urltextoSíDirección del link. Debe comenzar con http:// o https://. Máximo 2048 caracteres.
labeltextoNoTexto visible del link. Máximo 500 caracteres. Si no se envía, se usa la URL.

Reglas de paths

  • Cada elemento debe incluir name (archivo) o url (link). Si incluye url, se trata como link aunque también incluya name.
  • La operación es atómica: si algún elemento de paths es inválido, no se crea ningún adjunto.
  • Para adjuntar un archivo, primero deben haberse solicitado las credenciales de subida con su size (paso 1).

Reglas de la solicitud

  • Solo se pueden asociar adjuntos a solicitudes en estado Abierta (1), En proceso (2) o Resuelta sin OT (4).
  • La solicitud debe pertenecer a la compañía del token utilizado.
  • El usuario del token debe tener permiso de edición sobre Solicitudes.

Parámetros de salida

La respuesta incluye todos los adjuntos de la solicitud (los que ya tenía y los nuevos), no solo los recién asociados. El campo total se devuelve en 0.

ParámetroTipoDescripción
successbooleanoIndica si la operación fue exitosa.
messagetextoCódigo de resultado ("ACTION_DONE" si fue exitosa).
dataarray de objetoAdjuntos de la solicitud. Ver estructura en la tabla siguiente.
totalenteroSe devuelve en 0.

Estructura de cada elemento en data:

ParámetroTipoDescripción
identeroIdentificador del adjunto.
id_companyenteroIdentificador de la compañía.
id_requestenteroIdentificador de la solicitud a la que pertenece el adjunto.
id_statusenteroEstado registrado con el adjunto.
pathtextoPara un archivo, el key del archivo. Para un link, la URL.
descriptiontextoDescripción (archivo) o texto visible (link).
datetextoFecha de creación del adjunto.
sizeenteroTamaño del archivo en bytes. 0 para links.
typeenteroTipo de adjunto: 1 = Archivo, 2 = Link.
nametextoNombre del adjunto.
id_personnel_log / id_contacts_logenteroUsuario o contacto que creó el adjunto.
id_action_accountenteroCuenta desde la que se realizó la acción.

Errores

CódigoCausa
400 — REQUEST_NOT_FOUNDLa solicitud no existe o pertenece a otra compañía.
400 — REQUEST_NOT_EDITABLEEl estado actual de la solicitud no admite adjuntos.
400 — INVALID_STATUSEl id_status enviado no existe en el catálogo de estados de solicitud.
400 — INVALID_URLLa url de un link no comienza con http:// o https://.
400 — URL_TOO_LONGLa url de un link supera los 2048 caracteres.
400 — INVALID_PATHUn elemento de paths no incluye name ni url.
400 — FILE_NOT_FOUNDEl name enviado no corresponde a un archivo cuyas credenciales de subida hayan sido solicitadas por la compañía.
400 — body is requiredNo se envió el body de la petición.
400 — The request is poorly formedNo se envió el header Authorization.
401 — INVALID_TOKENEl token es inválido.

Nota sobre los códigos de error

Los errores de validación se devuelven con success: false y el código del error en el campo message (por ejemplo, "REQUEST_NOT_EDITABLE"). Use ese valor para identificar la causa.


Ejemplo

Request body

POST /api/work_requests_attachments_files/4010

{
  "id_status": 1,
  "paths": [
    {
      "name": "company_100/informe-mantenimiento.pdf",
      "description": "Informe de la inspección"
    },
    {
      "url": "https://ejemplo.com/manual-equipo",
      "label": "Manual del equipo"
    }
  ]
}

Response 200

{
  "success": true,
  "message": "ACTION_DONE",
  "data": [
    {
      "id": 101,
      "id_company": 100,
      "id_request": 4010,
      "id_status": 1,
      "path": "company_100/informe-mantenimiento.pdf",
      "description": "Informe de la inspección",
      "date": "2026-10-06",
      "size": 245760,
      "type": 1
    },
    {
      "id": 102,
      "id_company": 100,
      "id_request": 4010,
      "id_status": 1,
      "path": "https://ejemplo.com/manual-equipo",
      "description": "Manual del equipo",
      "date": "2026-10-06",
      "size": 0,
      "type": 2
    }
  ],
  "total": 0
}

Response — Solicitud en un estado que no admite adjuntos (400)

{
  "success": false,
  "message": "REQUEST_NOT_EDITABLE",
  "data": [],
  "total": 0
}

Response — Archivo sin credenciales de subida previas (400)

{
  "success": false,
  "message": "FILE_NOT_FOUND",
  "data": [],
  "total": 0
}

OpenAPI definition

{
  "openapi": "3.1.0",
  "info": {
    "title": "work_requests_attachments_files",
    "version": "1-Es"
  },
  "servers": [
    {
      "url": "https://app.fracttal.com/api/work_requests_attachments_files"
    }
  ],
  "security": [
    {}
  ],
  "paths": {
    "/{id_request}": {
      "post": {
        "summary": "Asociar adjuntos a una solicitud de trabajo",
        "description": "",
        "operationId": "asociar-adjuntos-a-una-solicitud-de-trabajo",
        "parameters": [
          {
            "name": "id_request",
            "in": "path",
            "required": true,
            "description": "Código de la solicitud de trabajo (campo id_code).",
            "schema": {
              "type": "integer"
            }
          }
        ],
        "deprecated": false,
        "security": []
      }
    }
  },
  "x-readme": {
    "headers": [],
    "explorer-enabled": false,
    "proxy-enabled": true
  },
  "x-readme-fauxas": true
}
Path Params
integer
required

Código de la solicitud de trabajo (campo id_code).

Language
LoadingLoading…