Skip to main content

Attachments

Manage action attachments: the files, exports, and rendered content an action includes in its output. Attachments hang off a job action (added on a draft, like actions).

GET /api/job-attachment-drivers

List the available attachment drivers.

Authentication: Required

Response:

The attachment types: export, file, html, pdf, text, template, zip.

List attachment driversGET /api/job-attachment-drivers
The attachment types you can add to an action: export, file, html, pdf, text, template, zip.
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/job-attachment-drivers"
}
},
"start": 0,
"count": 7,
"total": 7,
"_embedded": {
"inf:job-attachment-driver": [
{
"_links": {
"self": {
"href": "https://informer.example.com/api/job-attachment-drivers/export"
}
},
"id": "export",
"name": "export",
"description": "job:attachment.new_export",
"editorComponent": "exportAttachmentEditor",
"supportsFile": false,
"editable": true,
"zip": true,
"canEdit": true,
"editFileContents": false,
"supportsChildren": false,
"canBeChild": true
},
{
"_links": {
"self": {
"href": "https://informer.example.com/api/job-attachment-drivers/file"
}
},
"id": "file",
"name": "file",
"canEdit": false,
"description": "job:attachment.upload_files",
"editorComponent": "uploadAttachmentEditor",
"editable": true,
"zip": true,
"supportsFile": true,
"editFileContents": false,
"supportsChildren": false,
"canBeChild": true
},
{
"_links": {
"self": {
"href": "https://informer.example.com/api/job-attachment-drivers/html"
}
},
"id": "html",
"name": "html",
"description": "job:attachment.new_html_file",
"editorComponent": "htmlAttachmentEditor",
"editFileContents": true,
"editable": true,
"zip": true,
"canEdit": true,
"supportsFile": true,
"supportsChildren": false,
"canBeChild": true
},
"… 4 more items (7 total) — omitted from docs"
]
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

GET /api/job-attachment-drivers/{id}

Get a single attachment driver.

Authentication: Required

Path Parameters:

ParameterTypeDescription
idstringDriver id

Response:

Get an attachment driverGET /api/job-attachment-drivers/file
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/job-attachment-drivers/file"
}
},
"id": "file",
"name": "file",
"canEdit": false,
"description": "job:attachment.upload_files",
"editorComponent": "uploadAttachmentEditor",
"editable": true,
"zip": true,
"supportsFile": true,
"editFileContents": false,
"supportsChildren": false,
"canBeChild": true
}
Captured from the API examples test suite; ids and timestamps are normalized.

GET /api/jobs/{id}/actions/{jobActionId}/attachment-templates

List attachment templates for an action.

Authentication: Required

Query Parameters:

ParameterTypeDescription
jobDatasetIdstringTailor the templates to a specific job dataset

Response:

Each item's value.add is the payload skeleton to POST.

List attachment templates for an actionGET /api/jobs/00000000-0000-4000-8000-000000000001/actions/00000000-0000-4000-8000-000000000002/attachment-templates
Starter attachment configs; each value.add is the payload skeleton to POST. Pass ?jobDatasetId to tailor the list to a dataset.
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/00000000-0000-4000-8000-000000000001/actions/00000000-0000-4000-8000-000000000002/attachment-templates"
}
},
"items": [
{
"detective": "00000000-0000-4000-8000-000000000003",
"id": "00000000-0000-4000-8000-000000000003:0",
"value": {
"group": "Create File",
"id": "file",
"type": "file",
"label": "Upload files",
"icon": "fa-upload",
"zip": true,
"upload": true,
"add": {
"type": "file",
"opts": {}
}
}
},
{
"detective": "00000000-0000-4000-8000-000000000004",
"id": "00000000-0000-4000-8000-000000000004:0",
"value": {
"group": "Create File",
"id": "html",
"type": "html",
"label": "New HTML file",
"icon": "flaticon-html",
"zip": true,
"add": {
"type": "html",
"contentType": "text/html",
"filename": "document.html",
"body": ""
}
}
},
{
"detective": "00000000-0000-4000-8000-000000000005",
"id": "00000000-0000-4000-8000-000000000005:0",
"value": {
"group": "Create File",
"id": "pdf",
"type": "pdf",
"label": "New PDF file",
"icon": "flaticon-html",
"zip": true,
"add": {
"type": "pdf",
"contentType": "application/pdf",
"filename": "document.pdf",
"body": ""
}
}
},
"… 3 more items (6 total) — omitted from docs"
],
"start": 0,
"count": 6,
"total": 6
}
Captured from the API examples test suite; ids and timestamps are normalized.

GET /api/jobs/{id}/actions/{jobActionId}/attachments

List an action's attachments.

Authentication: Required

Response:

A HAL collection ordered by index.

List an action’s attachmentsGET /api/jobs/00000000-0000-4000-8000-000000000001/actions/00000000-0000-4000-8000-000000000002/attachments
A HAL collection ordered by index.
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/00000000-0000-4000-8000-000000000001/actions/00000000-0000-4000-8000-000000000002/attachments"
}
},
"start": 0,
"count": 1,
"total": 1,
"_embedded": {
"inf:job-action-attachment": [
{
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/00000000-0000-4000-8000-000000000001/actions/00000000-0000-4000-8000-000000000002/attachments/00000000-0000-4000-8000-000000000003"
}
},
"id": "00000000-0000-4000-8000-000000000003",
"type": "file",
"opts": null,
"index": 0,
"jobActionId": "00000000-0000-4000-8000-000000000002",
"jobDatasetId": null,
"letterheadId": null,
"templateId": null,
"fileId": null,
"parentId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"tenant": "acme",
"_embedded": {
"inf:driver": {
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/00000000-0000-4000-8000-000000000001/actions/00000000-0000-4000-8000-000000000002/attachment-drivers/file"
}
},
"id": "file",
"name": "file",
"canEdit": false,
"description": "job:attachment.upload_files",
"editorComponent": "uploadAttachmentEditor",
"editable": true,
"zip": true,
"supportsFile": true,
"editFileContents": false,
"supportsChildren": false,
"canBeChild": true
},
"inf:file": {
"_links": {
"self": {
"href": "https://informer.example.com/api/files/00000000-0000-4000-8000-000000000004"
}
},
"extension": "txt",
"tenant": "acme",
"id": "00000000-0000-4000-8000-000000000004",
"filename": "note.txt",
"embedded": true,
"contentType": "text/plain",
"lobId": "16400",
"role": null,
"description": null,
"data": {},
"createdById": null,
"letterheadId": null,
"jobActionAttachmentId": "00000000-0000-4000-8000-000000000003",
"jobActionId": null,
"oauthClientId": null,
"assistantId": null,
"directory": false,
"indexed": false,
"indexingStartedAt": null,
"indexingErroredAt": null,
"indexingErrorMessage": null,
"indexedAt": null,
"parentId": null,
"libraryId": null,
"remoteId": null,
"remoteUrl": null,
"size": "524288",
"modifiedAt": null,
"messageId": null,
"chatId": null,
"expiresAt": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"ownerId": null,
"templateId": null,
"integrationId": null
}
}
}
]
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

POST /api/jobs/{id}/actions/{jobActionId}/attachments

Add an attachment to an action.

Authentication: Required

Permissions: Requires job:edit

Request Body:

FieldTypeRequiredDescription
typestringYesAttachment-driver id (export, file, html, pdf, text, template, zip)
bodystringNoInline file content (creates an embedded file)
filestringNoUpload id (attach previously-staged bytes instead of body)
filenamestringNoFile name
contentTypestringNoMIME type
optsobjectNoDriver-specific options
jobDatasetIdstringNoSource job dataset
letterheadIdstringNoLetterhead for rendered output
templateIdstringNoSource template

Example:

{ "type": "file", "filename": "note.txt", "contentType": "text/plain", "body": "Attached note for the report." }

Response:

Responds 201 Created with the attachment (its driver embedded) and a Location header.

Add an attachmentPOST /api/jobs/00000000-0000-4000-8000-000000000001/actions/00000000-0000-4000-8000-000000000002/attachments
type is an attachment-driver id. For a file attachment, provide body (inline content) or file (an upload id) plus filename and contentType. Responds 201 with a Location header.
Request body
{
"type": "file",
"filename": "note.txt",
"contentType": "text/plain",
"body": "Attached note for the report.",
"opts": {}
}
Response · 201
{
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/00000000-0000-4000-8000-000000000001/actions/00000000-0000-4000-8000-000000000002/attachments/00000000-0000-4000-8000-000000000003"
}
},
"id": "00000000-0000-4000-8000-000000000003",
"tenant": "acme",
"type": "file",
"opts": null,
"jobActionId": "00000000-0000-4000-8000-000000000002",
"letterheadId": null,
"updatedAt": "2026-01-15T16:20:00.000Z",
"createdAt": "2026-01-15T16:20:00.000Z",
"index": 0,
"jobDatasetId": null,
"fileId": null,
"parentId": null,
"templateId": null,
"_embedded": {
"inf:driver": {
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/00000000-0000-4000-8000-000000000001/actions/00000000-0000-4000-8000-000000000002/attachment-drivers/file"
}
},
"id": "file",
"name": "file",
"canEdit": false,
"description": "job:attachment.upload_files",
"editorComponent": "uploadAttachmentEditor",
"editable": true,
"zip": true,
"supportsFile": true,
"editFileContents": false,
"supportsChildren": false,
"canBeChild": true
},
"inf:file": {
"_links": {
"self": {
"href": "https://informer.example.com/api/files/00000000-0000-4000-8000-000000000004"
}
},
"extension": "txt",
"tenant": "acme",
"id": "00000000-0000-4000-8000-000000000004",
"directory": false,
"filename": "note.txt",
"embedded": true,
"jobActionAttachmentId": "00000000-0000-4000-8000-000000000003",
"contentType": "text/plain",
"updatedAt": "2026-01-15T16:20:00.000Z",
"createdAt": "2026-01-15T16:20:00.000Z",
"lobId": "16400",
"ownerId": null,
"data": {},
"templateId": null,
"role": null,
"createdById": null,
"letterheadId": null,
"jobActionId": null,
"oauthClientId": null,
"description": null,
"assistantId": null,
"integrationId": null,
"parentId": null,
"libraryId": null,
"remoteId": null,
"remoteUrl": null,
"size": 524288,
"modifiedAt": null,
"indexed": false,
"indexingStartedAt": null,
"indexedAt": null,
"indexingErroredAt": null,
"indexingErrorMessage": null,
"messageId": null,
"chatId": null,
"expiresAt": null
}
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

GET /api/jobs/{id}/actions/{jobActionId}/attachments/{jobActionAttachmentId}

Get a specific attachment.

Authentication: Required

Response:

Get an attachmentGET /api/jobs/00000000-0000-4000-8000-000000000001/actions/00000000-0000-4000-8000-000000000002/attachments/00000000-0000-4000-8000-000000000003
The attachment with its driver embedded.
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/00000000-0000-4000-8000-000000000001/actions/00000000-0000-4000-8000-000000000002/attachments/00000000-0000-4000-8000-000000000003"
}
},
"id": "00000000-0000-4000-8000-000000000003",
"type": "file",
"opts": null,
"index": 0,
"jobActionId": "00000000-0000-4000-8000-000000000002",
"jobDatasetId": null,
"letterheadId": null,
"templateId": null,
"fileId": null,
"parentId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"tenant": "acme",
"_embedded": {
"inf:driver": {
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/00000000-0000-4000-8000-000000000001/actions/00000000-0000-4000-8000-000000000002/attachment-drivers/file"
}
},
"id": "file",
"name": "file",
"canEdit": false,
"description": "job:attachment.upload_files",
"editorComponent": "uploadAttachmentEditor",
"editable": true,
"zip": true,
"supportsFile": true,
"editFileContents": false,
"supportsChildren": false,
"canBeChild": true
},
"inf:file": {
"_links": {
"self": {
"href": "https://informer.example.com/api/files/00000000-0000-4000-8000-000000000004"
}
},
"extension": "txt",
"tenant": "acme",
"id": "00000000-0000-4000-8000-000000000004",
"filename": "note.txt",
"embedded": true,
"contentType": "text/plain",
"lobId": "16400",
"role": null,
"description": null,
"data": {},
"createdById": null,
"letterheadId": null,
"jobActionAttachmentId": "00000000-0000-4000-8000-000000000003",
"jobActionId": null,
"oauthClientId": null,
"assistantId": null,
"directory": false,
"indexed": false,
"indexingStartedAt": null,
"indexingErroredAt": null,
"indexingErrorMessage": null,
"indexedAt": null,
"parentId": null,
"libraryId": null,
"remoteId": null,
"remoteUrl": null,
"size": "524288",
"modifiedAt": null,
"messageId": null,
"chatId": null,
"expiresAt": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"ownerId": null,
"templateId": null,
"integrationId": null
}
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

PUT /api/jobs/{id}/actions/{jobActionId}/attachments/{jobActionAttachmentId}

Update an attachment (upsert).

Authentication: Required

Permissions: Requires job:edit

Response:

Responds 200 with the updated attachment.

Update an attachmentPUT /api/jobs/00000000-0000-4000-8000-000000000001/actions/00000000-0000-4000-8000-000000000002/attachments/00000000-0000-4000-8000-000000000003
Upserts the attachment.
Request body
{
"opts": {
"inline": true
}
}
Response · 200
{
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/00000000-0000-4000-8000-000000000001/actions/00000000-0000-4000-8000-000000000002/attachments/00000000-0000-4000-8000-000000000003"
}
},
"id": "00000000-0000-4000-8000-000000000003",
"type": "file",
"opts": null,
"index": 0,
"jobActionId": "00000000-0000-4000-8000-000000000002",
"jobDatasetId": null,
"letterheadId": null,
"templateId": null,
"fileId": null,
"parentId": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"tenant": "acme",
"file": {
"extension": "txt",
"tenant": "acme",
"id": "00000000-0000-4000-8000-000000000004",
"filename": "note.txt",
"embedded": true,
"contentType": "text/plain",
"lobId": "16400",
"role": null,
"description": null,
"data": {},
"createdById": null,
"letterheadId": null,
"jobActionAttachmentId": "00000000-0000-4000-8000-000000000003",
"jobActionId": null,
"oauthClientId": null,
"assistantId": null,
"directory": false,
"indexed": false,
"indexingStartedAt": null,
"indexingErroredAt": null,
"indexingErrorMessage": null,
"indexedAt": null,
"parentId": null,
"libraryId": null,
"remoteId": null,
"remoteUrl": null,
"size": "524288",
"modifiedAt": null,
"messageId": null,
"chatId": null,
"expiresAt": null,
"createdAt": "2026-01-15T16:20:00.000Z",
"updatedAt": "2026-01-15T16:20:00.000Z",
"ownerId": null,
"templateId": null,
"integrationId": null
},
"_embedded": {
"inf:driver": {
"_links": {
"self": {
"href": "https://informer.example.com/api/jobs/00000000-0000-4000-8000-000000000001/actions/00000000-0000-4000-8000-000000000002/attachment-drivers/file"
}
},
"id": "file",
"name": "file",
"canEdit": false,
"description": "job:attachment.upload_files",
"editorComponent": "uploadAttachmentEditor",
"editable": true,
"zip": true,
"supportsFile": true,
"editFileContents": false,
"supportsChildren": false,
"canBeChild": true
}
}
}
Captured from the API examples test suite; ids and timestamps are normalized.

DELETE /api/jobs/{id}/actions/{jobActionId}/attachments/{jobActionAttachmentId}

Delete an attachment.

Authentication: Required

Permissions: Requires job:edit

Response:

Responds 200 with an empty body.

Delete an attachmentDELETE /api/jobs/00000000-0000-4000-8000-000000000001/actions/00000000-0000-4000-8000-000000000002/attachments/00000000-0000-4000-8000-000000000003
Responds 200 with an empty body.
Response · 200 · no body
Captured from the API examples test suite; ids and timestamps are normalized.

GET /api/jobs/{id}/actions/{jobActionId}/attachments/{jobActionAttachmentId}/action-attachment-file-contents

Get the attachment's uploaded file contents.

Authentication: Required

Response:

Binary stream with the file contents. (Not shown.)


PUT /api/jobs/{id}/actions/{jobActionId}/attachments/{jobActionAttachmentId}/action-attachment-file-contents

Upload a file for the attachment (raw body).

Authentication: Required

Permissions: Requires job:edit

Response:

Responds 200 with an empty body.