attach_to_feedback

Attach a file to a report

act entity tenant-private since 2026-10-01

Attaches a file to a report you sent with send_feedback: the page you captured, a photo, a video or a document, up to 50 MiB, in parts of 1 MiB, one part per call, in any order. Answers received until every part is in, naming any part still missing, then attached once the file is on the report. Only your own report takes your files. Sending a part again changes nothing.

Contract

shape
entity
authority
act
evidence
optional
subscription
false
permission
any one of: org.member (carried by the caller's role template in the org `org_id`); a deactivated caller is refused first
idempotency
natural
emits
none
MCP tool
attach_to_feedback
decision_set
approve, reject
REST
POST https://api.containertradehq.com/v1/cap/attach_to_feedback

Through MCP this call returns an approval request first; see Approvals.

Idempotency: keyed by the contract's own inputs: the same inputs replay the first call's result

Inputs

nametyperequiredvalidation
org_idorg_idrequiredtradehq-org-id; 1 to 20 characters
The org the report was sent for.
feedback_idattach_idrequired8 to 64 characters
The report, as send_feedback answered it (feedback_id).
file_idattach_idrequired8 to 64 characters
Your id for the file, the same on every part of it: a file is attached once.
nametextrequired1 to 200 characters
The file's name, as support will see it.
content_typeone_ofrequiredone of image/png, image/jpeg, image/webp, image/gif, video/mp4, video/quicktime, video/webm, application/pdf, text/plain, text/csv, application/vnd.ms-excel, application/vnd.openxmlformats-officedocument.spreadsheetml.sheet, application/msword, application/vnd.openxmlformats-officedocument.wordprocessingml.document
What the file is: an image, a video, a PDF, text, CSV, a spreadsheet or a document.
sizeintegerrequired1 to 52428800
The whole file's size in bytes, at most 50 MiB.
sha256sha256_hexrequired64 to 64 characters
The whole file's sha256, in hex.
partintegerrequired0 to 49
This part, from 0.
partsintegerrequired1 to 50
How many parts the file travels in: the size in 1 MiB parts, rounded up.
contentpart_contentrequired4 to 1398104 characters
This part's bytes as base64: 1 MiB, the last part the rest.

Response

  • state · string · received: this part is in and the file is not whole yet; attached: the file is on the report.
  • reference · string · The report's reference.
  • missing · integer[] · The parts not yet in, from 0: send each of them (again).
Full JSON Schema
{
  "type": "object",
  "properties": {
    "state": {
      "type": "string",
      "enum": [
        "received",
        "attached"
      ],
      "description": "received: this part is in and the file is not whole yet; attached: the file is on the report.",
      "x-data-class": "operational"
    },
    "reference": {
      "type": "string",
      "description": "The report's reference.",
      "x-data-class": "operational"
    },
    "missing": {
      "type": "array",
      "maxItems": 50,
      "items": {
        "type": "integer",
        "minimum": 0,
        "maximum": 49
      },
      "description": "The parts not yet in, from 0: send each of them (again).",
      "x-data-class": "operational"
    }
  },
  "required": [
    "state",
    "reference",
    "missing"
  ],
  "additionalProperties": false
}

Refusals

  • capability_not_enabled · 422 · sending feedback is not switched on for this org yet (send_feedback's release flag)
  • feedback_unavailable · 422 · this deployment has no broker credential for feedback yet; nothing was sent
  • bad_part · 422 · parts is not the file's size in 1 MiB parts, part is past them, or the part is not its size
  • no_such_report · 422 · no report of yours carries that id
  • file_mismatch · 409 · this file id already names a file of another size, digest or type
  • attachment_busy · 422 · Trade HQ is taking in as much as it can; send the part again shortly
  • attachment_corrupt · 422 · the parts did not add up to the file's size and sha256; send the whole file again
  • feedback_not_filed · 422 · the part could not be taken just now; send it again

The platform refusals apply to every call: version, authentication, authority, validation and rate limits, each in the same envelope.

Surfaces

DesktopF
MobileF
APIF
MCPF*
VoiceN
PushN
OneBoxN
OutboundN
  • MCP: approval required
  • Voice: a file is chosen or captured, not said
  • Push: emits nothing
  • OneBox: a report's file is the person's own, not read off a document
  • Outbound: goes to Trade HQ's support, never to a counterparty

Events

None emitted.

Related

create_api_key, create_service_account, update_service_account