Associar anexos a uma solicitação de trabalho

Associa a uma solicitação de trabalho existente um ou vários anexos: arquivos já enviados ao armazenamento da Fracttal e/ou links. Arquivos e links podem ser combinados na mesma requisição. Não são aceitos anexos do tipo nota.

Anexar um arquivo é um processo de 3 passos. Este serviço corresponde ao passo 3:

  1. Solicite as credenciais de envio com Obter credenciais de envio de arquivos (POST /api/s3_object), enviando name e size do arquivo.
  2. Envie o arquivo diretamente ao armazenamento com uma requisição POST do tipo multipart/form-data, usando as credenciais recebidas e enviando o campo file por último.
  3. Chame este serviço enviando em paths o valor key recebido no passo 1 (arquivo) ou a URL (link).

Para anexar apenas links, não é necessário executar os passos 1 e 2.

Uso geral — sem add-on específico.

POST https://app.fracttal.com/api/work_requests_attachments_files/{id_request}

Parâmetros de entrada

ParâmetroTipoObrigatórioDescrição
id_requestinteiroSimCódigo da solicitação de trabalho (campo id_code) retornado por GET /api/work_requests. É enviado na rota; se for enviado no body, é ignorado.
id_statusinteiroSimStatus registrado com o anexo. Deve existir no catálogo de status de solicitação (pode ser consultado com GET /api/work_requests_status).
pathsarray de objetoSimLista de anexos a associar. Cada elemento é um arquivo ou um link. Veja a estrutura nas tabelas seguintes.

Estrutura de cada elemento em paths — Arquivo:

ParâmetroTipoObrigatórioDescrição
nametextoSimValor key retornado por Obter credenciais de envio de arquivos para o arquivo já enviado.
descriptiontextoNãoDescrição do anexo.

Estrutura de cada elemento em paths — Link:

ParâmetroTipoObrigatórioDescrição
urltextoSimEndereço do link. Deve começar com http:// ou https://. Máximo de 2048 caracteres.
labeltextoNãoTexto visível do link. Máximo de 500 caracteres. Se não for enviado, a URL é utilizada.

Regras de paths

  • Cada elemento deve incluir name (arquivo) ou url (link). Se incluir url, é tratado como link mesmo que também inclua name.
  • A operação é atômica: se algum elemento de paths for inválido, nenhum anexo é criado.
  • Para anexar um arquivo, as credenciais de envio devem ter sido solicitadas antes com o seu size (passo 1).

Regras da solicitação

  • Só é possível associar anexos a solicitações com status Aberta (1), Em andamento (2) ou Resolvida sem OS (4).
  • A solicitação deve pertencer à empresa do token utilizado.
  • O usuário do token deve ter permissão de edição em Solicitações.

Parâmetros de saída

A resposta inclui todos os anexos da solicitação (os que já existiam e os novos), não apenas os recém-associados. O campo total é retornado como 0.

ParâmetroTipoDescrição
successbooleanoIndica se a operação foi bem-sucedida.
messagetextoCódigo de resultado ("ACTION_DONE" se bem-sucedida).
dataarray de objetoAnexos da solicitação. Veja a estrutura na tabela seguinte.
totalinteiroÉ retornado como 0.

Estrutura de cada elemento em data:

ParâmetroTipoDescrição
idinteiroIdentificador do anexo.
id_companyinteiroIdentificador da empresa.
id_requestinteiroIdentificador da solicitação à qual o anexo pertence.
id_statusinteiroStatus registrado com o anexo.
pathtextoPara um arquivo, o key do arquivo. Para um link, a URL.
descriptiontextoDescrição (arquivo) ou texto visível (link).
datetextoData de criação do anexo.
sizeinteiroTamanho do arquivo em bytes. 0 para links.
typeinteiroTipo de anexo: 1 = Arquivo, 2 = Link.
nametextoNome do anexo.
id_personnel_log / id_contacts_loginteiroUsuário ou contato que criou o anexo.
id_action_accountinteiroConta a partir da qual a ação foi realizada.

Erros

CódigoCausa
400 — REQUEST_NOT_FOUNDA solicitação não existe ou pertence a outra empresa.
400 — REQUEST_NOT_EDITABLEO status atual da solicitação não permite anexos.
400 — INVALID_STATUSO id_status enviado não existe no catálogo de status de solicitação.
400 — INVALID_URLA url de um link não começa com http:// ou https://.
400 — URL_TOO_LONGA url de um link excede 2048 caracteres.
400 — INVALID_PATHUm elemento de paths não inclui name nem url.
400 — FILE_NOT_FOUNDO name enviado não corresponde a um arquivo cujas credenciais de envio tenham sido solicitadas pela empresa.
400 — body is requiredO body da requisição não foi enviado.
400 — The request is poorly formedO header Authorization não foi enviado.
401 — INVALID_TOKENO token é inválido.

Nota sobre os códigos de erro

Os erros de validação são retornados com success: false e o código do erro no campo message (por exemplo, "REQUEST_NOT_EDITABLE"). Use esse valor para identificar a causa.


Exemplo

Request body

POST /api/work_requests_attachments_files/4010

{
  "id_status": 1,
  "paths": [
    {
      "name": "company_100/informe-mantenimiento.pdf",
      "description": "Relatório da inspeção"
    },
    {
      "url": "https://ejemplo.com/manual-equipo",
      "label": "Manual do equipamento"
    }
  ]
}

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": "Relatório da inspeção",
      "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 do equipamento",
      "date": "2026-10-06",
      "size": 0,
      "type": 2
    }
  ],
  "total": 0
}

Response — Solicitação em um status que não permite anexos (400)

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

Response — Arquivo sem credenciais de envio prévias (400)

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

OpenAPI definition

{
  "openapi": "3.1.0",
  "info": {
    "title": "work_requests_attachments_files",
    "version": "3-pt"
  },
  "servers": [
    {
      "url": "https://app.fracttal.com/api/work_requests_attachments_files"
    }
  ],
  "security": [
    {}
  ],
  "paths": {
    "/{id_request}": {
      "post": {
        "summary": "Associar anexos a uma solicitação de trabalho",
        "description": "",
        "operationId": "associar-anexos-a-uma-solicitacao-de-trabalho",
        "parameters": [
          {
            "name": "id_request",
            "in": "path",
            "required": true,
            "description": "Código da solicitação de trabalho (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 da solicitação de trabalho (campo id_code).

Language
LoadingLoading…